1 2005-06-30 Diego Novillo <dnovillo@redhat.com>
5 * tree-ssa-alias.c (create_name_tags): Also process
6 non-dereferenced pointers.
7 Remove argument 'ai'. Update all callers.
9 2005-06-30 Andrew Pinski <pinskia@physics.uc.edu>
11 * config/rs6000/darwin.h (STARTING_FRAME_OFFSET):
12 Set to 0 for FRAME_GROWS_DOWNWARD.
13 (REGISTER_NAMES): Add sfp.
15 2005-07-01 Kelley Cook <kcook@gcc.gnu.org>
17 * config/arm/libunwind.S, config/arm/pr-support.c,
18 config/arm/unwind-arm.c, config/arm/unwind-arm.h,
19 config/c4x/predicates.md, tree-object-size.c: Update FSF address.
21 2005-06-30 Eric Botcazou <ebotcazou@libertysurf.fr>
24 * config/sparc/sparc.c (emit_and_preserve): Add 2nd register.
25 Preserve the 2nd register too, if present.
26 (sparc_output_mi_thunk) <PIC case>: Preserve the PIC register too.
27 Adjust call to emit_and_preserve.
29 2005-06-30 Zack Weinberg <zack@codesourcery.com>
30 Jakub Jelinek <jakub@redhat.com>
32 * pretty-print.h (PP_NL_ARGMAX): New.
33 (text_info): Add locus.
34 (struct chunk_info): New.
35 (output_buffer): Add formatted_obstack, chunk_obstack, and
36 cur_chunk_array. Change obstack to a pointer.
37 (pp_wrapping_mode_t, pp_wrapping_mode, pp_set_verbatim_wrapping): New.
38 (struct pretty_print_info): Replace ideal_maximum_length and
39 prefixing_rule with wrapping.
40 (pp_line_cutoff, pp_prefixing_rule): Update to match.
41 Update prototypes and wrapper macros throughout.
42 * pretty-print.c (pp_formatted_text_data, pp_append_r)
43 (pp_base_clear_output_area, pp_construct, pp_base_formatted_text)
44 (pp_base_last_position_in_text, pp_base_newline, pp_base_character):
45 Update for changes to pp structure.
46 (pp_base_prepare_to_format, pp_base_format_text): Delete.
47 (pp_base_format, pp_base_output_formatted_text): New functions.
48 (pp_base_format_verbatim): Use pp_set_verbatim_wrapping.
49 (pp_verbatim): Clear text.locus.
50 (pp_printf): Likewise. Use pp_format and pp_output_formatted_text.
51 * c-objc-common.c (c_tree_printer): Update function signature.
52 * diagnostic.c (diagnostic_initialize): Update for changes to
54 (diagnostic_report_diagnostic): Call pp_format and then
55 pp_output_formatted_text.
56 (verbatim): Clear text.locus.
57 * diagnostic.h (diagnostic_prefixing_rule, diagnostic_line_cutoff):
58 Update for changes to pp structure.
60 * c-lang.c: No need to include c-pretty-print.h.
61 * Makefile.in: Remove bogus line containing only a tab.
62 (c-lang.o): Update dependencies.
63 * toplev.c (announce_function): Don't use verbatim.
64 (default_tree_printer): Update signature.
66 * objc/objc-lang.c: No need to include c-pretty-print.h.
67 * objc/Make-lang.in: Update dependencies.
69 2005-06-29 Daniel Berlin <dberlin@dberlin.org>
71 * tree-complex.c (complex_variable_components): Now a hashtable.
74 (create_components): Use referenced var iterator.
75 Initialize hashtable. Use cvc_insert/lookup.
76 (extract_components): Use cvc_insert/lookup.
77 (update_complex_components): Ditto.
78 (update_complex_components_on_edge): Ditto.
79 * tree-dfa.c (referenced_vars): Now a hashtable.
80 (dump_referenced_vars): Use iterator.
81 (referenced_var_lookup): New function.
82 (referenced_var_insert): Ditto.
83 (add_referenced_var): Use referenced_var_insert.
84 (mark_new_vars_to_rename): Use DECL_UID.
85 * tree-flow-inline.h (first_htab_element): New function.
87 (next_htab_element): Ditto.
88 (first_referenced_var): Ditto.
89 (end_referenced_vars_p): Ditto.
90 (next_referenced_var): Ditto.
91 (is_call_clobbered): Use DECL_UID.
92 (mark_call_clobbered): Ditto.
93 (clear_call_clobbered): Ditto.
94 (mark_non_addressable): Ditto.
95 * tree-flow.h (htab_iterator): New struct.
96 (FOR_EACH_HTAB_ELEMENT): New macro.
97 (struct int_tree_map): New struct.
98 (int_tree_map_hash): Prototype.
99 (int_tree_map_eq): Ditto.
100 (referenced_var_iterator): Ditto.
101 (FOR_EACH_REFERENCED_VAR): New macro.
102 (referenced_vars): Now a hashtable.
103 * tree-into-ssa.c (symbol_marked_for_renaming): Use DECL_UID.
104 (add_new_name_mapping): Ditto.
105 (mark_def_sites): Ditto.
106 (insert_phi_nodes): Use referenced_var iterator.
107 (mark_def_site_blocks): Ditto.
108 (mark_sym_for_renaming): Use DECL_UID.
109 * tree-sra.c (is_sra_candidate_decl): Use DECL_UID.
110 (lookup_element): Ditto.
111 (find_candidates_for_sra): Use referenced_vars iterator.
113 * tree-ssa-alias.c (NUM_REFERENCES): New macro.
114 (NUM_REFERENCES_CLEAR): Ditto.
115 (NUM_REFERENCES_INC): Ditto.
116 (NUM_REFERENCES_SET): Ditto.
117 (alias_obstack): New bitmap obstack.
118 (struct alias_map_d): Use bitmap, not sbitmap.
119 (struct alias_info): Remove num_references.
120 (init_alias_info): Use referenced_var iterator.
121 Initialize bitmap obstack.
122 (delete_alias_info): Use referenced_var iterator.
124 (compute_points_to_and_addr_escape): Use DECL_UID.
125 Use new NUM_REFERENCES macros.
126 (compute_flow_sensitive_aliasing): may_aliases is now a bitmap.
127 Use new NUM_REFERENCES macros.
128 (group_aliases_into): Update prototype to use bitmap.
129 (setup_pointers_and_addressables): Use referenced_vars iterator.
130 Use DECL_UID. Use new NUM_REFERENCES macros.
131 (add_pointed_to_var): Use DECL_UID.
132 (dump_alias_info): Use referenced_var iterator.
133 (add_type_alias): Ditto.
134 (used_portions): Now a hashtable.
135 (used_part_map_eq): New function.
136 (used_part_map_hash): Ditto.
137 (free_used_part_map): Ditto.
140 (get_or_create_used_part_for): Use up_lookup.
141 (create_overlap_variables_for): Ditto.
142 (find_used_portions): Use up_insert.
144 (create_structure_vars): Init used_portions hashtable, use
145 referenced_vars iterator.
146 * tree-ssa-live.c (create_ssa_var_map): sbitmaps became bitmaps.
148 * tree-ssa-loop-im.c (gather_mem_refs_stmt): Use DECL_UID.
149 * tree-ssa-operands.c (get_asm_expr_operands): Ditto.
150 (note_addressable): Ditto.
151 * tree-ssa-structalias.c (set_uids_in_ptset): Ditto.
152 * tree-ssa.c (verify_flow_insensitive_alias_info): Use
153 referenced_var iterator.
155 (delete_tree_ssa): Ditto.
156 (int_tree_map_eq): New function.
157 (int_tree_map_hash): Ditto.
158 * tree-stdarg.c (find_va_list_reference): Use DECL_UID.
159 (va_list_ptr_read): Ditto.
160 (va_list_counter_struct_op): Ditto.
161 (va_list_ptr_write): Ditto.
162 (check_va_list_escapes): Ditto.
163 (check_all_va_list_escapes): Ditto.
164 (execute_optimize_stdarg): Ditto.
165 * tree-tailcall.c (suitable_for_tail_opt_p): Used referenced_var
168 2005-06-30 Andrew Pinski <pinskia@physics.uc.edu>
170 * config/rs6000/darwin.h (FRAME_POINTER_REGNUM): Rename to ...
171 (HARD_FRAME_POINTER_REGNUM): this.
173 2005-06-30 Jan Hubicka <jh@suse.cz>
175 * ipa-inline.c (cgraph_clone_inlined_nodes): Revert previous patch.
177 2005-06-30 Francois-Xavier Coudert <coudert@clipper.ens.fr>
180 * tree-ssa-structalias.c (build_constraint_graph, scc_visit,
181 process_unification_queue, init_topo_info, topo_visit,
182 init_scc_info, free_scc_info, perform_var_substitution,
183 solve_graph): Use unsigned instead of uint.
185 2005-06-30 Jakub Jelinek <jakub@redhat.com>
187 * function.c (gen_stack_protect_test): Add third argument.
189 2005-06-30 J. D. Johnston <jjohnst@us.ibm.com>
191 * gthr-tpf.h (CE2THRCPTR): Change field offset to 16.
193 2005-06-30 Kazu Hirata <kazu@codesourcery.com>
195 * config/c4x/c4x-protos.h: Remove the prototypes for those
196 functions removed from c4x.c. Add prototypes for those
197 functions exported in c4x.c.
198 * config/c4x/c4x.c (any_operand, fp_zero_operand,
199 const_operand, stik_const_operand, not_const_operand,
200 reg_operand, r0r1_reg_operand, r2r3_reg_operand,
201 ext_low_reg_operand, ext_reg_operand, std_reg_operand,
202 std_or_reg_operand, addr_reg_operand, index_reg_operand,
203 dp_reg_operand, sp_reg_operand, st_reg_operand,
204 rc_reg_operand, call_address_operand,
205 symbolic_address_operand, dst_operand, src_operand,
206 src_hi_operand, lsrc_operand, tsrc_operand,
207 nonimmediate_src_operand, nonimmediate_lsrc_operand,
208 reg_or_const_operand, par_ind_operand, parallel_operand):
210 (c4x_immed_float_p, c4x_a_register, c4x_x_register,
211 c4x_K_constant, c4x_N_constant, c4x_O_constant,
212 c4x_S_indirect): Export.
213 * config/c4x/c4x.h (PREDICATE_CODES): Remove.
214 * config/c4x/c4x.md: Include predicates.md.
215 * config/c4x/predicates.md: New.
217 2005-06-30 Jakub Jelinek <jakub@redhat.com>
219 * function.c (stack_protect_epilogue): Pass label to
220 stack_protect_test, assume it emitted also the conditional
222 * doc/md.texi (stack_protect_test): Adjust documentation.
223 * config/i386/i386.md (stack_protect_test): Add third argument,
224 emit beq with operands[2].
225 * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Define to
226 flag_stack_protect != 0.
227 * config/rs6000/rs6000.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New
229 (stack_protect_set, stack_protect_test): New expanders.
230 (stack_protect_setsi, stack_protect_setdi, stack_protect_testsi,
231 stack_protect_testdi): New insns.
232 * config/rs6000/rs6000.c (rs6000_stack_protect_fail): New function.
233 (TARGET_STACK_PROTECT_FAIL): Define.
234 (rs6000_generate_compare): Handle UNSPEC_SP_TEST.
236 * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Increment.
237 (DWARF_FRAME_REGISTERS, DWARF_REG_TO_UNWIND_COLUMN): Adjust, so
238 that addition of sfp doesn't change these.
239 (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS,
240 REG_ALLOC_ORDER): Add sfp.
241 (INT_REGNO_P): Include FRAME_POINTER_REGNUM.
242 (FRAME_POINTER_REGNUM): Define to 113.
243 (HARD_FRAME_POINTER_REGNUM): Define to 31.
244 (REG_CLASS_CONTENTS, REGNO_REG_CLASS): Add sfp.
245 (STARTING_FRAME_OFFSET): Set to 0 for FRAME_GROWS_DOWNWARD.
246 (ELIMINABLE_REGS): Never eliminate to
247 FRAME_POINTER_REGNUM, but HARD_FRAME_POINTER_REGNUM
248 instead. Add eliminations from FRAME_POINTER_REGNUM.
249 (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P):
250 Include FRAME_POINTER_REGNUM.
251 (REGISTER_NAMES): Add sfp.
252 * config/rs6000/rs6000.c (rs6000_reg_names): Add sfp.
253 (alt_reg_names): Likewise.
254 (rs6000_stack_info): Handle FRAME_GROWS_DOWNWARD.
255 (rs6000_emit_prologue): Use HARD_FRAME_POINTER_REGNUM
256 instead of FRAME_POINTER_REGNUM.
257 (rs6000_initial_elimination_offset): Never eliminate to
258 FRAME_POINTER_REGNUM, but HARD_FRAME_POINTER_REGNUM
259 instead. Add elimination offsets from FRAME_POINTER_REGNUM.
261 * config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Only return non-zero
262 if DEFAULT_ABI == ABI_V4.
264 2005-06-30 Steven Bosscher <stevenb@suse.de>
266 * coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
267 * tree.h (struct tree_decl): New field `tls_model'.
268 (DECL_TLS_MODEL): New.
269 (DECL_THREAD_LOCAL_P): Rename from DECL_THREAD_LOCAL, make it
271 * rtl.h (decl_default_tls_model): Add prototype for it.
272 * varasm.c (decl_tls_model): Rewritten and renamed to ...
273 (decl_default_tls_model): ... this.
274 (default_encode_section_info): Use DECL_TLS_MODEL instead of
276 (assemble_variable): Replace DECL_THREAD_LOCAL with
278 (default_section_type_flags_1): Likewise.
279 (categorize_decl_for_section): Likewise.
280 * tree.c (staticp): Likewise.
281 (recompute_tree_invarant_for_addr_expr): Likewise.
282 * drawf2out (loc_descriptor_from_tree_1): Likewise.
283 * c-decl.c (diagnose_mismatched_decls): Likewise.
284 with DECL_THREAD_LOCAL_P.
285 (start_decl): Likewise.
286 * print-tree.c (print_node): Likewise. Print the TLS model.
287 (grokdeclarator): Set the default DECL_TLS_MODEL here.
288 * c-common.c (handle_tls_model_attribute): Rewrite to set the
289 TLS model up based on the attribute. Never add the attribute
290 to the decl's attributes list.
291 * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Replace
292 DECL_THREAD_LOCAL with DECL_THREAD_LOCAL_P.
294 2005-06-30 Zdenek Dvorak <dvorakz@suse.cz>
297 * tree-ssa-live.c (mark_all_vars_used_1): Ignore variables in
300 2005-06-30 Bernd Schmidt <bernd.schmidt@analog.com>
302 * config/bfin/bfin.md (addv2hi3, subv2hi3, sminv2hi3, smaxv2hi3,
303 mulv2hi3, negv2hi2, absv2hi2): Pattern names fixed by appending the
306 2005-06-29 David Edelsohn <edelsohn@gnu.org>
308 * config/rs6000/rs6000.c (rs6000_file_start): Use PPC405_ERRATUM77.
310 2005-06-29 Diego Novillo <dnovillo@redhat.com>
313 * tree-ssa-copy.c (fini_copy_prop): Do not overwrite copy_of
314 when following copy-of chains.
316 2005-06-30 Jan Hubicka <jh@suse.cz>
318 * function.h (struct function): Add saved blocks/unexpanded var list.
319 * gimple-low.c (record_vars): Insert only VAR_DECLs.
320 * tree-inline.c (add_lexical_block): Declare; do not clear sublocks.
321 (remap_decl): Do not declare vars.
322 (remap_block): Do not care inserting blocks.
323 (remap_blocks): New function.
324 (copy_body_r): Update debug info.
325 (expand_call_inline): Duplicate callee block tree into caller;
326 copy all the unexpanded_var_list.
327 (save_body): Save unexpanded_var_list and blocks.
328 * tree-optimize.c (tree_rest_of_optimization): Restore
329 blocks/unexpanded_var_list.
331 2005-06-29 Richard Henderson <rth@redhat.com>
333 * config/ia64/ia64.c (ia64_expand_vecint_minmax): Use us_minus and
334 plus for V4HImode UMAX.
336 2005-06-29 Joseph S. Myers <joseph@codesourcery.com>
338 * c-tree.h (default_function_array_conversion): Take and return
340 * c-typeck.c (default_function_array_conversion): Split into
341 array_to_pointer_conversion and function_to_pointer_conversion.
342 Take and return struct c_expr.
343 (array_to_pointer_conversion): Do not handle type qualifiers or
344 COMPOUND_EXPRs specially.
345 (build_function_call): Call function_to_pointer_conversion for
346 function designators.
347 (build_unary_op): Call array_to_pointer_conversion, not
348 default_function_array_conversion.
349 (digest_init, output_init_element): Likewise.
350 * c-parser.c: All callers of default_function_array_conversion
353 2005-06-29 Ziemowit Laski <zlaski@apple.com>
355 * config/darwin.c (machopic_select_section): constant ObjC string
356 objects now always have type "__builtin_ObjCString".
358 2005-06-29 Richard Henderson <rth@redhat.com>
360 * config/alpha/alpha.md (vec_shl_<VEC>, vec_shr_<VEC>): New.
362 2005-06-29 Richard Henderson <rth@redhat.com>
364 * tree-vect-transform.c (vect_min_worthwhile_factor): Declare.
365 (vect_create_epilog_for_reduction): Don't use vec_shr if the
366 operation is emulated.
367 (vectorizable_reduction): Duplicate vect_min_worthwhile_factor
368 tests from vectorizable_operation.
370 2005-06-29 Caroline Tice <ctice@apple.com>
373 * varasm.c (assemble_start_function): Add "L" to beginning of
374 local labels, so assembler & linker treat them as local.
376 2005-06-29 Richard Henderson <rth@redhat.com>
378 * config/i386/i386.c (ix86_expand_int_vcond): Remove unsignedp
379 argument. Simplify canonicalization of condition. Use unsigned
380 saturating subtraction for QI and HImode unsigned compares. Use
381 bit arithmetic tricks for SImode unsigned compares.
382 * config/i386/i386-protos.h (ix86_expand_int_vcond): Update decl.
383 * config/i386/sse.md (SSEMODE14): New.
384 (umaxv8hi3): Use us_minus+plus to avoid vcond.
386 (smax<SSEMODE14>3): Rename from smaxv16qi3 and macroize.
387 (smin<SSEMODE14>3): Similarly with sminv16qi3.
388 (umin<SSEMODE24>3): Similarly with uminv8hi3.
390 2005-06-29 Ian Lance Taylor <ian@airs.com>
392 * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Change
393 GEN_INT to gen_int_for_mode when storing register size to memory.
395 2005-06-29 Stuart Hastings <stuart@apple.com>
397 * gcc/config/i386/mmintrin.h: Mark vector intrinsics always_inline.
398 * gcc/config/i386/emmintrin.h: Likewise.
399 * gcc/config/i386/pmmintrin.h: Likewise.
400 * gcc/config/i386/xmmintrin.h: Likewise.
402 2005-06-29 Steve Ellcey <sje@cup.hp.com>
405 * tree.h (TYPE_VECTOR_SUBPARTS): Change to shift expression.
406 (SET_TYPE_VECTOR_SUBPARTS): New.
407 * tree.c (make_vector_type): Replace TYPE_VECTOR_SUBPARTS with
408 SET_TYPE_VECTOR_SUBPARTS.
409 * tree-vect-transform.c (vect_transform_loop): Add cast.
411 2005-06-29 Andreas Krebbel <krebbel1@de.ibm.com>
413 * config/s390/s390.c (s390_decompose_address): Accept invalid
414 displacements for addresses containing frame_pointer_rtx or
415 virtual_stack_vars_rtx.
416 (s390_frame_info): Replaced use of STARTING_FRAME_OFFSET.
417 (s390_initial_elimination_offset): New offset when eliminating the
419 * config/s390/s390.h (FRAME_GROWS_DOWNWARD): Defined as 1.
420 (STARTING_FRAME_OFFSET, STACK_DYNAMIC_OFFSET): Definitions changed.
422 2005-06-28 Ziemowit Laski <zlaski@apple.com>
424 * c-common.c (flag_next_runtime): Move...
425 * toplev.c (flag_next_runtime): ... here.
426 * c-common.h (flag_next_runtime): Move...
427 * flags.h (flag_next_runtime): ... here.
428 * config/darwin-c.c: Include flags.h.
429 * config/t-darwin (darwin-c.o): Depend on flags.h.
431 2005-06-29 Kaz Kojima <kkojima@gcc.gnu.org>
433 * config/sh/linux-unwind.h (shmedia_fallback_frame_state):
434 Disable aliasing warning with void * cast.
435 (sh_fallback_frame_state): Likewise.
437 2005-06-29 Kaz Kojima <kkojima@gcc.gnu.org>
439 * target.h (gcc_target): New field allocate_initial_value.
440 * target-def.h (TARGET_ALLOCATE_INITIAL_VALUE): New macro.
441 (TARGET_INITIALIZER): Include it.
442 * integrate.c (allocate_initial_values): Use
443 targetm.allocate_initial_value.
444 * system.h: Poison ALLOCATE_INITIAL_VALUE.
445 * config/sh/sh-protos.h (sh_pr_n_sets): Delete.
446 * config/sh/sh.c (sh_pr_n_sets): Make it static.
447 (sh_allocate_initila_value): New function.
448 (TARGET_ALLOCATE_INITIAL_VALUE): Override default.
449 * config/sh/sh.h (ALLOCATE_INITIAL_VALUE): Delete.
450 * doc/tm.texi (TARGET_ALLOCATE_INITIAL_VALUE): Rename and
451 update from ALLOCATE_INITIAL_VALUE.
453 2005-06-28 Richard Henderson <rth@redhat.com>
455 * tree-vectorizer.c (vect_is_simple_reduction): Compare types
456 using TYPE_MAIN_VARIANT.
458 2005-06-28 Richard Henderson <rth@redhat.com>
460 * config/ia64/ia64.c (ia64_expand_vecint_compare): Decompose to EQ
461 when using psubN.uuu.
463 2005-06-29 Kelley Cook <kcook@gcc.gnu.org>
465 * doc/gcc.texi: Update FSF address.
467 2005-06-28 Eric Christopher <echristo@redhat.com>
471 * c-decl.c (diagnose_mismatched_decls): Define DECL_EXTERN_INLINE.
472 Use. Fix detection of invalid extern inline redefinition.
474 2005-06-28 Diego Novillo <dnovillo@redhat.com>
476 * tree-optimize.c (init_tree_optimization_passes): Fix typo.
478 2005-06-28 Andrew Pinski <pinskia@physics.uc.edu>
480 * config/rs6000/rs6000.md (setmemsi): s/operand/operands/.
482 2005-06-28 Richard Henderson <rth@redhat.com>
484 * config/ia64/ia64.c (ia64_expand_vecint_compare): Use unsigned
485 saturating subtraction for QI and HImode unsigned compares. Use
486 bit arithmetic tricks for SImode unsigned compares.
487 (ia64_expand_vcondu_v2si): Remove.
488 (ia64_expand_vecint_cmov): Don't call it.
490 2005-06-28 Richard Henderson <rth@redhat.com>
492 * rtlanal.c (nonzero_bits1): Use the mode of the value for
493 determining integral-ness for comparisons.
495 2005-06-28 Andrew Pinski <pinskia@physics.uc.edu>
497 * config/rs6000/rs6000.md (setmemsi): Fix operand 2.
499 2005-06-28 Joseph S. Myers <joseph@codesourcery.com>
501 * target.h (invalid_conversion, invalid_unary_op,
502 invalid_binary_op): New hooks.
503 * target-def.h (TARGET_INVALID_CONVERSION,
504 TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
505 TARGET_INITIALIZER): Likewise.
506 * hooks.h (hook_constcharptr_tree_tree_null,
507 hook_constcharptr_int_tree_null,
508 hook_constcharptr_int_tree_tree_null): New.
509 * hooks.c (hook_constcharptr_tree_tree_null,
510 hook_constcharptr_int_tree_null,
511 hook_constcharptr_int_tree_tree_null): Likewise.
512 * gcc/doc/tm.texi (TARGET_INVALID_CONVERSION,
513 TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP): Document.
514 * c-convert.c (convert): Use invalid_conversion hook.
515 * c-typeck.c (build_unary_op): Use invalid_unary_op hook.
516 (build_binary_op): Use invalid_binary_op hook.
517 * config/ia64/ia64-modes.def: Define RFmode.
518 * config/ia64/ia64-protos.h (spill_xfmode_operand): Remove.
519 (ia64_expand_movxf_movrf): New.
520 * config/ia64/ia64.md (movxf): Move code to
521 ia64_expand_movxf_movrf.
522 (movrf, movrf_internal): New.
523 * ia64.c (ia64_invalid_conversion, ia64_invalid_unary_op,
524 ia64_invalid_binary_op, TARGET_INVALID_CONVERSION,
525 TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP): New.
526 (spill_xfmode_operand): Rename to spill_xfmode_rfmode_operand.
527 Add mode parameter. Make static.
528 (ia64_expand_movxf_movrf): New, moved from ia64.md. Handle RFmode
530 (ia64_function_arg, ia64_function_value, ia64_register_move_cost,
531 ia64_scalar_mode_supported_p): Handle RFmode as well as XFmode.
532 (ia64_init_builtins): Set up __fpreg as RFmode.
533 (ia64_mangle_fundamental_type): Mangle __fpreg as u7__fpreg.
535 2005-06-28 Adrian Straetling <straetling@de.ibm.com>
537 * builtins.c: (expand_builtin_memset): Rewrite to support
538 'set_storage_via_setmem'.
539 * expr.c: (enum insn_code setmem_optab): Define.
540 (enum insn_code clrmem_optab): Remove.
541 (set_storage_via_setmem): New function.
542 (clear_storage_via_setmem): Remove.
543 (clear_storage): Replace call to "clear_storage_via_clrmem" with
544 "set_storage_via_setmem".
545 * expr.h: (set_storage_via_setmem): Declare.
546 (CLEAR_RATIO): Redefine using HAVE_setmemM.
547 * optabs.h: (enum insn_code setmem_optab): Declare.
548 (enum insn_code clrmem_optab): Remove.
549 * optabs.c: (init_optabs): Initialize setmem_optab.
550 (enum insn_code clrmem_optab): Remove.
551 * genopinit.c: (otabs): Likewise.
552 * doc/md.texi: Document new standard pattern 'setmem'. Remove
554 * config/alpha/alpha.c: (alpha_expand_block_clear): Adjust
556 * config/frv/frv.c: (frv_expand_block_clear): Likewise.
557 * config/rs6000/rs6000.c: (expand_block_clear): Likewise.
558 * config/alpha/alpha.md: ("clrmemqi", "clrmemdi"): Rename to "setmemM".
559 FAIL on operands[2]!=const0_rtx. Adjust 'operands' ordering.
560 * config/avr/avr.md: ("clrmemhi"): Likewise.
561 * config/frv/frv.md: ("clrmemsi"): Likewise.
562 * config/i386/i386.md: ("clrmemsi", "clrmemdi"): Likewise.
563 * config/pa/pa.md: ("clrmemsi", "clrmemdi"): Likewise.
564 * config/rs6000/rs6000.md: ("clrmemsi"): Likewise.
565 * config/s390/s390.md: ("clrmem<mode>"): Likewise.
567 2005-06-28 Paul Brook <paul@codesourcery.com>
569 * Makefile.in: Set and use UNWIND_H. Install as unwind.h.
570 * c-decl.c (finish_decl): Call default_init_unwind_resume_libfunc.
571 * except.c (add_ehspec_entry): Generate arm eabi filter lists.
572 (assign_filter_values): Ditto.
573 (output_ttype): New function.
574 (output_function_exception_table): Use output_ttype. Generate arm
576 (default_init_unwind_resume_libfunc): New function.
577 * except.h (default_init_unwind_resume_libfunc): Add prototype.
578 * optabs.c (init_optabs): Don't set unwind_resume_libfunc.
579 * opts.c (decode_options): Use targetm.unwind_tables_default.
580 * target-def.h (TARGET_ASM_TTYPE): Provide and use definition.
581 (TARGET_ARM_EABI_UNWINDER, TARGET_UNWIND_TABLES_DEFAULT): Ditto.
582 * target.h (struct gcc_target): Add asm.ttype, unwind_tables_default
583 and arm_eabi_unwinder.
584 * unwind-c.c: Support Arm EABI unwinder.
585 * unwind.h: Rename ...
586 * unwind-generic.h: ... To this.
587 * doc/tm.texi (TARGET_ASM_TTYPE, TARGET_ARM_EABI_UNWINDER): Document.
588 (TARGET_UNWID_TABLES_DEFAULT): Document.
590 * config/arm/arm-protos.h (arm_output_fn_unwind): Add prototype.
591 * config/arm/arm.c (arm_unwind_emit, arm_output_ttype): New functions.
592 (TARGET_UNWIND_EMIT, TARGET_ASM_TTYPE, TARGET_ARM_EABI_UNWINDER):
594 (thumb_pushpop, thumb_output_function_prologue): Output unwinding
596 (arm_unwind_emit_stm, arm_unwind_emit_set): New functions.
597 * config/arm/arm.h (MUST_USE_SJLJ_EXCEPTIONS): Only define when
599 (ARM_OUTPUT_FN_UNWIND, ARM_EABI_UNWIND_TABLES): Define.
600 * config/arm/bpabi.h (TARGET_UNWIND_INFO): Define.
601 * config/arm/elf.h (ASM_DECLARE_FUNCTION_NAME,
602 ASM_DECLARE_FUNCTION_SIZE): Use ARM_OUTPUT_FN_UNWIND.
603 * config/arm/lib1funcs.asm: Include libunwind.S.
604 * config/arm/libgcc-bpabi.ver: Add unwinding routines.
605 * config/arm/libunwind.S: New file.
606 * config/arm/pr-support.c: New file.
607 * config/arm/t-bpabi (LIB1ASMFUNCS): Add _unwind.
608 (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Set.
609 * config/arm/t-symbian (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Set.
610 * config/arm/unwind-arm.c: New file.
611 * config/arm/unwind-arm.h: New file.
612 * config/i386/t-netware (USER_H): Remove unwind.h.
613 * config/ia64/ia64.h (TARGET_UNWIND_TABLES_DEFAULT): Define.
615 2005-06-28 DJ Delorie <dj@redhat.com>
617 * c-decl.c (pop_scope): Move warning control into warning call.
618 (diagnose_mismatched_decls): Likewise.
619 (pushdecl): Likewise.
620 (start_decl): Likewise.
621 (grokparms): Likewise.
622 (start_function): Likewise.
623 (store_parm_decls_newstyle): Likewise.
624 (store_parm_decls_oldstyle): Likewise.
625 (finish_function): Likewise.
626 (declspecs_add_scspec): Likewise.
627 * c-format.c (decode_format_attr): Likewise.
628 (maybe_read_dollar_number): Likewise.
629 (avoid_dollar_number): Likewise.
630 (finish_dollar_format_checking): Likewise.
631 (check_format_info): Likewise.
632 (check_format_info_main): Likewise.
633 (check_format_types): Likewise.
634 (format_type_warning): Likewise.
635 * c-typeck.c (function_types_compatible_p): Likewise.
636 (build_array_ref): Likewise.
637 (convert_arguments): Likewise.
638 (build_c_cast): Likewise.
639 (store_init_value): Likewise.
640 (process_init_element): Likewise.
641 (c_start_case): Likewise.
642 * stor-layout.c (finalize_record_size): Likewise.
643 * tree-cfg.c (execute_warn_function_noreturn): Likewise.
644 * tree-inline.c (expand_call_inline): Likewise.
646 2005-06-28 Uros Bizjak <uros@kss-loka.si>
649 * config/i386/i386.md (fist<mode>2_with_temp splitter):
650 Clobber memory operand, not scratch register.
652 2005-06-28 Andreas Krebbel <krebbel1@de.ibm.com>
654 * config/s390/s390.c (machine_function): New field has_landing_pad_p.
655 (s390_set_has_landing_pad_p, s390_reg_clobbered_rtx,
656 s390_regs_ever_clobbered): New functions.
657 (s390_return_addr_rtx): Use get_hard_reg_initial_value.
658 (s390_register_info, s390_init_frame_layout, s390_update_frame_layout):
659 Use s390_regs_ever_clobbered.
660 (s390_emit_prologue): Don't use r14 as temp reg if its content is used
661 for builtin_return_address.
662 * config/s390/s390.md ("exception_receiver"): New expander.
663 * config/s390/s390-protos.h (s390_set_has_landing_pad_p): Prototype
666 2005-06-28 Andreas Krebbel <krebbel1@de.ibm.com>
668 * except.c (current_function_has_exception_handlers): Function
669 description added and if statements merged.
671 2005-06-28 Richard Henderson <rth@redhat.com>
673 * config/i386/sse.md (smaxv16qi3): Fix buffer overflow.
674 (sminv16qi3, umaxv8hi3, uminv8hi3): Likewise.
676 2005-06-27 Richard Henderson <rth@redhat.com>
678 * config/ia64/ia64.c (ia64_expand_vcondu_v2si): Generate proper
679 comparison operations.
680 (ia64_expand_vecint_minmax): Fix size of xops.
681 * config/ia64/vect.md (umax<VECINT>3): Fix fallback pattern typo.
682 (vec_shl_<VECINT>, vec_shr_<VECINT>): New.
684 2005-06-27 Richard Henderson <rth@redhat.com>
686 * tree-vect-transform.c (get_initial_def_for_reduction): Use correct
687 type for DEF and INIT_VAL. Pretend MIN/MAX need epilogue adjustment.
689 2005-06-27 Richard Henderson <rth@redhat.com>
691 * config/i386/sse.md (vec_shl_<SSEMODEI>, vec_shr_<SSEMODEI>): New.
692 (smaxv16qi3, umaxv8hi3, sminv16qi3, uminv8hi3): New.
694 2005-06-27 Richard Henderson <rth@redhat.com>
696 * tree-vect-transform.c (vect_create_epilog_for_reduction): Remove
697 duplicate little-endian adjustment.
699 2005-06-28 Kelley Cook <kcook@gcc.gnu.org>
701 * doc/include/texinfo.tex: Import from upstream CVS.
703 2005-06-28 Jan Hubicka <jh@suse.cz>
705 * cgraph.c (cgraph_remove_node): Do not release function bodies until
706 full cgraph is built.
707 * cgraph.h (cgraph_decide_inlining_incrementally): Add early argument.
708 * cgraphunit.c (cgraph_finalize_function): Update call of
709 cgraph_decide_inlining_incrementally.
710 (initialize_inline_failed): Break out of ...
711 (cgraph_analyze_function): ... here.
712 (rebuild_cgraph_edges): New function.
713 (pass_rebuild_cgraph_edges): New pass.
714 * common.opt (fearly-inlining): New flag.
715 * ipa-inline.c: Include ggc.h
716 (cgraph_clone_inlined_nodes): Avoid re-using of original copy
717 when cgraph is not fully built.
718 (cgraph_decide_inlining_incrementally): Add early mode.
719 (cgraph_early_inlining): New function.
720 (cgraph_gate_early_inlining): Likewise.
721 (pass_early_ipa_inline): New pass.
722 * ipa.c (cgraph_postorder): NULLify aux pointer.
723 * tree-inline.c (expand_call_inline): Avoid warning early.
724 * tree-optimize.c (pass_early_local_passes): New.
725 (execute_cleanup_cfg_pre_ipa): New.
726 (pass_cleanup_cfg): New.
727 (register_dump_files): Fix handling subpasses of IPA pass.
728 (init_tree_optimization_passes): Add early passes.
729 (execute_ipa_pass_list): Fix handling of subpasses of IPA pass.
730 * passes.h (pass_early_tree_profile, pass_rebuild_cgraph_edges,
731 pass_early_ipa_inline): New passes.
732 * tree-profile.c (do_early_tree_profiling, pass_early_tree_profile): New.
734 * invoke.texi: Document early-inlining.
736 2005-06-28 Kelley Cook <kcook@gcc.gnu.org>
738 * doc/include/fdl.texi: Merge in changes from upstream.
739 * doc/include/gpl.texi: Likewise.
741 2005-06-27 Diego Novillo <dnovillo@redhat.com>
744 * tree-ssa-loop-niter.c (scev_probably_wraps_p): Handle type
745 casts between unsigned and signed types with different size
748 2005-06-28 Jan Hubicka <jh@suse.cz>
750 * tree-optimize.c (exercute_free_datastructures):
751 Do not disband implicit edges; do not attempt to build insn list;
752 do not free cfg annotations.
753 (execute_free_cfg_annotations); Disband implicit edges here;
754 free cfg annotations here too.
755 (pass_free_cfg_annotations); New pass.
756 (init_tree_optimization_passes); Add pass_free_cfg_annotations.
757 * tree-ssa-operands.c (free_ssa_operands); Recover; export.
758 * tree-ssa-operands.h (free_ssa_operands); declare.
759 * tree-ssa.c (delete_tree_ssa); Free SSA operand; mark stmt modified;
761 * tree-ssanames.c (release_defs): Kill addresses_taken.
763 * basic-block.h (basic_block_def): Kill rbi.
764 (reorder_block_def): Kill; Remove next field (replaced by aux);
765 move other fields to ...
766 (rtl_bb_info): ... here.
767 * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
768 copy_bb, connect_traces, add_labels_and_missing_jumps
769 fix_up_fall_thru_edges, fix_crossing_conditional_branches,
770 duplicate_computed_gotos, partition_hot_cold_basic-blocks):
771 Update to new fields.
772 * cfg.c (initialize_bb_rbi): Kill.
773 * cfglayout.c (record_effective_endpoints, fixup_reorder_chain,
774 fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update.
775 * cfgrtl.c (cfg_layout_create_basic_block): Do not initialize rbi.
776 (try_redirect_by_replacing_jump): Update rbi references.
777 (cfg_layout_split_block): Likewise.
778 (cfg_layout_delete_block): Likewise.
779 (cfg_layout_merge_blocks): Likewise.
780 * function.c (thread_prologue_and_epilogue_insns): Likewise.
781 * passes.c (rest_of_handle_sms): Likewise.
782 * tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.
784 2005-06-27 David Edelsohn <edelsohn@gnu.org>
786 * config/rs6000/rs6000.c (rs6000_file_start): Note PPC405 erratum
787 in verbose_asm output.
788 * config/rs6000/rs6000.h (PPC405_ERRATUM77): Bracket with
790 * config.gcc (powerpc with_which): Define CONFIG_PPC405CR for
793 2005-06-27 Jakub Jelinek <jakub@redhat.com>
795 * builtin-attrs.def (DEF_ATTR_FOR_INT): Add for 5 and 6.
796 (DEF_LIST_INT_INT): Add for 4,0, 4,5, 5,0, 5,6.
797 (ATTR_NOTHROW_NONNULL_4, ATTR_NOTHROW_NONNULL_5): Define.
798 (ATTR_FORMAT_PRINTF_4_0, ATTR_FORMAT_PRINTF_4_5,
799 ATTR_FORMAT_PRINTF_5_0, ATTR_FORMAT_PRINTF_5_6): Define.
800 * builtins.c: Include tree-flow.h.
801 (expand_builtin_mempcpy, expand_builtin_memmove): Comment fixes.
802 (expand_builtin_object_size, expand_builtin_memory_chk,
803 maybe_emit_chk_warning, maybe_emit_sprintf_chk_warning,
804 compute_object_offset, compute_builtin_object_size,
805 fold_builtin_object_size): New functions.
806 (expand_builtin): Handle BUILT_IN_OBJECT_SIZE and BUILT_IN_*_CHK.
807 (fold_builtin_1): Likewise. Handle BUILT_IN_{,V}{,F}PRINTF
808 and BUILT_IN_{,F}PRINTF_UNLOCKED.
809 (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
810 fold_builtin_strncpy_chk, fold_builtin_strcat_chk,
811 fold_builtin_strncat_chk, fold_builtin_sprintf_chk,
812 fold_builtin_snprintf_chk, fold_builtin_printf, fold_builtin_fprintf):
814 * builtins.def (BUILT_IN_OBJECT_SIZE, BUILT_IN_MEMCPY_CHK,
815 BUILT_IN_MEMMOVE_CHK, BUILT_IN_MEMPCPY_CHK, BUILT_IN_MEMSET_CHK,
816 BUILT_IN_STPCPY_CHK, BUILT_IN_STRCAT_CHK, BUILT_IN_STRCPY_CHK,
817 BUILT_IN_STRNCAT_CHK, BUILT_IN_STRNCPY_CHK, BUILT_IN_SNPRINTF_CHK,
818 BUILT_IN_SPRINTF_CHK, BUILT_IN_VSNPRINTF_CHK, BUILT_IN_VSPRINTF_CHK,
819 BUILT_IN_FPRINTF_CHK, BUILT_IN_PRINTF_CHK, BUILT_IN_VFPRINTF_CHK,
820 BUILT_IN_VPRINTF_CHK): New builtins.
821 * builtin-types.def (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_VAR_4):
823 (BT_FN_SIZE_CONST_PTR_INT, BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
824 BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, BT_FN_PTR_PTR_INT_SIZE_SIZE,
825 BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
826 BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
827 BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
828 BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
829 BT_FN_INT_INT_CONST_STRING_VAR, BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
830 BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
831 BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR): New types.
832 * c-common.c (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_6,
833 DEF_FUNCTION_TYPE_VAR_4, DEF_FUNCTION_TYPE_VAR_5): Define.
834 * Makefile.in (OBJS-common): Add tree-object-size.o.
835 (tree-object-size.o): Add dependencies.
836 * tree-pass.h (pass_object_sizes): Add.
837 * tree-optimize.c (init_tree_optimization_passes): Add
839 * tree-object-size.c: New file.
840 * tree.h (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
841 fold_builtin_strncpy_chk, fold_builtin_snprintf_chk,
842 compute_builtin_object_size, init_object_sizes, fini_object_sizes):
844 * tree-ssa-ccp.c (get_strlen): Rename to ...
845 (get_maxval_strlen): ...this function. Handle also computing of maximum
846 string length and maximum integral value.
847 (ccp_fold_builtin): Handle BUILT_IN_*_CHK. Use get_maxval_strlen
848 instead of get_strlen. Pass CALLEE and ARGLIST variables to the
849 folding functions instead of computing them again.
850 (execute_fold_all_builtins): Retry ccp_fold_builtin if a builtin changed
851 into some other builtin.
852 * doc/extend.texi (Object Size Checking): Document.
854 * regrename.c (copy_value): Fix comment.
856 * toplev.c (process_options): Use if (FRAME_GROWS_DOWNWARD)
857 instead of preprocessor conditionals.
859 * targhooks.c (default_hidden_stack_protect_fail): Fall back to
860 default_external_stack_protect_fail if visibility is not supported
862 * config/i386/i386.c (ix86_stack_protect_fail): New function.
863 (TARGET_STACK_PROTECT_FAIL): Define.
864 * config/i386/i386.md (stack_protect_si): Change CLOBBER into
866 (stack_protect_di): Likewise. Use %k2 instead of %2 to avoid
867 invalid instruction xorl %rax, %rax.
869 2005-06-27 Richard Henderson <rth@redhat.com>
871 * c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
872 * cfgexpand.c: Include params.h.
873 (has_protected_decls, has_short_buffer): New.
874 (expand_stack_vars): Take a predicate to determine what to expand.
875 (defer_stack_allocation): True when flag_stack_protect on.
876 (SPCT_HAS_LARGE_CHAR_ARRAY, SPCT_HAS_SMALL_CHAR_ARRAY): New.
877 (SPCT_HAS_ARRAY, SPCT_HAS_AGGREGATE): New.
878 (stack_protect_classify_type, stack_protect_decl_phase): New.
879 (stack_protect_decl_phase_1, stack_protect_decl_phase_2): New.
880 (add_stack_protection_conflicts, create_stack_guard): New.
881 (expand_used_vars): Add stack protection logic.
882 (tree_expand_cfg): Likewise.
883 * common.opt (Wstack-protector): New.
884 (fstack-protector, fstack-protector-all): New.
885 * function.c: Include predict.h.
886 (assign_parm_adjust_stack_rtl): Zap stack_parm when stack protect
887 wants to copy the parameter into the stack frame.
888 (stack_protect_prologue, stack_protect_epilogue): New.
889 (expand_function_end): Call stack_protect_epilogue. Do
890 sjlj_emit_function_exit_after after naked_return_label.
891 * function.h (struct function): Add stack_protect_guard.
892 * params.def (PARAM_SSP_BUFFER_SIZE): New.
893 * toplev.c (process_options): Disable flag_stack_protect and/or
894 warn_stack_protect based on FRAME_GROWS_DOWNWARD.
895 * tree.h (stack_protect_prologue): Declare.
897 * target-def.h (TARGET_STACK_PROTECT_GUARD): New.
898 (TARGET_STACK_PROTECT_FAIL): New.
899 (TARGET_INITIALIZER): Add them.
900 * target.h (struct gcc_target): Add stack_protect_guard and
902 * targhooks.c: Include ggc.h, gty header.
903 (stack_chk_guard_decl, default_stack_protect_guard): New.
904 (stack_chk_fail_decl, default_external_stack_protect_fail): New.
905 (default_hidden_stack_protect_fail): New.
906 * targhooks.h (default_stack_protect_guard): Declare.
907 (default_external_stack_protect_fail): Declare.
908 (default_hidden_stack_protect_fail): Declare.
909 * config/i386/i386.c (TARGET_STACK_PROTECT_FAIL): New.
910 * config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New.
912 (conditional_trap, conditional_trap_1): Remove.
913 (stack_protect_set, stack_protect_set_si, stack_protect_set_di): New.
914 (stack_protect_test, stack_protect_test_si, stack_protect_test_di): New.
915 * doc/md.texi (stack_protect_set, stack_protect_test): New.
916 * doc/tm.texi (TARGET_STACK_PROTECT_GUARD): New.
917 (TARGET_STACK_PROTECT_FAIL): New.
919 * libgcc-std.ver (GCC_4.1.0): New.
920 * libgcc.h (__stack_chk_guard): Declare.
921 (__stack_chk_fail, __stack_chk_fail_local): Declare.
922 * libgcc2.c (L_stack_chk, L_stack_chk_local): New.
923 * mklibgcc.in (lib2funcs): Add them.
925 2005-06-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
928 * c-common.c (check_function_sentinel): Pass in named argument
929 list, skip over named arguments before looking for a sentinel.
930 (check_function_arguments): Pass in named argument list.
931 * c-common.h (check_function_arguments): Likewise.
932 * c-typeck.c (build_function_call): Likewise.
934 2005-06-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
936 * genautomata.c (decl_mode_check_failed,
937 regexp_mode_check_failed): Add noreturn attribute.
939 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
941 * cfg.c, tree-vect-transform.c, tree.def: Fix comment typos.
942 * doc/invoke.texi: Fix typos.
944 * builtins.c, c-common.c, c-convert.c, c-decl.c, c-typeck.c,
945 convert.c, lambda-code.c, predict.c, tree-cfg.c,
946 tree-complex.c, tree-data-ref.c, tree-if-conv.c,
947 tree-mudflap.c, tree-scalar-evolution.c, tree-ssa-ccp.c,
948 tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c,
949 tree-ssa-loop-manip.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
950 tree-vect-analyze.c, tree-vect-transform.c, tree-vectorizer.c,
951 tree.c: Use fold_buildN instead of fold (buildN (...)).
953 2005-06-26 Gerald Pfeifer <gerald@pfeifer.com>
955 * doc/install.texi (Specific): Do not specify the concrete
956 versions of GCC provided by Cygwin. Simplify the part on
959 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
961 * config/arc/arc-protos.c: Remove the prototype for
963 * config/arc/arc.c (arc_finalize_pic): Remove.
964 * config/arc/arc.h (FINALIZE_PIC): Likewise.
965 * config/bfin/bfin.h (FINALIZE_PIC): Likewise.
966 * config/rs6000/rs6000.h (FINALIZE_PIC): Likewise.
968 2005-06-26 Jakub Jelinek <jakub@redhat.com>
971 * calls.c (expand_call, emit_library_call_value_1): Use xmalloc/free
972 instead of alloca for really big argument sizes.
975 * gimplify.c (gimplify_type_sizes): Check for type == error_mark_node
976 earlier in the function.
978 * regrename.c (copy_value): Don't replace fixed or global
979 regs with older regs.
981 * defaults.h (FRAME_GROWS_DOWNWARD): Define to 0 if not defined.
982 * function.c (get_func_frame_size): Use if (FRAME_GROWS_DOWNWARD)
983 instead of preprocessor conditionals.
984 (assign_stack_local_1, assign_stack_temp_for_type): Likewise.
985 * cfgexpand.c (FRAME_GROWS_DOWNWARD): Don't redefine to 1 or 0
986 depending on if it was or was not defined previously.
987 * doc/rtl.texi (VIRTUAL_STACK_VARS_REGNUM): Mention that only non-zero
988 definition of FRAME_GROWS_DOWNWARD means frame grows downward.
989 * doc/tm.texi (FRAME_GROWS_DOWNWARD): Likewise.
990 * config/m68hc11/m68hc11.h (FRAME_GROWS_DOWNWARD): Define to 0. Update
992 * config/pa/pa.h (FRAME_GROWS_DOWNWARD): Likewise.
993 * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Likewise.
994 * config/stormy16/stormy16.h (FRAME_GROWS_DOWNWARD): Define to 0.
995 * config/c4x/c4x.h (FRAME_GROWS_DOWNWARD): Likewise.
996 * config/sh/sh.h (FRAME_GROWS_DOWNWARD): Likewise.
997 * config/ia64/ia64.h (FRAME_GROWS_DOWNWARD): Likewise.
998 * config/iq2000/iq2000.h (FRAME_GROWS_DOWNWARD): Likewise.
999 * config/pdp11/pdp11.h (FRAME_GROWS_DOWNWARD): Define to 1. Update
1001 * config/i860/i860.h (FRAME_GROWS_DOWNWARD): Likewise.
1002 * config/h8300/h8300.h (FRAME_GROWS_DOWNWARD): Likewise.
1003 * config/arc/arc.h (FRAME_GROWS_DOWNWARD): Likewise.
1004 * config/vax/vax.h (FRAME_GROWS_DOWNWARD): Likewise.
1005 * config/sparc/sparc.h (FRAME_GROWS_DOWNWARD): Likewise.
1006 * config/i386/i386.h (FRAME_GROWS_DOWNWARD): Likewise.
1007 * config/fr30/fr30.h (FRAME_GROWS_DOWNWARD): Likewise.
1008 * config/frv/frv.h (FRAME_GROWS_DOWNWARD): Likewise.
1009 * config/mn10300/mn10300.h (FRAME_GROWS_DOWNWARD): Likewise.
1010 * config/bfin/bfin.h (FRAME_GROWS_DOWNWARD): Likewise.
1011 * config/ns32k/ns32k.h (FRAME_GROWS_DOWNWARD): Likewise.
1012 * config/v850/v850.h (FRAME_GROWS_DOWNWARD): Likewise.
1013 * config/alpha/alpha.h (FRAME_GROWS_DOWNWARD): Update comment.
1014 * config/s390/s390.h (FRAME_GROWS_DOWNWARD): Likewise.
1015 * config/arm/arm.h (FRAME_GROWS_DOWNWARD): Likewise.
1016 * config/alpha/unicosmk.h (FRAME_GROWS_DOWNWARD): Define to 1.
1017 * config/cris/cris.h (FRAME_GROWS_DOWNWARD): Likewise.
1018 * config/m68k/m68k.h (FRAME_GROWS_DOWNWARD): Likewise.
1019 * config/mmix/mmix.h (FRAME_GROWS_DOWNWARD): Likewise.
1021 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
1023 PR tree-optimization/22026
1024 * tree-vrp.c (extract_range_from_binary_expr): Drop to
1025 VR_VARYING if a binary expression involving VR_ANTI_RANGE is
1026 PLUS_EXPR, MINUS_EXPR, or unsigned MULT_EXPR.
1028 2005-06-26 Kazu Hirata <kazu@codesourcery.com>
1030 * Makefile.in (OBJS-common): Remove duplicate object file
1033 2005-06-25 Jan Hubicka <jh@suse.cz>
1035 * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update profile.
1036 * cfg.c (update_bb_profile_for_threading): Fix rescaling.
1038 * passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info
1040 (rest_of_compilation): Fix conditional on branch prob pass.
1041 * predict.c (tree_estimate_probability): Enable strip_builtin_expect
1042 when not loop optimizing.
1044 2005-06-25 Bernd Schmidt <bernd.schmidt@analog.com>
1046 * config/bfin/bfin.md (ror_one, rol_one, ashrdi3, ashldi3, lshrdi3):
1048 (movbi): Add alternative to set CC to zero.
1049 (compare_eq, compare_ne, compare_le, compare_lt, compare_leu,
1050 compare_ltu): Now named patterns.
1052 2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
1054 * all files: Update FSF address in copyright headers.
1056 2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
1058 * gengtype.c: Update FSF address in copyright header.
1059 (create_file): Update FSF in outputed copyright header.
1061 2005-06-24 Kazu Hirata <kazu@codesourcery.com>
1063 * cfglayout.c (block_locators_locs, line_locators_locs,
1064 line_locators_lines, file_locators_locs): Change the type to
1066 (insn_locators_initialize, change_scope, insn_scope,
1067 locator_line, insn_line, locator_file): Use VEC instead of
1070 2005-06-24 Jason Merrill <jason@redhat.com>
1072 * tree-nrv.c (tree_nrv): Fix to check assignments to the
1073 RESULT_DECL rather than just RETURN_EXPRs.
1074 (finalize_nrv_r): Adjust.
1076 2005-06-24 Jan Hubicka <jh@suse.cz>
1078 * tree-optimize.c (init_tree_optimization_passes): Fix flags of
1079 all_passes and all_ipa_passes.
1081 * c-common.c: Include cgraph.h
1082 (handle_externally_visible_attribute): New function.
1083 (c_common_att): Add "externally_visible" attribute.
1084 * cgraph.c (decide_is_variable_needed): Obey externally
1086 (cgraph_varpool_finalize_decl): Avoid redundant checking.
1087 * cgraph.h (struct cgraph_node): New flag externally_visible.
1088 (decide_is_function_needed): Obey externally visible flag.
1089 (cgraph_finalize_function): Avoid redundant checks.
1090 (cgraph_function_and_variable_visibility): Bring symbols local
1092 * common.opt (fwhole-program): New flag.
1094 * doc/invoke.texi (-fwhole-program): Document.
1096 2005-06-24 Mark Mitchell <mark@codesourcery.com>
1099 * tree-ssa-operands.c (get_expr_operands): Check s_ann for NULL
1102 2005-06-23 Mark Mitchell <mark@codesourcery.com>
1105 * tree-ssa-operands.c (get_expr_operands): Check the volatility of
1106 the FIELD_DECL and set s_ann->has_volatile_ops accordingly.
1108 2005-06-24 Jan Hubicka <jh@suse.cz>
1110 * opts.c (decode_options): Enable unit-at-a-time by default at -O1.
1112 2005-06-23 Jeff Law <law@redhat.com>
1114 * tree-optimize.c (init_tree_optimization_passes): Move
1115 copy prop pass to run just before VRP.
1116 * tree-vrp.c (remove_range_assertions): Remove copies created
1117 by ASSERT_EXPR removal.
1119 2005-06-23 Kazu Hirata <kazu@codesourcery.com>
1121 PR tree-optimization/22117
1122 * tree-vrp.c (extract_range_from_binary_expr): Compute a
1123 correct range when adding two pointers.
1125 2005-06-23 Jason Merrill <jason@redhat.com>
1128 Leave the return slot target in the MODIFY_EXPR rather than making
1129 it an argument, but only use it if the CALL_EXPR has a flag set.
1130 * tree.h (CALL_EXPR_HAS_RETURN_SLOT_ADDR): Rename to
1131 CALL_EXPR_RETURN_SLOT_OPT.
1132 * calls.c (expand_call): Adjust.
1133 * tree-inline.c (expand_call_inline): Adjust.
1134 * tree-pretty-print.c (dump_generic_node): Adjust.
1136 And set the flag as appropriate.
1137 * gimplify.c (gimplify_modify_expr_rhs): Set
1138 CALL_EXPR_HAS_RETURN_SLOT_ADDR where the LHS is obviously safe.
1139 * tree-nrv.c (execute_return_slot_opt): Set
1140 CALL_EXPR_HAS_RETURN_SLOT_ADDR based on escape analysis.
1141 * tree-pass.h: Declare pass_return_slot.
1142 * tree-optimize.c (init_tree_optimization_passes): Add it.
1144 2005-06-23 David Edelsohn <edelsohn@gnu.org>
1147 * config/rs6000/rs6000.h (PPC405_ERRATUM77): New.
1148 * config/rs6000/rs6000.md: Move atomic instructions to ...
1149 * config/rs6000/sync.md: Here.
1150 Change sync_compare_and_swap<mode> to define_expand. All stwcx
1151 patterns test PPC405_ERRATUM77.
1153 2005-06-23 Jan Hubicka <jh@suse.cz>
1155 * tree-inline.c (copy_body_r): Remap labels correctly.
1157 2005-06-22 Alan Modra <amodra@bigpond.net.au>
1159 * config/rs6000/sysv4.h (TARGET_ASM_EXCEPTION_SECTION): Delete.
1161 2005-06-22 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
1164 * varasm.c (compute_reloc_for_constant): Treat VIEW_CONVER_EXPR
1165 the same as the other cast operands.
1166 (output_addressed_constants): Likewise.
1168 2005-06-21 Jeff Law <law@redhat.com>
1170 * tree-vrp.c (extract_range_from_unary_expr): Handle type
1173 2005-06-21 Dorit Nuzman <dorit@il.ibm.com>
1175 * genopinit.c (vec_shl_optab, vec_shr_optab): Initialize new optabs.
1176 (reduc_plus_optab): Removed. Replcaed with...
1177 (reduc_splus_optab, reduc_uplus_optab): Initialize new optabs.
1178 * optabs.c (optab_for_tree_code): Return reduc_splus_optab or
1179 reduc_uplus_optab instead of reduc_plus_optab.
1180 (expand_vec_shift_expr): New function.
1181 (init_optabs): Initialize new optabs. Remove initialization of
1183 (optab_for_tree_code): Return vec_shl_optab/vec_shr_optab
1184 for VEC_LSHIFT_EXPR/VEC_RSHIFT_EXPR.
1185 * optabs.h (OTI_reduc_plus): Removed. Replaced with...
1186 (OTI_reduc_splus, OTI_reduc_uplus): New.
1187 (reduc_plus_optab): Removed. Replcaed with...
1188 (reduc_splus_optab, reduc_uplus_optab): New optabs.
1189 (vec_shl_optab, vec_shr_optab): New optabs.
1190 (expand_vec_shift_expr): New function declaration.
1192 * tree.def (VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR): New tree-codes.
1193 * tree-inline.c (estimate_num_insns_1): Handle new tree-codes.
1194 * expr.c (expand_expr_real_1): Handle new tree-codes.
1195 * tree-pretty-print.c (dump_generic_node, op_symbol, op_prio): Likewise.
1196 * tree-vect-generic.c (expand_vector_operations_1): Add assert.
1198 * tree-vect-transform.c (vect_create_epilog_for_reduction): Add two
1199 alternatives for generating reduction epilog code.
1200 (vectorizable_reduction): Don't fail of direct reduction support is
1202 (vectorizable_target_reduction_pattern): Likewise.
1204 * config/rs6000/altivec.md (reduc_smax_v4si, reduc_smax_v4sf,
1205 reduc_umax_v4si, reduc_smin_v4si, reduc_smin_v4sf, reduc_umin_v4si,
1206 reduc_plus_v4si, reduc_plus_v4sf): Removed.
1207 (vec_shl_<mode>, vec_shr_<mode>, altivec_vsumsws_nomode,
1208 reduc_splus_<mode>, reduc_uplus_v16qi): New.
1210 2005-06-20 Daniel Berlin <dberlin@dberlin.org>
1212 * c-typeck.c (build_function_call): Set fundecl = function again.
1213 * tree-ssa-alias.c (find_used_portions): Address taking causes the
1214 entire variable to be used.
1215 * tree-ssa-structalias.c (do_structure_copy): Fix handling of
1216 unknown size variables, and structure copies from addressof
1217 operations. Simplify how we do *a = *b type structure copies.
1218 (init_base_vars): Add ANYTHING = &ANYTHING constraint the right
1219 way. READONLY's address is not taken by default.
1220 INTEGER dereference should point to anything.
1221 (create_variable_info_for): It's okay for the first field to not start
1224 2005-06-20 Kaz Kojima <kkojima@gcc.gnu.org>
1226 config/sh/linux.h (FUNCTION_PROFILER): Constify a char*.
1228 2005-06-20 Roger Sayle <roger@eyesopen.com>
1229 Fariborz Jahanian <fjahanian@apple.com>
1231 * combine.c (simplify_set): Simplify setting of CC register
1232 by removing redundant compare with 0 on RHS.
1234 2005-06-20 Jan Beulich <jbeulich@novell.com>
1236 * config/i386/netware-libgcc.def: Update copyright.
1237 * config/i386/netware-libgcc.exp (__divdc3, __divsc3, __divxc3,
1238 __muldc3, __mulsc3, __mulxc3, __powidf2, __powisf2, __powixf2): Add.
1239 * config/i386/netware.c (gen_stdcall_decoration,
1240 gen_fastd_decoration): Merge into ...
1241 (gen_stdcall_or_fastcall_decoration): ... this. Adjust to match
1243 (gen_regparm_prefix): Adjust to match i386_nlm_encode_section_info.
1244 (i386_nlm_encode_section_info): Adjust to match WinNT's changes.
1245 * config/i386/t-nwld (SHLIB_LINK): Also create libgcc.imp alias of
1246 libgcc_s.imp. Use 'expr' rather than $(()) shell expressions.
1247 * gthr-nks.h (__gthread_objc_mutex_allocate): Kill another dubious
1248 use of NX_MUTEX_RECURSIVE.
1250 2005-06-19 Roger Sayle <roger@eyesopen.com>
1252 * fold-const.c (swap_tree_comparison): Add support for unordered
1253 floating point comparisons.
1254 * tree-vrp.c (opposite_comparison): Delete.
1255 (extract_range_from_assert): Replace calls to opposite_comparison
1256 with calls to swap_tree_comparison.
1257 (register_edge_assert_for): Likewise.
1258 (vrp_evaluate_conditional): Likewise.
1260 2005-06-20 Kaz Kojima <kkojima@gcc.gnu.org>
1262 * integrate.c (allocate_initial_values): Update the references
1263 to global_live_at_start and global_live_at_end.
1265 2005-06-20 Jan Hubicka <jh@suse.cz>
1267 * cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.
1268 * cfgloopmanip.c (duplicate_loop_to_header_edge): Set aux flags only
1270 * loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
1271 unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
1272 Update call of duplicate_loop_to_header_edge.
1273 (apply_opt_in_copies): Clear out aux pointers.
1275 2005-06-19 Joseph S. Myers <joseph@codesourcery.com>
1277 * config/i386/i386.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1278 (ix86_mangle_fundamental_type): New.
1279 * config/ia64/ia64.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1280 (ia64_mangle_fundamental_type): New.
1282 2005-06-19 Roger Sayle <roger@eyesopen.com>
1284 * c-decl.c (grokdeclarator): Only check TREE_OVERFLOW on
1286 * c-typeck.c (build_c_cast): Only preserve TREE_OVERFLOW on
1287 CONSTANT_CLASS_P nodes.
1289 2005-06-19 Richard Henderson <rth@redhat.com>
1291 * config/ia64/vect.md (vec_extractv2sf_1): Fix cut-and-paste error;
1292 the shift is always required.
1294 2005-06-19 Richard Henderson <rth@redhat.com>
1296 * config/ia64/ia64-modes.def (V4SF): Add.
1297 * config/ia64/ia64.c (ia64_legitimate_constant_p): Handle CONST_VECTOR.
1298 * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Allow vector to
1299 integer mode changes in fp regs.
1300 * config/ia64/ia64.md (UNSPEC_VECT_EXTR): New.
1301 * config/ia64/vect.md (smaxv2sf3, sminv2sf3): Fix typos in names.
1302 (reduc_plus_v2sf, reduc_smax_v2sf, reduc_smin_v2sf): New.
1303 (vcondv2sf): Use gen_fpack
1304 (fpack): Remove * from name.
1305 (fswap, fmix_l, fmix_r, fmix_lr): New.
1306 (vec_setv2sf, vec_extractv2sf_0_le, vec_extractv2sf_0_be): New.
1307 (vec_extractv2sf_1, vec_extractv2sf): New.
1309 2005-06-19 Andreas Krebbel <krebbel1@de.ibm.com>
1311 * combine.c (make_compound_operation): Use simplify_subreg. Delete
1312 a optimization already done by simplify_subreg.
1314 2005-06-19 Ulrich Weigand <uweigand@de.ibm.com>
1316 * loop.c (scan_loop): Do not consider insns setting the frame
1317 pointer to be candidates for hoisting.
1319 2005-06-19 Uros Bizjak <uros@kss-loka.si>
1321 * config/i386/i386.md (*cmpfp_0_sf, *cmpfp_0_df, cmpfp_0_xf):
1322 Remove instruction patterns.
1323 (*cmpfp_0): New instruction pattern. Set "unit" attribute to "i387".
1324 (*cmpfp_sf, *cmpfp_df, *cmpfp_xf, *cmpfp_u, *_cmpfp_<mode>):
1325 Set "unit" attribute to "i387".
1326 (*pushsf, *pushsf_rex64, *pushdf_nointeger, *pushdf_integer)
1327 (*pushxf_nointeger, *pushxf_integer): Set "unit" attribute to "i387"
1329 (*truncdfsf_mixed, *truncdfsf_i387, *truncxfsf2_mixed)
1330 (*truncxfsf2_i387, *truncxfdf2_mixed, *truncxfdf2_i387): Set "unit"
1331 attribute to "i387" when "type" attribute equals "multi".
1332 (*floathisf2_i387, *floatsisf2_mixed, *floatsisf2_i387)
1333 (*floatdisf2_mixed, *floatdisf2_i387, *floathidf2_i387)
1334 (*floatsidf2_mixed, *floatsidf2_i387, *floatdidf2_mixed)
1335 (*floatdidf2_i387, floathixf2, floatsixf2, floatdixf2): Set "unit"
1336 attribute to "i387" when "type" attribute equals "multi".
1337 * config/i386/mmx.md (*mov<mode>_internal_rex64)
1338 (*mov<mode>_internal, *movv2sf_internal_rex64, *movv2sf_internal):
1339 Set "unit" attribute to "mmx" when "type" attribute equals "ssecvt".
1340 (mmx_pmovmskb): Correct wrong "type" and "mode" attributes.
1341 * config/i386/sse.md (sse_cvtps2pi, sse_cvttps2pi, sse_cvtpd2di)
1342 (sse_cvttpd2pi): Set "unit" attribute to "mmx".
1343 (sse2_cvtpi2pd): Split register constraints. Set "unit" attribute
1344 to "mmx" for "y" operand 1.
1346 2005-06-19 Uros Bizjak <uros@kss-loka.si>
1348 * config/i386/i386.c (ix86_function_arg_regno_p): Add MMX_REGNO_P
1349 for TARGET_MMX. Use MMX_REGPARM_MAX and SSE_REGPARM_MAX for MMX
1350 and SSE registers to determine if regno is valid.
1351 (ix86_function_value_regno_p): Depend FIRST_FLOAT_REG on
1352 TARGET_FLOAT_RETURNS_IN_80387 also for TARGET_64BIT. Clean up.
1354 2005-06-18 Richard Henderson <rth@redhat.com>
1356 * tree-complex.c (init_dont_simulate_again): Clear DONT_SIMULATE_AGAIN
1357 for control-altering statements; set it again for returns.
1358 (complex_visit_stmt): Return SSA_PROP_VARYING for stmts that are
1361 2005-06-18 Richard Henderson <rth@redhat.com>
1364 * tree-ssa-pre.c (create_expression_by_pieces): Set
1365 DECL_COMPLEX_GIMPLE_REG_P.
1366 (insert_into_preds_of_block): Likewise.
1368 2005-06-18 Steven Bosscher <stevenb@suse.de>
1370 * Makefile.in: Fix tree-cfgcleanup.c dependencies.
1372 2005-06-18 Richard Henderson <rth@redhat.com>
1374 * expr.c (store_constructor): Use store of 0 to indicate value
1375 death instead of a clobber.
1377 * config/i386/i386.c (ix86_expand_reduc_v4sf): New.
1378 * config/i386/i386-protos.h (ix86_expand_reduc_v4sf): Declare.
1379 * config/i386/sse.md (reduc_plus_v4sf): New.
1380 (reduc_smax_v4sf, reduc_smin_v4sf): New.
1382 2005-06-18 James A. Morrison <phython@gcc.gnu.org>
1384 * fold_const (fold_binary): Fold X % (2**N) to X & (2**N - 1) for
1385 nonnegative values of X.
1387 2005-06-18 Uros Bizjak <uros@kss-loka.si>
1389 * doc/md.texi (Standard Names): Change insn pattern name
1390 from truncM2 to btruncM2 for 'trunc' built-in description.
1391 Add rintM2 insn pattern description.
1393 2005-06-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1395 * c-decl.c (locate_old_decl): Add format attribute.
1396 (implicit_decl_warning): Likewise.
1398 * diagnostic.h (verbatim): Move ...
1399 * toplev.h (verbatim): ... here. Add ATTRIBUTE_GCC_DIAG.
1400 * pretty-print.h (pp_verbatim): Add ATTRIBUTE_GCC_PPDIAG.
1402 2005-06-18 Roger Sayle <roger@eyesopen.com>
1405 * config/rs6000/aix51.h (TARGET_C99_FUNCTIONS): Remove definition.
1407 2005-06-18 Dorit Nuzman <dorit@il.ibm.com>
1409 * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): New
1411 * optabs.h (OTI_reduc_smax, OTI_reduc_umax, OTI_reduc_smin,
1412 OTI_reduc_umin, OTI_reduc_plus): New optabs for reduction.
1413 (reduc_smax_optab, reduc_umax_optab, reduc_smin_optab, reduc_umin_optab,
1414 reduc_plus_optab): New optabs for reduction.
1415 * expr.c (expand_expr_real_1): Handle new tree-codes.
1416 * tree-inline.c (estimate_num_insns_1): Handle new tree-codes.
1417 * tree-pretty-print.c (dump_generic_node, op_prio, op_symbol): Handle
1419 * optabs.c (optab_for_tree_code): Handle new tree-codes.
1420 (init_optabs): Initialize new optabs.
1421 * genopinit.c (optabs): Define handlers for new optabs.
1423 * tree-vect-analyze.c (vect_analyze_operations): Fail vectorization in
1424 case of a phi that is marked as relevant. Call vectorizable_reduction.
1425 (vect_mark_relevant): Phis may be marked as relevant.
1426 (vect_mark_stmts_to_be_vectorized): The use corresponding to the
1427 reduction variable in a reduction stmt does not mark its defining phi
1428 as relevant. Update documentation accordingly.
1429 (vect_can_advance_ivs_p): Skip reduction phis.
1430 * tree-vect-transform.c (vect_get_vec_def_for_operand): Takes
1431 additional argument. Handle reduction.
1432 (vect_create_destination_var): Update call to vect_get_new_vect_var.
1433 Handle non-vector argument.
1434 (get_initial_def_for_reduction): New function.
1435 (vect_create_epilog_for_reduction): New function.
1436 (vectorizable_reduction): New function.
1437 (vect_get_new_vect_var): Handle new vect_var_kind.
1438 (vectorizable_assignment, vectorizable_operation, vectorizable_store,
1439 vectorizable_condition): Update call to vect_get_new_vect_var.
1440 (vect_transform_stmt): Call vectorizable_reduction.
1441 (vect_update_ivs_after_vectorizer): Skip reduction phis.
1442 (vect_transform_loop): Skip if stmt is both not relevant and not live.
1443 * tree-vectorizer.c (reduction_code_for_scalar_code): New function.
1444 (vect_is_simple_reduction): Was empty - added implementation.
1445 * tree-vectorizer.h (vect_scalar_var): New enum vect_var_kind value.
1446 (reduc_vec_info_type): New enum vect_def_type value.
1447 * config/rs6000/altivec.md (reduc_smax_v4si, reduc_smax_v4sf,
1448 reduc_umax_v4si, reduc_smin_v4si, reduc_umin_v4sf, reduc_smin_v4sf,
1449 reduc_plus_v4si, reduc_plus_v4sf): New define_expands.
1451 * tree-vect-analyze.c (vect_determine_vectorization_factor): Remove
1452 ENABLE_CHECKING around gcc_assert.
1453 * tree-vect-transform.c (vect_do_peeling_for_loop_bound,
1454 (vect_do_peeling_for_alignment, vect_transform_loop,
1455 vect_get_vec_def_for_operand): Likewise.
1457 2005-06-18 Joseph S. Myers <joseph@codesourcery.com>
1459 * config/ia64/ia64.c (ia64_function_arg): Set up a PARALLEL for a
1460 big-endian unnamed __float80 value.
1462 2005-06-18 Richard Henderson <rth@redhat.com>
1465 * tree-sra.c (generate_copy_inout): Handle SSA_NAME complex
1468 2005-06-17 Richard Henderson <rth@redhat.com>
1470 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Use
1471 initialize_original_copy_tables and free_original_copy_tables.
1472 (vect_do_peeling_for_alignment): Likewise.
1474 2005-06-17 Pat Haugen <pthaugen@us.ibm.com>
1476 * bb-reorder.c (find_traces_1_round): Use succ block frequency
1477 instead of edge frequency for calls to better_edge_p.
1479 2005-06-17 Andrew Pinski <pinskia@physics.uc.edu>
1482 * tree-ssa-loop-im.c (for_each_index): Handle COMPLEX_CST.
1484 2005-06-17 Steve Ellcey <sje@cup.hp.com>
1487 * config/ia64/hpux.h (FUNCTION_PROFILER): New (dummy).
1488 (PROFILE_HOOK): New.
1489 (PROFILE_BEFORE_PROLOGUE): Undef.
1490 (NO_PROFILE_COUNTERS): New.
1491 * config/ia64/ia64-protos.h (ia64_profile_hook): New.
1492 * config/ia64/ia64.c (ia64_compute_frame_size): Add ifdef.
1493 (gen_mcount_func_rtx): New.
1494 (ia64_profile_hook): New.
1495 * config/ia64/ia64.md (ip_value): New.
1497 2005-06-17 Devang Patel <dpatel@apple.com>
1499 * config/rs6000/predicates.md (s5bit_cint_operand,
1500 u5bit_cint_operand): New.
1501 * config/rs6000/altivec.md (altivec_vspltb, altivec_vsplth,
1502 altivec_vspltisw_v4sf): Use new 5 bit constant operand predicates.
1503 * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Fix signed
1504 5 bit constant check.
1506 2005-06-17 Richard Henderson <rth@redhat.com>
1508 * local-alloc.c (update_equiv_regs): Update reg_equiv_init
1509 properly when moving an initialization insn.
1511 2005-06-17 Paolo Bonzini <bonzini@gnu.org>
1513 * aclocal.m4 (gcc_AC_CHECK_TOOL): Do not overwrite the
1515 * configure.ac: Regenerate.
1517 2005-06-17 Jan Hubicka <jh@suse.cz>
1519 * tree-optimize.c (execute_ipa_pass_list): New.
1520 (ipa_passes): Use it.
1522 2005-06-16 Richard Henderson <rth@redhat.com>
1525 * tree-complex.c (update_phi_components): Avoid no-op moves.
1527 2005-06-16 Joseph S. Myers <joseph@codesourcery.com>
1529 * Makefile.in (cc1-checksum.c): Use
1530 build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
1532 2005-06-16 Geoffrey Keating <geoffk@apple.com>
1534 * gengtype.c (adjust_field_rtx_def): Don't add a skip to
1537 * config/t-slibgcc-darwin (SHLIB_SOVERSION): Rename from
1539 (SHLIB_REVISION): Delete.
1540 (SHLIB_VERSTRING): Update to compensate.
1541 (SHLIB_SONAME): Just use one '.' in the name.
1543 2005-06-16 Eric Botcazou <ebotcazou@libertysurf.fr>
1545 PR tree-optimization/22018
1546 * tree-vrp.c (vrp_int_const_binop): Overhaul handling of overflow.
1548 2005-06-16 Richard Henderson <rth@redhat.com>
1551 * builtins.c (fold_builtin_complex_mul): Remove.
1552 (fold_builtin_complex_div): Remove.
1553 (fold_builtin_1): Don't call them.
1554 * fold-const.c (fold_complex_add, fold_complex_mult_parts,
1555 fold_complex_mult, fold_complex_div_parts, fold_complex_div): Remove.
1556 (fold_binary): Don't call them. Don't expand complex comparisons to
1557 elementary comparisons.
1558 * tree-complex.c (init_dont_simulate_again): Enhance search for
1559 stmts that require decomposition.
1560 (complex_visit_stmt): Handle RETURN_EXPR properly.
1561 (create_components): Handle no referenced variables properly.
1562 * tree.h (fold_complex_mult_parts): Remove.
1563 (fold_complex_div_parts): Remove.
1565 2005-06-16 Richard Guenther <rguenth@gcc.gnu.org>
1567 * doc/extend.texi: Document sseregparm target attribute.
1568 Clarify fastcall and regparm documentation.
1569 * config/i386/i386.h: Adjust float_in_sse documentation.
1570 * config/i386/i386.c: Add new target attribute sseregparm.
1571 (ix86_handle_cdecl_attribute, ix86_handle_regparm_attribute):
1573 (ix86_handle_cconv_attribute): ... here. Also handle
1574 sseregparm attribute.
1575 (ix86_comp_type_attributes): Compare sseregparm attributes.
1576 (ix86_function_sseregparm): New function, split out from ...
1577 (init_cumulative_args): ... here. Use to decide use
1578 of SSE registers and error in case of missing support.
1579 (ix86_value_regno): Likewise.
1580 (function_arg_advance): Do not bail out for DFmode if we need
1581 to pass doubles in registers.
1582 (function_arg): Likewise.
1584 2005-06-16 Paolo Bonzini <bonzini@gnu.org>
1585 Daniel Jacobowitz <dan@codesourcery.com>
1586 Alan Modra <amodra.bigpond.net.au>
1588 * configure.ac (gcc_version): Set near the beginning.
1589 (as, ld, nm): Do not link in-tree tools. Set gcc_cv_* if tools are
1590 found in the tree. Use gcc_AC_PROG to find the tools in the system.
1591 (objdump): Do not look for it.
1592 * Makefile.in (NM_FOR_TARGET): Point to ./nm
1593 (ORIGINAL_AS_FOR_TARGET, ORIGINAL_LD_FOR_TARGET,
1594 ORIGINAL_NM_FOR_TARGET): Substitute from autoconf.
1595 (as, ld, nm): New rules.
1596 (libgcc.mk): Depend on them.
1597 * aclocal.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL,
1598 gcc_AC_BUILD_EXEEXT): New.
1599 (gcc_AC_CHECK_PROG_VER): Use gcc_AC_BUILD_EXEEXT.
1600 * configure: Regenerate.
1602 2005-06-16 Jan Hubicka <jh@suse.cz>
1604 * basic-block.h (rtl_bb_info): Break out head_, end_,
1605 global_live_at_start, global_live_at_end from ...
1606 (basic_block_def): ... here; update all references
1608 (init_rtl_bb_info): Declare.
1609 * cfgexpand.c (expand_gimple_basic_block): Init bb info, set BB_RTL
1611 * cfgrtl.c: Include ggc.h
1612 (create_basic_block_structure): Init bb info.
1613 (rtl_verify_flow_info_1): Check BB_RTL flag and rtl_bb_info pointer.
1614 (init_rtl_bb_info): New function.
1615 (rtl_merge_block, cfglayout_merge_block): Copy global_live_at_end here.
1616 * cfghooks.c (merge_block): Do not copy global_live_at_end here.
1617 * cfg.c (clear_bb_flags): Skip BB_RTL flag.
1618 (dump_flow_info): Gueard global_live_* dumping.
1620 * Makefile.in (cfg.o): Add new dependencies.
1621 * basic-block.h (reorder_block_def): Kill
1622 original/copy/duplicated/copy_number fields.
1623 (BB_DUPLICATED): New flag.
1624 (initialize_original_copy_tables, free_original_copy_tables,
1625 set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New.
1626 * cfg.c: Include hashtab.h and alloc-pool.h
1627 (bb_original, bb_copy, original_copy_bb_pool): New static vars.
1628 (htab_bb_copy_original_entry): New struct.
1629 (bb_copy_original_hash, bb_copy_original_eq): New static functions.
1630 (initialize_original_copy_tables, free_original_copy_tables,
1631 set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New
1633 * cfghooks.c (duplicate_block): Update original/copy handling.
1634 * cfglayout.c (fixup_reorder_chain): Likewise.
1635 (cfg_layout_initialize): Initialize orignal_copy tables.
1636 (cfg_layout_finalize): FInalize original_copy tables.
1637 (can_copy_bbs_p): Use BB_DUPLICATED flag.
1638 (copy_bbs): Likewise.
1639 * cfgloopmanip.c (update-single_exits_after_duplication): Likewise.
1640 (duplicate_loop_to_header_edge): Likewise; update handling of
1642 (loop_version): Likewise.
1643 * dominance.c (get_dominated_by_region): Use BB_DUPLICATED_FLAG.
1644 * except.c (expand_resx_expr): Check that reg->resume is not set.
1645 * loop-unroll.c (unroll_loop_constant_iterations,
1646 unroll_loop_runtime_iterations, apply_opt_in_copies): Update
1647 copy/original handling.
1648 * loop-unwitch.c (unswitch_loop): Likewise.
1649 * tree-cfg.c (create_bb): Do not initialize RBI.
1650 (disband_implicit_edges): Do not kill RBI.
1651 (add_phi_args_after_copy_bb): Use new original/copy mapping.
1652 (add_phi_args_after_copy): Use BB_DUPLICATED flag.
1653 (tree_duplicate_sese_region): Update original/copy handling.
1654 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
1655 * tree-ssa-loop-manip.c (copy_phi_node_args): Likewise.
1656 * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Likewise.
1658 2005-06-15 Andrew Pinski <pinskia@physics.uc.edu>
1661 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Conversions between
1662 integer types whos ranges are different are not useless.
1664 2005-06-15 Andrew Pinski <pinskia@physics.uc.edu>
1667 * tree-ssa-reassoc.c (init_reassoc): Also give chain decl a distint
1670 2005-06-15 Diego Novillo <dnovillo@redhat.com>
1672 * tree-ssa-structalias.c (dump_solution_for_var): Reformat
1674 (dump_sa_points_to_info): Make extern.
1675 (debug_sa_points_to_info): New.
1676 * tree-ssa-structalias.h (TREE_SSA_STRUCTALIAS_H): Rename from
1678 (dump_sa_points_to_info): Declare.
1679 (debug_sa_points_to_info): Declare.
1681 2005-06-15 Joseph S. Myers <joseph@codesourcery.com>
1683 * c-tree.h (default_function_array_conversion): Declare.
1684 * c-typeck.c (default_function_array_conversion): Export. Correct
1686 (default_conversion): Do not call
1687 default_function_array_conversion. Do not allow FUNCTION_TYPE.
1688 (build_function_call): Call default_function_array_conversion on
1690 (convert_arguments): Do not call it on the function arguments.
1691 (build_unary_op): Do not allow ARRAY_TYPE or FUNCTION_TYPE for
1692 TRUTH_NOT_EXPR. Call default_function_array_conversion for taking
1693 address of ARRAY_REF.
1694 (build_compound_expr): Do not call
1695 default_function_array_conversion.
1696 (build_c_cast): Do not call default_function_array_conversion.
1697 (convert_for_assignment): Do not call default_conversion.
1698 (digest_init): Call default_function_array_conversion to convert
1699 string constants and compound literals to pointers, but not
1701 (output_init_element): Likewise.
1702 (build_asm_expr): Do not call default_function_array_conversion.
1703 (c_process_expr_stmt): Likewise.
1704 (c_objc_common_truthvalue_conversion): Likewise. Do not allow
1706 * c-parser.c (c_parser_expression_conv): New.
1707 (c_parser_asm_operands, c_parser_expr_list): Add convert_p
1708 argument. All callers changed. Call
1709 default_function_array_conversion if convert_p.
1710 (c_parser_initializer, c_parser_initval): Call
1711 default_function_array_conversion except for string constants and
1713 (c_parser_initelt): Call default_function_array_conversion for
1714 ObjC expression received.
1715 (c_parser_statement_after_labels): Call c_parser_expression_conv
1716 for return and expression statements.
1717 (c_parser_paren_condition, c_parser_for_statement,
1718 c_parser_conditional_expression): Call c_parser_expression_conv.
1719 (c_parser_expr_no_commas, c_parser_conditional_expression,
1720 c_parser_binary_expression, c_parser_cast_expression,
1721 c_parser_unary_expression): Call
1722 default_function_array_conversion.
1724 2005-06-15 Diego Novillo <dnovillo@redhat.com>
1726 * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR
1727 when the result overflows.
1729 2005-06-15 David Ung <davidu@mips.com>
1731 * config/mips/mips.c (mips_rtx_cost_data): Add cost for 4kc, 4kp,
1734 2005-06-15 Richard Sandiford <richard@codesourcery.com>
1736 * doc/invoke.texi (-mips16): Fix typo.
1738 2005-06-15 David Ung <davidu@mips.com>
1740 * config/mips/mips.h (GENERATE_MIPS16E): New definition.
1741 * config/mips/mips.md (zero_extend<SHORT:mode><GPR:mode>2):
1742 Changed expand condition to exclude generating of "and" if
1743 GENERATE_MIPS16E is true.
1744 (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for
1745 matching mips16e zeb/zeh.
1746 (*extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for matching
1748 (*extend<SHORT:mode><GPR:mode>2): Disable this pattern for
1750 * doc/invoke.texi (MIPS Options): Add comment to -mips16
1751 indicating MIPS16e ASE is used if targetting for MIPS32 or MIPS64.
1753 2005-06-15 Diego Novillo <dnovillo@redhat.com>
1756 * tree-vrp.c (vrp_int_const_binop): New.
1757 (extract_range_from_binary_expr): Call it.
1758 Unify handling division and multiplication.
1760 2005-06-15 Aldy Hernandez <aldyh@redhat.com>
1762 * c-common.h (same_scalar_type_ignoring_signedness): Protoize.
1764 * c-common.c (same_scalar_type_ignoring_signedness): New.
1766 * c-typeck.c (build_binary_op): Check compatability of vector
1767 types. Move error report after switch.
1768 Do not clobber code[01] on *_DIV_EXPR case.
1770 * testsuite/gcc.dg/simd-1.c: Update error messages.
1771 * testsuite/gcc.dg/simd-1b.c: Re-enable tests. Update error
1773 * testsuite/gcc.dg/simd-2.c: Update error messages.
1774 * testsuite/gcc.dg/simd-4.c: New.
1776 2005-06-15 Bernd Schmidt <bernd.schmidt@analog.com>
1778 * Makefile.in (local-alloc.o): Depend on $(GGC_H) and reload.h.
1779 * local-alloc.c: Include "ggc.h" and "reload.h".
1780 (struct equivalence): New member is_arg_equivalence.
1781 (local_alloc): Always call update_equiv_regs.
1782 (update_equiv_regs): Allocate reg_equiv_init; set reg_equiv_init_size.
1783 Detect equivalences made by stores to memory in a second pass.
1784 Return early if not optimizing.
1785 Initialize reg_equiv_init for all equivalences; treat equivalences for
1786 REG_EQUIV notes existing before this pass specially.
1787 (no_equiv): Don't clear reg_equiv_init or remove notes if the
1788 is_arg_equivalence field is set.
1789 * reload.h (reg_equiv_init, reg_equiv_init_size): Declare.
1790 * reload1.c (reg_equiv_init): No longer static.
1791 (reg_equiv_init_size): New variable.
1792 (reload): Don't allocate reg_equiv_init; don't free it when done but
1794 Restructure equivalence set up code not to set reg_equiv_init, but to
1795 clear it when we can't use an equivalence.
1796 Undo change disabling equivalences for MEM_READONLY_P memrefs.
1797 Dump equivalencing insns to dump_file.
1799 2005-06-14 Richard Sandiford <richard@codesourcery.com>
1801 * config/mips/mips.c (machine_function): Add varargs_size field.
1802 (mips_setup_incoming_varargs): Store the amount of extra stack space
1803 there rather than in *pretend_size. When saving registers, always
1804 expect virtual_incoming_args_rtx to point to the start of the
1806 (mips_va_start): Remove alignment hack. Handle all
1807 !EABI_FLOAT_VARARGS_P cases in the same way.
1808 (compute_frame_size): Handle varargs_size. Remove the redundant
1809 !TARGET_OLDABI condition in the handling of pretend_args_size.
1810 (mips_initial_elimination_offset): Remove the now-redundant check
1813 2005-06-14 Jeff Law <law@redhat.com>
1815 * tree-vrp.c (local_fold): Remove.
1816 (simplify_using_ranges): Use fold_convert, not local_fold. Tweak
1817 DIV/MOD case slightly for readability.
1819 2005-06-14 Frank Ch. Eigler <fche@redhat.com>
1822 * tree-mudflap.c (mudflap_finish_file): Exclude non-public
1823 rather than static objects (!) from libmudflap registration.
1825 2005-06-14 Richard Sandiford <richard@codesourcery.com>
1827 * opt-functions.awk (global_state_p, needs_state_p, static_var): New.
1828 (var_ref): Take the option's flags as a second parameter. Check
1830 * optc-gen.awk: Declare local state variables. Pass flags to var_ref.
1832 2005-06-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1835 * config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
1836 unsigned index numbers.
1838 2005-06-13 Geoffrey Keating <geoffk@apple.com>
1840 * Makefile.in (install-man): Doesn't really depend on installdirs.
1841 (various rules for installing manpages): Do depend on installdirs.
1843 2005-06-14 Nathan Sidwell <nathan@codesourcery.com>
1845 * unwind-dw2-fde-darwin.c (examine_objects): Fix aliasing in
1846 read_encoded_value_with_base call.
1847 * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Likewise.
1848 * unwind-dw2-fde.c (_Unwind_Find_FDE): Likewise.
1849 * unwind-dw2.c (extract_cie_info): Fix aliasing in
1850 read_encoded_value call.
1851 (execute_cfa_program, uw_frame_state_for): Likewise.
1853 2005-06-13 Roger Sayle <roger@eyesopen.com>
1855 PR rtl-optimization/22053
1856 * reg-stack.c (compensate_edge): Correct mistake in the assertion
1857 checking of EDGE_ABNORMAL_CALL edges; complex return values can
1858 result in the top two stack slots, st(0) and st(1), being live.
1860 2005-06-13 Jeff Law <law@redhat.com>
1862 * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): No longer
1863 simplify DIV, MOD or ABS expressions using VRP information.
1864 Remove WALK_DATA parameter. Prototype and all callers updated.
1865 (eliminate_redundant_computations): Remove WALK_DATA parameter.
1866 Prototype and all callers updated.
1867 (optimize_stmt): WALK_DATA parameter is now unused.
1869 * tree-vrp.c (local_fold): New function. Like fold, but
1870 strips useless type conversions in the result.
1871 (simplify_using_ranges): New function, largely cribbed from
1872 tree-ssa-dom.c::simplify_rhs_and_lookup_avail_expr.
1873 (vrp_finalize): Call simplify_using_ranges.
1875 2005-06-13 Mark Mitchell <mark@codesourcery.com>
1877 * config/i386/x86-64.h (ASM_SPEC): Explicitly pass --64 to the
1878 assembler in 64-bit mode.
1880 2005-06-13 David Edelsohn <edelsohn@gnu.org>
1882 Revert scc_operand patch.
1883 * config/rs6000/predicates.md (scc_operand): Delete.
1884 * config/rs6000/rs6000.md (scc_operand): Change to scc_eq_operand.
1886 2005-06-13 Zdenek Dvorak <dvorakz@suse.cz>
1889 * fold-const.c (split_address_to_core_and_offset): Always return
1890 the address of the base object.
1892 2005-06-13 Bernd Schmidt <bernd.schmidt@analog.com>
1894 * doc/invoke.texi (Blackfin Options): Document -mlong-calls.
1896 2005-06-12 Richard Henderson <rth@redhat.com>
1899 * tree-complex.c (update_complex_components_on_edge): New.
1900 (update_parameter_components): Use it.
1901 (update_phi_components): Likewise.
1902 (expand_complex_move): Likewise for is_ctrl_altering_stmt.
1904 2005-06-12 James A. Morrison <phython@gcc.gnu.org>
1906 PR tree-optimization/14796
1907 * fold-const (fold_binary): Transform (X << C) >> C into X & (-1>>C)
1910 2005-06-12 Kazu Hirata <kazu@codesourcery.com>
1912 * cgraphunit.c, tree-ssa-loop-ivopts.c,
1913 tree-ssa-structalias.c, tree-vectorizer.c, tree-vectorizer.h,
1914 config/sparc/sparc.c: Fix comment typos.
1916 2005-06-12 Richard Earnshaw <richard.earnshaw@arm.com>
1918 * arm/ieee754-df.s (aeabi_dcmpeq, aeabi_dcmplt, aeabi_dcmple)
1919 (aeabi_dcmpge, aeabi_dcmpgt): Maintain 8-byte stack alignment.
1920 * arm/ieee754-sf.s (aeabi_l2f, aeabi_fcmpeq, aeabi_fcmplt)
1921 (aeabi_fcmple, aeabi_fcmpge, aeabi_fcmpgt): Likewise.
1923 2005-06-12 James A. Morrison <phython@gcc.gnu.org>
1925 PR tree-optimization/14796
1926 * fold-const.c (fold_binary): Transform (A >> C) << C into
1928 <shift>: Transform (A OP c1) OP c2 into A OP (c1 + c2).
1930 2005-06-11 Geoffrey Keating <geoffk@apple.com>
1932 * config/rs6000/predicates.md (reg_or_arith_cint_operand): Delete.
1933 (reg_or_add_cint_operand): Rename from reg_or_add_cint64_operand.
1935 (reg_or_sub_cint_operand): Likewise.
1936 (mask_operand): Handle DImode.
1937 (mask64_operand): Delete.
1938 (and64_operand): Delete.
1939 * config/rs6000/rs6000.c (num_insns_constant): Use mask_operand
1940 instead of mask64_operand.
1941 (print_operand): Likewise.
1942 (rs6000_rtx_costs): Use mask_operand and reg_or_add_cint_operand and
1943 reg_or_sub_cint_operand instead of *64_* variants.
1944 * config/rs6000/rs6000.h (EXTRA_CONSTRAINT): Use mask_operand
1945 instead of mask64_operand.
1946 * config/rs6000/rs6000.md: Use mask_operand and and_operand instead
1950 (add<mode>3): Use reg_or_add_cint_operand.
1952 (sub<mode>3): Use reg_or_sub_cint_operand.
1953 (udiv<mode>3, div<mode>3, div<mode>3_no_mq, mod<mode>3,
1954 mov<mode>_internal2, mov<mode>, cmp<mode>, cmp<mode>,
1955 cmp<mode>_internal1, indirect_jump<mode>, ctr<mode>,
1956 ctr<mode>_internal1, ctr<mode>_internal2, ctr<mode>_internal5,
1957 ctr<mode>_internal6, save_fpregs_<mode>, return_internal_<mode>,
1958 return_and_restore_fpregs_<mode>, eh_set_lr_<mode>,
1959 various unnamed patterns): New.
1960 (udivsi3, divsi3, divsi3_no_mq, modsi3, movsi_internal2, movsi,
1961 cmpsi, cmpsi_internal1, indirect_jumpsi, ctrsi, ctrsi_internal1,
1962 ctrsi_internal2, ctrsi_internal5, ctrsi_internal6, save_fpregs_si,
1963 return_internal_si, return_and_restore_fpregs_si, eh_set_lr_si,
1964 udivdi3, divdi3, divdi3_no_mq, moddi3, movdi_internal2, movdi,
1965 cmpdi, cmpdi_internal1, indirect_jumpdi, ctrdi, ctrdi_internal1,
1966 ctrdi_internal2, ctrdi_internal5, ctrdi_internal6, save_fpregs_di,
1967 return_internal_di, return_and_restore_fpregs_di, eh_set_lr_di,
1968 movhi, movqi, cmpsf, cmpdf, cmptf, various unnamed patterns):
1971 2005-06-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
1973 * rtl.h (to_rtx_code): Remove.
1974 * machmode.h (to_machine_mode): Likewise.
1975 * read-rtl.c (apply_mode_macro): Replace to_machine_mode with
1977 (apply_mode_maps): Likewise.
1978 (read_rtx_1): Likewise.
1979 (apply_code_macro): Replace to to_rtx_code with explicit cast.
1980 (check_code_macro): Likewise.
1981 (read_rtx_1): Likewise.
1983 2005-06-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
1985 * c-typeck.c (convert_for_assignment): Avoid checking
1986 OPT_Wc___compat, as it is always true.
1988 2005-06-11 David Edelsohn <edelsohn@gnu.org>
1990 * config/rs6000/rs6000.md (eq<mode>_compare): Restrict to Pmode.
1992 2005-06-11 Daniel Berlin <dberlin@dberlin.org>
1994 Fix PR tree-optimization/22005
1995 Fix PR tree-optimization/22025
1997 * tree-ssa-structalias.c (struct variable_info): Add has_union
1999 (create_variable_info_for): Mark variables containing unions.
2000 Don't sort the field stack if notokay is true.
2001 (find_what_p_points_to): Convert variables containing unions back
2002 to their SFT's if necessary.
2004 2005-06-11 Daniel Berlin <dberlin@dberlin.org>
2006 * lambda-code.c (replace_uses_equiv_to_x_with_y): Verify the step
2007 is an INTEGER_CST before calling int_cst_value.
2009 2005-06-10 Uros Bizjak <uros@kss-loka.si>
2012 * config/i386/i386.c (ix86_function_value_regno_p): Return true
2013 for FIRST_MMX_REG if TARGET_MMX.
2014 (ix86_return_in_memory): Return 1 for MMX/3dNow vectors. Delete
2016 (ix86_struct_value_rtx): Emit warning for MMX ABI violations.
2017 (ix86_value_regno): Return FIRST_MMX_REG for MMX vector modes.
2019 2005-06-10 Daniel Berlin <dberlin@dberlin.org>
2021 * lambda-code.c (replace_uses_equiv_to_x_with_y): Check step
2022 and access function against chrec_dont_know.
2024 2005-06-10 Daniel Berlin <dberlin@dberlin.org>
2026 * lambda-code.c (replace_uses_of_x_with_y): Renamed and rewritten
2028 (exit_phi_for_loop_p): New function.
2029 (can_put_in_inner_loop): Ditto.
2030 (can_convert_to_perfect_nest): Ditto.
2031 (perfect_nestify): Create iv with right type.
2032 Rewrite statements in correct order.
2034 2005-06-10 Keith Besaw <kbesaw@us.ibm.com>
2036 * tree-ssa-alias.c (new_type_alias): Use existing type
2037 tag if VAR has just one in its may_aliases list.
2039 2005-06-10 Fariborz Jahanian <fjahanian@apple.com>
2041 * rs6000/predicates.md (scc_operand): New.
2042 * rs6000/rs6000.md : Use scc_operand for eq:SI compares.
2044 2005-06-10 Dorit Nuzman <dorit@il.ibm.com>
2046 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): DRs whose
2047 dependence-distance modulo VF is 0 are recorded in the
2048 SAME_ALIGN_REFs VEC in each DR.
2049 (vect_enhance_data_refs_alignment): Avoid 80 column overflow. The
2050 alignment information of DRs that are in the SAME_ALIGN_REFs VEC of the
2051 DR we want to peel for, is set to 0.
2052 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Fix printout.
2053 * tree-vectorizer.c (destroy_loop_vec_info): Free the SAME_ALIGN_REFs
2055 * tree-vectorizer.h (dr_p): New type. Defined to use the VEC API.
2056 (_stmt_vec_info): Added new field same_align_refs.
2057 (STMT_VINFO_SAME_ALIGN_REFS): New macro.
2059 2005-06-10 Nathan Sidwell <nathan@codesourcery.com>
2061 * vec.h (VEC_safe_grow): Append MEM_STAT_INFO.
2063 2005-06-10 Alan Modra <amodra@bigpond.net.au>
2065 * config/rs6000/linux.h (NO_PROFILE_COUNTERS): Define.
2066 * config/rs6000/linux64.h (NO_PROFILE_COUNTERS): Define as 1.
2067 * config/rs6000/rs6000.c (output_function_profiler): Obey
2068 NO_PROFILE_COUNTERS. Handle TARGET_SECURE_PLT. Use "bcl 20,31"
2069 for -fPIC. Delete save_lr and substitute its value into strings.
2071 2005-06-09 Dale Johannesen <dalej@apple.com>
2073 * config/i386/i386.c (optimization_options): Make -fno-math-errno
2074 the default on Darwin.
2075 * config/rs6000/rs6000.c (optimization_options): Ditto.
2076 * doc/invoke.texi (-fno-math-errno): Document.
2078 2005-06-09 Dale Johannesen <dalej@apple.com>
2080 * config/rs6000/rs6000.c (TARGET_INSN_VALID_WITHIN_DOLOOP):
2081 Change to TARGET_INVALID_WITHIN_DOLOOP.
2083 2005-06-09 David Edelsohn <edelsohn@gnu.org>
2085 * config/rs6000/rs6000.md (eq): Convert to define_insn_and_split.
2086 * config/rs6000/predicates.md (scc_eq_operand): New.
2088 2005-06-09 Kaz Kojima <kkojima@gcc.gnu.org>
2090 * config/sh/sh.md (mextr_rl): Set buffer size properly.
2091 (*mextr_lr): Likewise.
2093 2005-06-09 Gabriel Dos Reis <gdr@integrable-solutions.net>
2096 * c.opt (Wc++-compat): New.
2097 * doc/invoke.texi (-Wc++-compat): Document.
2098 * c-typeck.c (convert_for_assignment): Check for implicit
2099 conversion void* -> T*.
2101 2005-06-09 Gabriel Dos Reis <gdr@integrable-solutions.edu>
2103 * machmode.h (to_machine_mode): New.
2104 * rtl.h (to_rtx_code): Likewise.
2105 * read-rtl.c (apply_mode_macro): Convert mode to machine_mode.
2106 (print_c_condition): Convert return value of htab_find().
2107 (apply_code_macro): Add explicit cast when convertin to enums.
2108 (apply_mode_maps): Likewise.
2109 (check_code_macro): Likewise.
2110 (read_rtx_1): Likewise.
2112 2005-06-09 Richard Henderson <rth@redhat.com>
2114 * config/ia64/ia64.c (update_set_flags): Just return for IF_THEN_ELSE.
2115 Use SCALAR_FLOAT_MODE_P.
2116 * config/ia64/vect.md (vcondv2sf): Remove code check on comparison.
2117 (fselect): Rename from fpcmp; use %F.
2120 2005-06-09 Jan Hubicka <jh@suse.cz>
2122 * cgraphunit.c (cgraph_create_edges): Do not walk BLOCK; finalize
2123 local statics when doing unit-at-a-time.
2124 (cgraph_varpool_assemble_pending_decls): Output debug info.
2125 * dwarf2out.c (decls_for_scope): Skip local statics.
2126 (dwarf2out_decl): Handle local statics.
2127 * passes.c (rest_of_decl_compilation): Do not differentiate
2128 local and global statics in unit-at-a-time.
2129 * tree-inline.c (remap_decls): Put local static into
2130 unexpanded_vars_list rather than introducing duplicated VAR_DECL
2133 2005-06-09 Daniel Berlin <dberlin@dberlin.org>
2135 * config/rs6000/rs6000.c: (rs6000_insn_valid_within_doloop): Fix
2138 2005-06-08 Daniel Berlin <dberlin@dberlin.org>
2140 * Makefile.in (OBJS-common): Add tree-ssa-structalias.o.
2141 * tree-flow.h (find_what_p_points_to): Add prototype.
2142 (push_fields_onto_fieldstack): Ditto.
2143 (sort_fieldstack): Ditto.
2144 * tree-optimize.c (init_tree_optimization_passes): Add
2145 pass_build_pta and pass_del_pta.
2146 * tree-pass.h (pass_build_pta): New structure.
2147 (pass_del_pta): Ditto.
2148 * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Disambiguate
2149 using new alias analyzer.
2150 (push_fields_onto_fieldstack): Removed from here.
2151 (bitpos_of_field): Ditto.
2152 (fieldoff_compare): Ditto.
2153 * tree-ssa-structalias.c: New file.
2154 * tree-ssa-structalias.h: Ditto.
2156 2005-06-09 Nathan Sidwell <nathan@codesourcery.com>
2158 * c-typeck.c (build_c_cast): Check type punning on COMPONENT_REF
2161 2005-06-09 Bernd Schmidt <bernd.schmidt@analog.com>
2163 * config/bfin/bfin.c (enum bfin_builtins): Moved here from...
2164 * config/bfin/bfin.h (enum bfin_builtins): ... here.
2166 2005-06-09 Adrian Straetling <straetling@de.ibm.com>
2168 * target.h (insn_valid_within_doloop): Rename into
2169 "invalid_within_doloop". Change return type to "const char *".
2171 * targhooks.h (default_insn_valid_within_doloop): Rename into
2172 "default_invalid_within_doloop".
2173 * targhooks.c (default_insn_valid_within_doloop): Likewise.
2175 * target-def.h (TARGET_INSN_VALID_WITHIN_DOLOOP): Rename target hook
2176 into "TARGET_INVALID_WITHIN_DOLOOP". Default it to
2177 "default_invalid_within_doloop".
2178 * hooks.c (hook_constcharptr_rtx_null): New function.
2179 (hook_bool_rtx_true): Remove.
2180 * hooks.h (hook_constcharptr_rtx_null): Declare.
2181 (hook_bool_rtx_true): Remove.
2182 * loop-doloop.c (doloop_valid_p): Temporarily store return value of
2183 "invalid_within_doloop" and print error message if non-null.
2185 * doc/tm.texi: Update documentation.
2186 * config/s390/s390.c: Adjust to new hook name and new default hook.
2187 * config/rs6000/rs6000.c: (rs6000_insn_valid_within_doloop): Rename
2188 into "rs6000_invalid_within_doloop".
2189 (rs6000_invalid_within_doloop): Change return type to "static const
2190 char *" and replace return values. Update Comment.
2192 2005-06-09 Bernd Schmidt <bernd.schmidt@analog.com>
2194 * config/bfin/bfin.opt (mlong-calls): New.
2195 * config/bfin/predicates.md (call_insn_operand): Disallow SYMBOL_REF
2196 if TARGET_LONG_CALLS.
2198 2005-06-09 Richard Henderson <rth@redhat.com>
2201 * tree.h (DECL_COMPLEX_GIMPLE_REG_P): New.
2202 (struct tree_decl): Add gimple_reg_flag.
2203 * integrate.c (copy_decl_for_inlining): Copy it.
2204 * gimplify.c (internal_get_tmp_var): Set it.
2205 (gimplify_bind_expr): Likewise.
2206 (gimplify_function_tree): Likewise.
2207 (gimplify_modify_expr_complex_part): New.
2208 (gimplify_modify_expr): Use it.
2209 * tree-gimple.c (is_gimple_reg_type): Allow complex.
2210 (is_gimple_reg): Allow complex with DECL_COMPLEX_GIMPLE_REG_P set.
2212 * tree-complex.c (complex_lattice_t): New.
2213 (complex_lattice_values, complex_variable_components): New.
2214 (some_nonzerop, find_lattice_value, is_complex_reg,
2215 init_parameter_lattice_values, init_dont_simulate_again,
2216 complex_visit_stmt, complex_visit_phi, create_components,
2217 update_complex_components, update_parameter_components,
2218 update_phi_components, update_all_vops, expand_complex_move): New.
2219 (extract_component): Handle INDIRECT_REF, COMPONENT_REF, ARRAY_REF,
2221 (update_complex_assignment): Use update_complex_components;
2222 handle updates of return_expr properly.
2223 (expand_complex_addition): Use complex lattice values.
2224 (expand_complex_multiplication): Likewise.
2225 (expand_complex_division): Likewise.
2226 (expand_complex_libcall): Use update_complex_components.
2227 (expand_complex_comparison): Use update_stmt.
2228 (expand_complex_operations_1): Use expand_complex_move, retrieve
2230 (tree_lower_complex): Compute lattice values.
2231 (tree_lower_complex_O0): Duplicate from tree_lower_complex.
2232 (pass_lower_complex_O0): Rename from pass_lower_complex.
2233 (pass_lower_complex, gate_no_optimization): New.
2234 * tree-optimize.c (init_tree_optimization_passes): Update for
2235 complex pass changes.
2236 * tree-pass.h (pass_lower_complex_O0): Declare.
2238 2005-06-08 Dale Johannesen <dalej@apple.com>
2240 * config/darwin.c (darwin_binds_local_p): New.
2241 * config/darwin-protos.h (darwin_binds_local_p): Declare it.
2242 * config/i386/i386.c (TARGET_BINDS_LOCAL_P): Use it for TARGET_MACHO.
2243 * config/rs6000/rs6000.c (rs6000_binds_local_p): Remove.
2244 (TARGET_BINDS_LOCAL_P): Change it to darwin_binds_local_p.
2246 2005-06-08 Aldy Hernandez <aldyh@redhat.com>
2248 * config/rs6000/rs6000.h: Remove rs6000_long_double_size_string,
2249 rs6000_isel, rs6000_spe, rs6000_alignment_string,
2250 rs6000_sched_restricted_insns_priority_str,
2251 rs6000_sched_restricted_insns_priority, rs6000_abi_string.
2253 2005-06-08 Zdenek Dvorak <dvorakz@suse.cz>
2255 * tree-ssa-address.c (addr_for_mem_ref): Use LAST_VIRTUAL_REGISTER
2256 instead of FIRST_PSEUDO_REGISTER for creating pseudoregisters.
2257 * tree-ssa-loop-ivopts.c (add_cost, multiply_by_cost,
2258 multiplier_allowed_in_address_p, get_address_cost): Ditto.
2260 2005-06-08 Richard Henderson <rth@redhat.com>
2262 * config/ia64/ia64.h (NO_PROFILE_COUNTERS): New.
2263 * config/ia64/ia64.c (ia64_output_function_profiler): Honor it.
2264 Emit out3 load right after alloc.
2266 2005-06-08 Aldy Hernandez <aldyh@redhat.com>
2268 * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
2269 rs6000_explicit_options.
2271 2005-06-08 Richard Henderson <rth@redhat.com>
2273 * config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
2274 * config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
2276 * config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.
2278 2005-06-08 Joseph S. Myers <joseph@codesourcery.com>
2280 * config/sol2-c.c (cmn_err_char_table): Allow width for %b
2283 2005-06-08 James A. Morrison <phython@gcc.gnu.org>
2286 * config/sparc/sparc.c (sparc_fold_builtin): New function
2287 (sparc_vis_mul8x16): New function.
2288 (sparc_handle_vis_mul8x16): New function.
2289 (TARGET_FOLD_BUILTIN): Define to sparc_fold_builtin.
2291 2005-06-08 David Edelsohn <edelsohn@gnu.org>
2293 * config/rs6000/rs6000.md (call_indirect_nonlocal_aix32): Prefer
2295 (call_indirect_nonlocal_aix64): Same.
2296 (call_value_indirect_nonlocal_aix32): Same.
2297 (call_value_indirect_nonlocal_aix64): Same.
2300 (eq): Use CLZ splitter for compare with zero.
2302 2005-06-08 Bernd Schmidt <bernd.schmidt@analog.com>
2304 * config/bfin/bfin.c (bfin_return_in_memory): Simplify; return
2305 everything larger than 8 bytes in memory.
2307 * config/bfin/bfin.h (enum bfin_builtins): New.
2308 * config/bfin/bfin.md (UNSPEC_VOLATILE_CSYNC, UNSPEC_VOLATILE_SSYNC):
2310 (csync, ssync): New insn patterns.
2311 * config/bfin/bfin.c (bfin_init_builtins, bfin_expand_builtin):
2313 (def_builtin): New macro.
2314 (TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
2316 From Jie Zhang <jie.zhang@analog.com>
2317 * config/bfin/bfin.h (ASM_OUTPUT_ALIGN): Gas now emulates the
2318 behavior of the native assembler in VDSP. So change accordingly.
2320 2005-06-08 Sebastian Pop <pop@cri.ensmp.fr>
2322 * tree-data-ref.c (compute_estimated_nb_iterations,
2323 analyze_array_indexes, compute_overlap_steps_for_affine_1_2,
2324 analyze_subscript_affine_affine, find_data_references_in_loop):
2325 Fixed to use chrec_contains_undetermined to test the values of
2326 loop->estimated_nb_iterations.
2327 * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
2328 Compute the estimation only when loop->estimated_nb_iterations
2329 has not yet been initialized.
2330 (convert_step_widening, scev_probably_wraps_p): Add a call to
2331 estimate_numbers_of_iterations_loop.
2332 * tree-vrp.c (execute_vrp): Don't call estimate_numbers_of_iterations.
2334 2005-06-08 Eric Botcazou <ebotcazou@libertysurf.fr>
2337 * dwarf2out.c (add_loc_descr_op_piece): Move to the
2338 DWARF2_DEBUGGING_INFO section.
2340 2005-06-08 Richard Henderson <rth@redhat.com>
2343 * config/ia64/ia64.c (emit_predicate_relation_info): Skip p0.
2345 2005-06-08 Eric Botcazou <ebotcazou@libertysurf.fr>
2348 * target.h (gcc_target) <asm_out>: New field output_dwarf_dtprel.
2349 * target-def.h (TARGET_ASM_OUTPUT_DWARF_DTPREL): New macro.
2350 (TARGET_ASM_OUT): Add it.
2351 * doc/tm.texi (Debugging Info): Document it.
2352 * dwarf2out.c (output_loc_operands) <INTERNAL_DW_OP_tls_addr>:
2353 Test it instead of ASM_OUTPUT_DWARF_DTPREL.
2354 (loc_descriptor_from_tree_1) <VAR_DECL>: Likewise.
2355 * system.h: Poison ASM_OUTPUT_DWARF_DTPREL.
2356 * config/frv/frv-protos.h (frv_output_dwarf_dtprel): Delete.
2357 * config/frv/frv.c (frv_output_dwarf_dtprel): Make static and unused.
2358 (gen_inlined_tls_plt): Remove unused variable MEM.
2359 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to frv_output_dwarf_dtprel.
2360 * config/frv/frv.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2361 * config/i386/i386-protos.h (i386_output_dwarf_dtprel): Delete.
2362 * config/i386/i386.c (i386_output_dwarf_dtprel): Make static and
2364 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to i386_output_dwarf_dtprel.
2365 * config/i386/i386.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2366 * config/ia64/ia64-protos.h (ia64_output_dwarf_dtprel): Delete.
2367 * config/ia64/ia64.c (ia64_output_dwarf_dtprel): Make static and
2369 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to ia64_output_dwarf_dtprel.
2370 * config/ia64/ia64.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2371 * config/rs6000/rs6000-protos.h (rs6000_output_dwarf_dtprel): Delete.
2372 * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Make static and
2374 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to rs6000_output_dwarf_dtprel
2375 * config/rs6000/rs6000.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2376 * config/s390/s390-protos.h (s390_output_dwarf_dtprel): Delete.
2377 * config/s390/s390.c (s390_output_dwarf_dtprel): Make static and
2379 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to s390_output_dwarf_dtprel.
2380 * config/s390/s390.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2381 * config/sparc/sol2-gas.h (TARGET_SUN_TLS): Define to 0.
2382 (TARGET_GNU_TLS): Define to 1.
2383 * config/sparc/sparc-protos.h (sparc_output_dwarf_dtprel): Delete.
2384 * config/sparc/sparc.c (sparc_output_dwarf_dtprel): Make static and
2386 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to sparc_output_dwarf_dtprel
2387 if TARGET_GNU_TLS only.
2388 * config/sparc/sparc.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
2390 * config.gcc (sparc64-*-solaris2*): Include tm-dwarf2.h last.
2391 (sparc-*-solaris2*): Likewise on Solaris 7 and up.
2393 2005-06-07 Dale Johannesen <dalej@apple.com>
2395 * config/i386/i386.md (movqi_1): Fix case where source
2396 is memory and destination EDI.
2398 2005-06-08 Kazu Hirata <kazu@codesourcery.com>
2400 * config/c4x/c4x.h (PREDICATE_CODES): Remove mem_operand.
2402 2005-06-07 Eric Christopher <echristo@redhat.com>
2404 * system.h: Poison EXTRA_CC_MODES.
2405 * config/frv/frv.h (SELECT_CC_MODE): Rewrite comment.
2406 * config/ia64/ia64.h (SELECT_CC_MODE): Ditto.
2407 * doc/md.texi (Jump Patterns): Replace reference to
2408 EXTRA_CC_MODES with machine-modes.def.
2409 * doc/rtl.texi (Machine Modes): Ditto.
2411 2005-06-07 Richard Henderson <rth@redhat.com>
2413 * varasm.c (initialize_cold_section_name): Fix alloca buffer overflow.
2414 (assemble_start_function): Fix strcmp confusion.
2416 2005-06-07 Uros Bizjak <uros@kss-loka.si>
2418 * config/i386/i386.h (enum ix86_entity): New.
2419 (enum ix86_stack_slot): New.
2420 (OPTIMIZE_MODE_SWITCHING): Redefine to use
2421 ix86_optimize_mode_switching[] array.
2422 (NUM_MODES_FOR_MODE_SWITCHING): Redefine for 4 entities.
2423 (MODE_NEEDED): Use ix86_mode_needed() function.
2424 (EMIT_MODE_SET): Redefine for changed emit_i387_cw_initialization ()
2426 (struct machine_function): Use optimize_mode_switching[] array.
2428 * config/i386/i386.c (MAX_386_STACK_LOCALS): Remove.
2429 (ix86_mode_needed): New function.
2430 (emit_i387_cw_initialization): Cleanup. Use mode to calculate
2431 correct stack positions for stored control words.
2432 (assign_386_stack_local): Use enum ix86_stack_slot. Change assert.
2433 (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR]: Change constant to
2435 [IX86_BUILTIN_STMXCSR]: Same.
2437 * config/i386/i386-protos.h (assign_stack_local): Change prototype.
2438 (emit_i387_cw_initialization): Change prototype.
2439 (ix86_mode_needed): New prototype.
2441 * config/i386/i386.md (i387_cw attribute): Change order of elements.
2442 (truncdfsf2, truncxfsf2, truncxfdf2, fix_trunc<mode>_fisttp_i387_1)
2443 (*fix_trunc<mode>_i387_1, lrint<mode>2, *fist<mode>2_floor_1)
2444 (*fist<mode>2_ceil_1): Change constant in call to
2445 assign_386_stack_local to SLOT_TEMP.
2446 (*fix_trunc<mode>_i387_1): Change constant in call to
2447 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC.
2448 Use new ix86_optimize_mode_switching[] array.
2449 (frndintxf2_floor, *fist<mode>2_floor_1): Change constants in call to
2450 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_FLOOR.
2451 Use new ix86_optimize_mode_switching[] array.
2452 (frndintxf2_ceil, *fist<mode>2_ceil_1): Change constants in call to
2453 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_CEIL.
2454 Use new ix86_optimize_mode_switching[] array.
2455 (frndintxf2_trunc): Change constants in call to
2456 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC.
2457 Use new ix86_optimize_mode_switching[] array.
2458 (frndintxf2_mask_pm): Change constants in call to
2459 assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_MASK_PM.
2460 Use new ix86_optimize_mode_switching[] array.
2462 (define_peephole2): Change constant from 17 to FLAGS_REG;
2464 2005-06-07 Richard Henderson <rth@redhat.com>
2467 * rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.
2469 2005-06-07 Dale Johannesen <dalej@apple.com>
2471 * tree-nested.c (finalize_nesting_tree_1): Disable
2472 warn_padded around layout_type call.
2474 2005-06-08 Zdenek Dvorak <dvorakz@suse.cz>
2476 * tree-ssa-loop-ivopts.c (rewrite_use_outer): Unshare the expression
2479 2005-06-07 Eric Christopher <echristo@redhat.com>
2481 * config/mips/predicates.md: Revert previous patch.
2483 2005-06-07 Jakub Jelinek <jakub@redhat.com>
2486 * tree.c (get_unwidened): Stop at NOP_EXPR/CONVERT_EXPR that convert
2489 2005-06-07 Diego Novillo <dnovillo@redhat.com>
2491 * tree-ssa-threadupdate.c (struct thread_stats_d): Declare.
2492 (thread_stats): New local variable.
2493 (redirect_edges): Increment count of threaded edges.
2494 (thread_through_all_blocks): Initialize thread_stats.
2495 Display number of threaded jumps if TDF_STATS is enabled.
2497 2005-06-07 Kazu Hirata <kazu@codesourcery.com>
2499 * sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
2500 the current bit index with no modulo.
2502 2005-06-07 Sebastian Pop <pop@cri.ensmp.fr>
2504 PR 18403 and meta PR 21861.
2505 * Makefile.in (tree-chrec.o): Depend on CFGLOOP_H and TREE_FLOW_H.
2506 * tree-chrec.c: Include cfgloop.h and tree-flow.h.
2507 (evolution_function_is_invariant_rec_p,
2508 evolution_function_is_invariant_p): New.
2509 (chrec_convert): Use an extra parameter AT_STMT for refining the
2510 information that is passed down to convert_step. Integrate the
2511 code that was in count_ev_in_wider_type.
2512 * tree-chrec.h (count_ev_in_wider_type): Removed.
2513 (chrec_convert): Modify its declaration.
2514 (evolution_function_is_invariant_p): Declared.
2515 (evolution_function_is_affine_p): Use evolution_function_is_invariant_p.
2516 * tree-flow.h (can_count_iv_in_wider_type): Renamed convert_step.
2517 (scev_probably_wraps_p): Declared.
2518 * tree-scalar-evolution.c (count_ev_in_wider_type): Removed.
2519 (follow_ssa_edge_in_rhs, interpret_rhs_modify_expr):
2520 Use an extra parameter AT_STMT for refining the information that is
2521 passed down to convert_step.
2522 (follow_ssa_edge_inner_loop_phi, follow_ssa_edge,
2523 analyze_scalar_evolution_1): Initialize AT_STMT with the current
2525 (instantiate_parameters_1): Don't know yet how to initialize AT_STMT.
2526 * tree-ssa-loop-ivopts.c (idx_find_step): Update the use of
2527 can_count_iv_in_wider_type to use convert_step.
2528 * tree-ssa-loop-niter.c (can_count_iv_in_wider_type_bound): Move
2529 code that is independent of the loop over the known iteration
2530 bounds to convert_step_widening, the rest is moved to
2531 proved_non_wrapping_p.
2532 (scev_probably_wraps_p): New.
2533 (can_count_iv_in_wider_type): Renamed convert_step.
2534 * tree-vrp.c (adjust_range_with_scev): Take an extra AT_STMT parameter.
2535 Use scev_probably_wraps_p for computing init_is_max.
2536 (vrp_visit_assignment): Pass the current analyzed statement to
2537 adjust_range_with_scev.
2538 (execute_vrp): Call estimate_numbers_of_iterations for refining the
2539 information provided by scev analyzer.
2541 2005-06-07 Eric Christopher <echristo@redhat.com>
2543 * config/mips/predicates.md (sleu_operand): Use
2544 IN_RANGE to specify range of operand.
2546 2005-06-07 Steven Bosscher <stevenb@suse.de>
2548 PR tree-optimization/21847
2549 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
2550 -fnon-call-exceptions, also mark statements inherently
2551 necessary if they may throw.
2553 2005-06-07 Adrian Straetling <straetling@de.ibm.com>
2555 * config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants.
2556 ("type"): Add "sem" to 'type' attribute.
2557 ("memory_barrier", "*memory_barrier", "sync_compare_and_swapdi",
2558 "sync_compare_and_swapsi", "sync_compare_and_swap_ccdi",
2559 "sync_compare_and_swap_ccsi", "*sync_compare_and_swap_ccdi",
2560 "*sync_compare_and_swap_ccsi"): New patterns.
2561 * config/s390/2064.md: ("z_sem"): New insn_reservation.
2562 * config/s390/2084.md: ("x_sem"): New insn_reservation.
2563 * config/s390/s390.c: (s390_compare_emitted): New global variable.
2564 (s390_emit_compare): Do not emit comparison again after cas.
2565 * config/s390/s390.h (s390_compare_emitted): Declare.
2567 2005-06-07 Kazu Hirata <kazu@codesourcery.com>
2569 * sbitmap.h (sbitmap_iterator, sbitmap_iter_init,
2570 sbitmap_iter_cond, sbitmap_iter_next): New.
2571 * bt-load.c, cfganal.c, combine.c, ddg.c, flow.c,
2572 modulo-sched.c, sbitmap.c, sched-rgn.c, tree-into-ssa.c,
2573 tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Update
2574 uses of EXECUTE_IF_SET_IN_SBITMAP to the new style.
2576 2005-06-07 Zdenek Dvorak <dvorakz@suse.cz>
2578 * tree-ssa-address.c: New file.
2579 * Makefile.in (tree-ssa-address.o): Add.
2580 * expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on
2581 INDIRECT_REFs. Handle TARGET_MEM_REFs.
2582 * tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs.
2583 * tree-flow.h (struct mem_address): New.
2584 (struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c.
2585 (create_mem_ref, addr_for_mem_ref, get_address_description,
2586 maybe_fold_tmr, multiplier_allowed_in_address_p,
2587 multiply_by_cost): Declare.
2588 * tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs.
2589 * tree-pretty-print.c (dump_generic_node): Ditto.
2590 * tree-ssa-loop-im.c (for_each_index): Ditto.
2591 * tree-ssa-loop-ivopts.c (may_be_unaligned_p,
2592 find_interesting_uses_address): Ditto.
2593 (rewrite_address_base, build_addr_strip_iref): Removed.
2594 (struct affine_tree_combination): Moved to tree-flow.h.
2595 (get_ref_tag, copy_ref_info): New functions.
2596 (rewrite_use_address): Produce TARGET_MEM_REFs.
2597 (tree_ssa_iv_optimize): Do not call update_ssa
2598 and rewrite_into_loop_closed_ssa.
2599 (tree_to_aff_combination): Use build_fold_addr_expr instead of
2600 build_addr_strip_iref.
2601 (unshare_aff_combination): New function.
2602 (fold_affine_sum): Removed.
2603 (get_computation_at): Use get_computation_aff. Unshare the result.
2604 (get_computation_aff, multiplier_allowed_in_address_p): New function.
2605 (multiply_by_cost): Exported.
2606 (get_address_cost): Use multiplier_allowed_in_address_p.
2607 * tree-ssa-operands.c (get_tmr_operands): New function.
2608 (get_expr_operands): Handle TARGET_MEM_REFs.
2609 * tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs.
2610 (build): Handle 7 arguments.
2611 (build7_stat): New function.
2612 * tree.def (TARGET_MEM_DEF): New.
2613 * tree.h (REF_ORIGINAL): Removed.
2614 (TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL,
2615 TMR_TAG, build7): New macros.
2616 (build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare.
2617 * tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr.
2618 * doc/c-tree.texi: Document TARGET_MEM_REF.
2619 * doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar.
2621 2005-06-07 Jakub Jelinek <jakub@redhat.com>
2624 * dwarf2out.c (add_loc_descr_op_piece): New function.
2625 (multiple_reg_loc_descriptor, concat_loc_descriptor,
2626 loc_descriptor): Use it.
2627 * var-tracking.c: Include regs.h and expr.h.
2628 (emit_note_insn_var_location): Skip over pieces where offset
2629 is smaller than previous offset plus previous piece mode size.
2630 Optimize adjacent hard registers or memory locations.
2631 * Makefile.in (var-tracking.o): Depend on $(REGS_H) and $(EXPR_H).
2633 2005-06-07 Richard Guenther <rguenth@gcc.gnu.org>
2635 * c-typeck.c (c_finish_if_stmt): Use void_type_node as type
2637 * gimplify.c (gimplify_cond_expr): No need to fix up the
2640 2005-06-07 Richard Guenther <rguenth@gcc.gnu.org>
2642 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Fix
2645 2005-06-07 Geoffrey Keating <geoffk@apple.com>
2647 * config/rs6000/host-darwin.c (segv_handler): Widen the possible
2648 'stwux' instructions that are considered to be stack decrements.
2650 * rtlanal.c (subreg_offset_representable_p): Handle objects
2653 2005-06-06 Uros Bizjak <uros@kss-loka.si>
2655 * mode-switching.c (optimize_mode_switching): Fix n_exprs parameter
2656 in call to pre_edge_lcm.
2658 2005-06-06 Kaz Kojima <kkojima@gcc.gnu.org>
2660 * config/sh/linux-unwind.h (SH_DWARF_FRAME_XD0): Remove for SH5.
2661 (SH_DWARF_FRAME_PR, SH_DWARF_FRAME_GBR, SH_DWARF_FRAME_MACL)
2662 (SH_DWARF_FRAME_MACH, SH_DWARF_FRAME_PC, SH_DWARF_FRAME_FPUL):
2664 (SH_DWARF_FRAME_FP0, SH_DWARF_FRAME_FPSCR): Define to the correct
2665 dwarf register number for SHmedia.
2666 (shmedia_fallback_frame_state): New.
2667 (MD_FALLBACK_FRAME_STATE_FOR): Define to it for SH5.
2669 * config/sh/linux.h (FUNCTION_PROFILER): Provide SHMEDIA version.
2671 2005-06-06 Gabriel Dos Reis <gdr@integrable-solutions.net>
2673 * c-lex.c (lex_string): Use XOBFINISH.
2674 * collect2.c (extract_string, dump_file): Likewise.
2675 * dbxout.c (dbxout_finish_complex_stabs): Likewise.
2676 * gcc.c (init_spec, build_search_list, convert_filename,
2677 set_collect_gcc_options, do_spec_2, do_spec_1, main): Likewise.
2678 * genpreds.c (write_predicate_subfunction): Likewise.
2679 * genflags.c (main): Likewise.
2680 * read-rtl.c (mode_attr_index, apply_macro_to_string,
2681 join_c_conditions, read_quoted_string, read_braced_string,
2682 read_rtx_1): Likewise.
2683 * stringpool.c (ggc_alloc_string): Likewise.
2684 * tlink.c (obstack_fgets, recompile_files): Likewise.
2686 2005-06-06 Jakub Jelinek <jakub@redhat.com>
2688 * intl.h (G_): New macro.
2689 * rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
2690 instead of msgid for argument name.
2691 * tree-ssa.c (warn_uninit): Likewise.
2692 * c-parser.c (c_parser_error): Likewise.
2693 * config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
2694 * config/darwin-c.c (BAD): Likewise.
2695 * config/c4x/c4x-c.c (BAD): Likewise.
2696 * c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
2697 * c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
2698 * c-common.c (c_parse_error): Likewise.
2699 * diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
2700 warning0, pedwarn, error, sorry, fatal_error, internal_error):
2702 (fnotice): Use cmsgid instead of msgid for argument name.
2703 * gcov.c (fnotice): Likewise.
2704 * protoize.c (notice): Likewise.
2705 * final.c (output_operand_lossage): Likewise.
2706 * gcc.c (fatal, notice): Likewise.
2707 (error): Use gmsgid instead of msgid for argument name.
2708 * collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
2709 of msgid for argument name.
2710 (error): Use gmsgid instead of msgid for argument name.
2711 * c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
2713 * c-typeck.c (readonly_error, convert_for_assignment): Likewise.
2714 * tree-inline.c (inline_forbidden_p_1): Likewise.
2715 * ABOUT-GCC-NLS: Require gettext 0.14.5 or later. Mention the new
2716 conventions for marking translations.
2717 * doc/install.texi: Mention gettext 0.14.5 or later requirement.
2719 * tree-chrec.c (reset_evolution_in_loop): Use build3 instead of
2722 * fold-const.c (operand_equal_p): Don't return 1, if element
2723 chains for 2 VECTOR_CSTs are not the same length.
2726 * fold-const.c (fold_ternary) <case BIT_FIELD_REF>: Don't crash if
2727 not all VECTOR_CST elements are given.
2729 * combine.c (try_combine): Use hard_regno_nregs array instead of
2730 HARD_REGNO_NREGS macro.
2731 * config/rs6000/rs6000.c (rs6000_split_multireg_move,
2732 rs6000_register_move_cost, rs6000_memory_move_cost): Likewise.
2733 * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
2735 2005-06-06 Daniel Berlin <dberlin@dberlin.org>
2737 * tree-ssa-reassoc.o: New.
2738 (OBJS-common): Add tree-ssa-reassoc.o
2739 * timevar.def: Add TV_TREE_REASSOC
2740 * tree-optimize.c (pass_reassoc): Add call.
2741 * tree-pass.h (pass_reassoc): Add.
2742 * tree-ssa-reassoc.c: New file.
2744 2005-06-06 Eric Christopher <echristo@redhat.com>
2747 * expr.c (do_store_flag): Remove check for non-negative BRANCH_COST.
2749 2005-06-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2751 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard with
2752 HAVE_GAS_MAX_SKIP_P2ALIGN.
2753 (HAVE_AS_DWARF2_DEBUG_LINE): Remove.
2755 2005-06-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2757 * Makefile.in (mips-tfile.o): Add $(srcdir)/../include prefix to
2758 getopt.h dependency.
2759 (mips-tdump.o): Likewise.
2761 2005-06-06 Jan Hubicka <jh@suse.cz>
2763 * predict.c (tree_predict_edge): Don't drop useless predictions;
2764 check that it is not called too late in the game.
2765 (gate_estimate_probability): New gate.
2766 (pass_profile): Gate.
2767 * tree-mudflap.c (mf_build_check_statement_for): Do not drop
2768 predictions; update CFG instead.
2769 * cfgrtl.c (rtl_verify_flow_info): Check that predcitions are consumed.
2771 2005-06-06 Jie Zhang <jie.zhang@analog.com>
2773 * config.gcc (bfin*-uclinux*): New.
2774 * config/bfin/uclinux.h: New file.
2776 2005-06-06 Ben Elliston <bje@au.ibm.com>
2778 * doc/md.texi (Insn Splitting): Fix some wording.
2780 2005-06-05 David Edelsohn <edelsohn@gnu.org>
2782 * config/rs6000/rs6000.c (rs6000_emit_swdivsf): New function.
2783 (rs6000_emit_swdivdf): New function.
2784 * config/rs6000/rs6000.md (fres): New pattern.
2785 (divsf3): Add approximation through rs6000_emit_swdivsf.
2786 (fred): New pattern.
2787 (divdf3): Add approximation through rs6000_emit_swdivdf.
2788 * config/rs6000/rs6000-protos.h (rs6000_emit_swdivsf): Declare.
2789 (rs6000_emit_swdivdf): Declare.
2790 * config/rs6000/rs6000.opt (mswdiv): New option.
2791 * doc/invoke.texi (RS/6000 and PowerPC Options): Document mswdiv.
2793 2005-06-05 Zdenek Dvorak <dvorakz@suse.cz>
2795 PR tree-optimization/21846
2796 * tree-cfg.c (replace_uses_by): Update information stored at loops.
2797 * tree-flow.h (substitute_in_loop_info): Declare.
2798 * tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
2799 Ensure that chrec_dont_know and chrec_known have a type.
2800 * tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
2802 2005-06-05 Steven Bosscher <stevenb@suse.de>
2804 * config/i386/i386.c (x86_use_loop): Remove.
2805 * config/i386/i386.h (x86_use_loop): Remove extern decl.
2806 (TARGET_USE_LOOP): Remove.
2807 * config/i386/i386.md (doloop_end, doloop_end_internal): Remove.
2808 Also remove related define_splits.
2810 2005-06-05 Dorit Nuzman <dorit@il.ibm.com>
2812 * tree-flow.h (stmt_ann_d): Move aux to ...
2813 (tree_ann_common_d): ... here.
2814 * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
2815 move_computations_stmt, schedule_sm): Update references to
2817 * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
2818 * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
2819 call to set_stmt_info.
2820 (vect_transform_loop): Likewise.
2821 * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info):
2824 * tree-vect-analyze.c (vect_analyze_scalar_cycles): Made void instead of
2826 (vect_mark_relevant): Takes two additional arguments - live_p and
2827 relevant_p. Set RELEVANT_P and LIVE_P according to these arguments.
2828 (vect_stmt_relevant_p): Differentiate between a live stmt and a
2829 relevant stmt. Return two values = live_p and relevant_p.
2830 (vect_mark_stmts_to_be_vectorized): Call vect_mark_relevant and
2831 vect_stmt_relevant_p with additional arguments. Phis are no longer
2832 put into the worklist (analyzed seperately in analyze_scalar_cycles).
2833 (vect_determine_vectorization_factor): Also check for LIVE_P, because a
2834 stmt that is marked as irrelevant and live, cause it's only used out
2835 side the loop, may need to be vectorized (e.g. reduction).
2836 (vect_analyze_operations): Examine phis. Call
2837 vectorizable_live_operation for for LIVE_P stmts. Check if
2839 (vect_analyze_scalar_cycles): Update documentation. Don't fail
2840 vectorization - just classify the scalar cycles created by the loop
2841 phis. Call vect_is_simple_reduction.
2842 (vect_analyze_loop): Call to analyze_scalar_cycles moved earlier.
2843 * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
2844 call to set_stmt_info.
2845 (vect_get_vec_def_for_operand): Code reorganized - the code that
2846 classifies the type of use was factored out to vect_is_simple_use.
2847 (vectorizable_store, vect_is_simple_cond): Call vect_is_simple_use with
2848 additional arguments.
2849 (vectorizable_assignment): Likewise. Also make sure the stmt is relevant
2850 and computes a loop_vec_def.
2851 (vectorizable_operation, vectorizable_load, vectorizable_condition):
2853 (vectorizable_live_operation): New.
2854 (vect_transform_stmt): Handle LIVE_P stmts.
2855 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new fields
2856 STMT_VINFO_LIVE_P and STMT_VINFO_DEF_TYPE.
2857 (new_loop_vec_info, destroy_loop_vec_info): Also handle phis.
2858 (vect_is_simple_use): Determine the type of the def and return it
2859 in a new function argument. Consider vect_reduction_def and
2860 vect_induction_def, but for now these are not supported.
2861 (vect_is_simple_reduction): New. Empty for now.
2862 * tree-vectorizer.h (vect_def_type): New enum type.
2863 (_stmt_vec_info): Added new fields - live and _stmt_vec_info.
2864 (STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New accessor macros.
2865 (vect_is_simple_use): New arguments added to function declaration.
2866 (vect_is_simple_reduction): New function declaration.
2867 (vectorizable_live_operation): New function declaration.
2869 * tree-vect-analyze.c (vect_can_advance_ivs_p): Add debug printout.
2870 (vect_can_advance_ivs_p): Likewise.
2871 * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Likewise.
2873 2005-06-05 Eric Christopher <echristo@redhat.com>
2875 * config/mips/mips.c (mips_rtx_costs): Remove unused variable.
2877 2005-06-05 Hans-Peter Nilsson <hp@bitrange.com>
2880 * config/mmix/mmix.md ("*movdicc_real_foldable")
2881 ("*movdfcc_real_foldable", "*bCC_foldable")
2882 ("*bCC_inverted_foldable"): Specify DImode for register being
2885 2005-06-04 Roger Sayle <roger@eyesopen.com>
2887 * reg-stack.c (struct block_info_def): Correct grammar typo.
2888 (compensate_edge): Clean-up. Perform as little work as possible
2889 when src and dest stacks match. Avoid modifying block_info.
2890 Reorder and simplify assertion checks. Avoid unnecessary copying
2891 of regstack structure.
2892 (convert_regs_1): Set the done flag here...
2893 (convert_regs_2): ... instead of here.
2895 2005-06-04 Dale Johannesen <dalej@apple.com>
2897 * config/rs6000/rs6000.c (no_global_regs_above): New.
2898 (rs6000_emit_prologue): Use it; cosmetic formatting fixes.
2899 (rs6000_emit_epilogue): Use it; cosmetic formatting fixes.
2900 (rs6000_conditional_register_usage): Don't put Darwin PIC
2901 register in global_regs.
2902 (rs6000_stack_info): Don't set lr_save_p just because Darwin
2904 (rs6000_emit_prologue): Save LR in R0 around Darwin PIC setup,
2905 if not done by lr_save_p.
2906 * config/rs6000/rs6000.md (insnv1_internal1): Back out 05-18 patch.
2907 Use rotate instead of ashift.
2908 (call_indirect_nonlocal_sysv): Prefer CTR to LR.
2909 (call_value_indirect_nonlocal_sysv): Ditto.
2911 2005-06-04 Jan Hubicka <jh@suse.cz>
2913 * cgraphunit.c (cgraph_reset_node): Break out from ...
2914 (cgraph_finalize_function): ... here.
2915 (cgraph_finalize_compilation_unit): Reset nodes where backend
2918 2005-06-04 Richard Henderson <rth@redhat.com>
2921 * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
2922 until we've passed initial ldgp.
2924 2005-06-04 Daniel Berlin <dberlin@dberlin.org>
2926 * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
2927 * dwarf2out.c (loc_descriptor_from_tree_1): Ditto.
2928 * expr.c (expand_var): Ditto.
2929 * function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too.
2930 * gimplify.c (gimplify_decl_expr): Ditto.
2931 (gimplify_expr): Ditto.
2932 * tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P.
2933 * tree.c (value_expr_for_decl): New.
2934 (print_value_expr_statistics): New.
2935 (init_ttree): Init value_expr_for_decl.
2936 (decl_value_expr_lookup): New.
2937 (decl_value_expr_insert): Ditto.
2938 (copy_node_stat): Copy DECL_VALUE_EXPR status.
2939 * tree.h (DECL_VALUE_EXPR): Use hashtable.
2940 (SET_DECL_VALUE_EXPR): New.
2941 (DECL_HAS_VALUE_EXPR_P): New.
2943 2005-06-04 Steven Bosscher <stevenb@suse.de>
2945 * lcm.c: Move all mode-switching related functions from here...
2946 * mode-switching.c: ...to this new file.
2947 * doc/passes.texi: Update accordingly.
2949 * basic-block.h (label_value_list): Remove extern decl.
2950 * cfgrtl.c (label_value_list): Remove.
2951 (can_delete_label_p): Don't look at it.
2952 * cfgcleanup.c (cleanup_cfg): Don't free it.
2954 * common.opt: Don't refer to non-existing flag_alias_check.
2956 2005-06-04 David Edelsohn <edelsohn@gnu.org>
2958 * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power5.
2960 2005-06-04 Kazu Hirata <kazu@codesourcery.com>
2962 * function.c (prologue, epilogue, sibcall_epilogue): Change
2963 their types to VEC(int,heap)*.
2964 (free_after_compilation): Free the three vectors above.
2965 (init_function_for_compilation, record_insns, contains,
2966 prologue_epilogue_contains, sibcall_epilogue_contains,
2967 reposition_prologue_and_epilogue_notes): Use VEC instead of
2968 VARRAY. (init_function_once): Remove.
2969 * function.h: Remove the prototype for init_function_once.
2970 * toplev.c (backend_init): Don't call init_function_once.
2972 2005-06-04 Jan Hubicka <jh@suse.cz>
2974 * predict.c (tree_predict_edge): Do not predict entry edge and
2975 single succestor edge.
2977 2005-06-04 Joseph S. Myers <joseph@codesourcery.com>
2980 * c-typeck.c (push_init_level): Don't pop levels without braces if
2983 2005-06-03 Sebastian Pop <pop@cri.ensmp.fr>
2985 * tree-data-ref.c (compute_self_dependence): New function.
2986 (compute_all_dependences): Use it.
2988 2005-06-03 Geoffrey Keating <geoffk@apple.com>
2990 * c-parser.c (c_parser_parms_declarator): Don't use chainon().
2991 (c_parser_expr_list): Don't use chainon().
2993 * config/darwin.h (LINK_SPEC): Pass -syslibroot to linker
2994 when -isysroot passed.
2996 2005-06-03 Joseph S. Myers <joseph@codesourcery.com>
2999 * c-decl.c (start_function): Restore label_context_stack_se and
3000 label_context_stack_vm if returning with an error.
3002 2005-06-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
3004 * configure.ac: Check declaration for asprintf, needed by
3006 * configure: Regenerate.
3007 * config.in: Likewise.
3009 2005-06-03 Diego Novillo <dnovillo@redhat.com>
3011 * tree-ssa-dom.c (record_edge_info): Use last_basic_block to
3012 allocate info array.
3013 * tree-vrp.c (extract_range_from_unary_expr): Set resulting
3014 range to varying in cast expressions that change
3017 2005-06-03 Eric Christopher <echristo@redhat.com>
3019 * config/mips/mips.opt: Add RejectNegative to divide-breaks and
3022 2005-06-03 Jan Hubicka <jh@suse.cz>
3024 * basic-block.h (remove_predictions_associated_with_edge): Declare.
3025 * cfg.c (remove_edge): Use it.
3026 * predict.c (remove_predictions_associated_with_edge): New function.
3028 2005-06-03 Pat Haugen <pthaugen@us.ibm.com>
3030 * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
3031 Clear call_realy_used_regs[r2] when ABI_AIX.
3033 2005-06-03 Richard Guenther <rguenth@gcc.gnu.org>
3036 * fold-const.c (fold_binary): Fix type mismatches in folding
3039 2005-06-03 Kazu Hirata <kazu@codesourcery.com>
3041 * cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
3044 2005-06-03 Joseph S. Myers <joseph@codesourcery.com>
3046 * collect2.c (maybe_unlink): Use unlink_if_ordinary.
3048 2005-06-02 Bernd Schmidt <bernd.schmidt@analog.com>
3050 * reload1.c (reload): Revert my previous patch.
3052 2005-06-03 Nick Clifton <nickc@redhat.com>
3054 * config/arm/semi.h (ASM_SPEC): Fix typo passing -mfloat-abi to
3057 2005-06-03 Kazu Hirata <kazu@codesourcery.com>
3059 PR tree-optimization/21849
3060 * tree-ssa-copy.c (dump_copy_of): Call sbitmap_zero.
3062 2005-06-02 Richard Henderson <rth@redhat.com>
3064 * Makefile.in (tree-vect-generic.o): New.
3065 (OBJS-common, GTFILES, s-gtype): Add it.
3066 * tree-complex.c (build_replicated_const, vector_inner_type,
3067 vector_last_type, vector_last_nunits, build_word_mode_vector_type,
3068 elem_op_func, tree_vec_extract, do_unop, do_binop, do_plus_minus,
3069 do_negate, expand_vector_piecewise, expand_vector_parallel,
3070 expand_vector_addition, expand_vector_operation,
3071 type_for_widest_vector_mode, expand_vector_operations_1,
3072 gate_expand_vector_operations, expand_vector_operations,
3073 pass_lower_vector_ssa): Move to tree-vect-generic.c.
3074 (tree_lower_complex): Rename from tree_lower_operations.
3075 (pass_lower_complex): Rename from pass_pre_expand.
3076 * tree-vect-generic.c: New file.
3077 * tree-pass.h (pass_lower_complex): Rename from pass_pre_expand.
3078 (pass_lower_vector): New.
3079 * tree-optimize.c (init_tree_optimization_passes): Update to match.
3081 2005-06-02 Richard Henderson <rth@redhat.com>
3083 * modulo-sched.c (doloop_register_get): Protect against
3084 doloop_end not defined.
3086 2005-06-02 Kazu Hirata <kazu@codesourcery.com>
3088 * config/sh/sh.c (general_movsrc_operand,
3089 general_movdst_operand, arith_reg_operand, arith_reg_dest,
3090 logical_reg_operand, int_gpr_dest, fp_arith_reg_operand,
3091 fp_arith_reg_dest, arith_operand, arith_reg_or_0_operand,
3092 xor_operand, cmp_operand, logical_operand, and_operand,
3093 fpscr_operand, fpul_operand, symbol_ref_operand,
3094 commutative_float_operator, noncommutative_float_operator,
3095 unary_float_operator, binary_float_operator,
3096 binary_logical_operator, equality_comparison_operator,
3097 greater_comparison_operator, less_comparison_operator,
3098 shift_operator, logical_operator, target_reg_operand,
3099 target_operand, mextr_bit_offset, extend_reg_operand,
3100 trunc_hi_operand, extend_reg_or_0_operand, minuend_operand,
3101 general_extend_operand, ua_address_operand,
3102 cache_address_operand, inqhi_operand, sh_rep_vec, sh_1el_vec,
3103 sh_const_vec, ua_offset, sh_register_operand, cmpsi_operand,
3104 shift_count_reg_operand, shift_count_operand,
3105 unaligned_load_operand): Move to ...
3106 * config/sh/predicates.md: ... here.
3107 * config/sh/sh.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES):
3110 2005-06-02 Andrew Pinski <pinskia@physics.uc.edu>
3112 * tree.c (build_common_builtin_nodes): Fix the return type on
3115 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
3117 * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Remove.
3118 (find_interesting_uses_address): Use build_fold_addr_expr instead.
3119 (strip_offset_1): Likewise.
3120 (tree_to_aff_combination): Likewise.
3122 2005-06-02 DJ Delorie <dj@redhat.com>
3124 * convert.c (convert_to_pointer): Avoid recursion if no conversion
3127 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
3129 * tree-chrec.c (chrec_fold_plus_1): Ensure we build
3130 binary operations with the correct types.
3131 * tree-ssa-loo-ivopts.c (idx_find_step): Use sizetype
3132 for all computation.
3134 2005-06-02 Kazu Hirata <kazu@codesourcery.com>
3136 * tree-vrp.c, config/arm/arm.md, config/arm/arm1020e.md,
3137 config/rs6000/rs6000.md: Fix comment typos. Follow splling
3139 * doc/install.texi: Fix a typo.
3141 2005-06-02 Jan Hubicka <jh@suse.cz>
3143 * cgraphunit.c (cgraph_function_and_variable_visibility): Extern
3144 inline functions are not local.
3146 2005-06-02 Kazu Hirata <kazu@codesourcery.com>
3148 * gimplify.c (gimplify_ctx): Change the type of case_labels to
3150 (gimplify_switch_expr, gimplify_case_label_expr): Adjust uses
3153 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
3155 * c-typeck.c (build_indirect_ref): Build INDIRECT_REF
3158 2005-06-02 Ulrich Weigand <uweigand@de.ibm.com>
3160 * config/s390/s390.c (s390_add_execute): Do not handle out-of-pool
3162 (s390_dump_pool): Likewise.
3163 (s390_mainpool_start, s390_mainpool_finish): Likewise.
3164 (s390_chunkify_start): Likewise.
3165 (s390_dump_execute): Remove.
3166 (s390_reorg): Handle out-of-pool execute templates.
3168 2005-06-02 Adrian Straetling <straetling@de.ibm.com>
3170 * optabs.c: (expand_bool_compare_and_swap): Emit barrier after
3173 2005-06-02 Jan Hubicka <jh@suse.cz>
3175 * cgraph.c (cgraph_node): Maintain master clones.
3176 (cgraph_remove_node): Likewise.
3177 (availability_names): New static variable.
3178 (dump_cgraph_node): Dump availability.
3179 (dump_cgraph_varpool_node): Likewise.
3180 (cgraph_is_master_clone, cgraph_master_clone,
3181 cgraph_function_body_availability,
3182 cgraph_variable_initializer_availability): New functions.
3183 * cgraph.h (availability): New enum.
3184 (struct cgraph_node): Add master_clone.
3185 (cgraph_is_master_clone, cgraph_master_clone,
3186 cgraph_function_body_availability,
3187 cgraph_variable_initializer_availability): Declare.
3188 * cgraphunit.c (cgraph_expand_function): Setcgraph_function_flags_ready.
3189 (cgraph_remove_unreachable_nodes): Remove unreachable nodes.
3190 * ipa-inline.c (cgraph_decide_inlining): Do not call
3191 cgraph_remove_unreachable_nodes.
3193 * cgraphunit.c (cgraph_function_and_variable_visibility): Fix typo in
3196 2005-06-02 Diego Novillo <dnovillo@redhat.com>
3199 * tree-vrp.c (nonnull_arg_p): New.
3200 (get_value_range): Call it.
3202 2005-06-02 Eric Christopher <echristo@redhat.com>
3204 * config/mips/mips.h (processor_type): Remove PROCESSOR_DEFAULT,
3206 (mips_rtx_cost_data): New datatype.
3207 (MEMORY_MOVE_COST): Use data from structure.
3208 (BRANCH_COST): Ditto.
3209 (LOGICAL_OP_NON_SHORT_CIRCUIT): Define to zero.
3210 * config/mips/mips.md (cpu): Rework for processor_type changes.
3211 * config/mips/mips.c (mips_cost): New variable.
3212 (DEFAULT_COSTS): Define.
3213 (mips_rtx_cost_data): New.
3214 (mips_rtx_costs): Use. Minor formatting changes. Use COSTS_N_INSNS
3215 for NEG cost. Add support for FLOAT, UNSIGNED_FLOAT, FIX,
3216 FLOAT_EXTEND, FLOAT_TRUNCATE, and SQRT.
3217 (override_options): Set cost data.
3218 (mips_register_move_cost): Formatting changes.
3219 (bdesc_arrays): Use PROCESSOR_MAX.
3220 (mips_init_builtins): Ditto.
3222 2005-06-02 Diego Novillo <dnovillo@redhat.com>
3225 * doc/invoke.texi: Document -ftree-vrp.
3227 2005-06-02 Dorit Nuzman <dorit@il.ibm.com>
3229 PR tree-optimization/21734
3230 * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop): Use the
3231 phi_result when current_def is not available.
3232 (slpeel_update_phi_nodes_for_guard1): Don't fail if current_def is not
3235 2005-06-02 David Edelsohn <edelsohn@gnu.org>
3237 * config/rs6000/rs6000.c (rs6000_insn_valid_within_doloop): New.
3238 (TARGET_INSN_VALID_WITHIN_DOLOOP): Define.
3240 2005-06-02 Diego Novillo <dnovillo@redhat.com>
3242 * tree-vrp.c (has_assert_expr, maybe_add_assert_expr): Remove.
3244 2005-06-02 Jan Hubicka <jh@suse.cz>
3246 * cgraph.c (dump_cgraph_node): Print new flags.
3247 (dump_cgraph_varpool_node): Likewise.
3248 (decide_variable_is_needed): Initialize externally_visible flag.
3249 * cgraph.h (cgraph_local_info): Add externally_visible flag.
3250 (cgraph_varpool_node): Likewise.
3251 (cgraph_function_flags_ready): Declare.
3252 * cgraph.c (cgraph_mark_local_functions): Rename to ...
3253 (cgraph_function_and_variable_visibility) ... this one; handle
3254 externally_visible flags.
3255 (decide_is_function_needed): Set externally_visible flag.
3256 (cgraph_finalize_function): Deal properly with early cleanups.
3257 (cgraph_optimize): Update call of
3258 cgraph_function_and_variable_visibility.
3260 2005-06-02 Steven Bosscher <stevenb@suse.de>
3261 Mostafa Hagog <mustafa@il.ibm.com>
3263 * cfgloop.h (doloop_condition_get): Make external.
3264 * loop-doloop.c (doloop_condition_get): Generalize to make it
3265 usable in modulo-sched.c.
3266 * modulo-sched.c (doloop_register_get): Use
3267 doloop_condition_get instead of duplicating it.
3269 2005-06-02 Bernd Schmidt <bernd.schmidt@analog.com>
3271 * reload1.c (reload): Undo 2005-04-20 change. Make sure we detect
3272 the correct set of init_insns that need deletion.
3273 * local-alloc.c (update_equiv_regs): When substituting sole definition
3274 into sole use of a reg, delete it from liveness information.
3276 2005-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
3278 * config/sh/sh.h (TARGET_FPU_DOUBLE): Use MASK_SH4.
3280 2005-06-01 Diego Novillo <dnovillo@redhat.com>
3282 PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090
3283 PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
3284 * fold-const.c (invert_tree_comparison): Make extern.
3285 * tree-flow.h (enum value_range_type): Move to tree-ssa-propagate.
3286 (struct value_range_def): Limewise.
3287 (get_value_range): Remove.
3288 (dump_value_range): Remove.
3289 (dump_all_value_ranges): Remove.
3290 (debug_all_value_ranges): Remove.
3291 (vrp_evaluate_conditional): Declare.
3292 * tree-ssa-propagate.c (struct prop_stats_d): Add field
3294 (substitute_and_fold): Add argument use_ranges_p.
3296 If use_ranges_p is true, call fold_predicate_in to fold
3297 predicates using range information.
3298 Ignore ASSERT_EXPRs.
3299 Change debugging output to only show statements that have been
3301 (replace_phi_args_in): Move debugging output code from
3302 substitute and fold.
3303 (fold_predicate_in): New local function.
3304 * tree-ssa-propagate.h (enum value_range_type): Move from
3306 (struct value_range_d): Likewise.
3308 (value_range_t): Rename from value_range.
3309 * tree-vrp.c (found_in_subgraph): Rename from found.
3310 (get_opposite_operand): Remove.
3311 (struct assert_locus_d): Declare.
3312 (assert_locus_t): Declare.
3313 (need_assert_for): Declare.
3314 (asserts_for): Declare.
3315 (blocks_visited): Declare.
3316 (vr_value): Declare.
3317 (set_value_range): Add argument 'equiv'.
3318 Don't drop to VARYING ranges that cover all values in the
3320 Make deep copy of equivalence set 'equiv'.
3321 (copy_value_range): New local function.
3322 (set_value_range_to_undefined): New local function.
3323 (compare_values): Return -2 if either value has overflowed.
3324 (range_includes_zero_p): New local function.
3325 (extract_range_from_assert): Flip the predicate code if the
3326 name being asserted is on the RHS of the predicate.
3327 Avoid creating unnecessary symbolic ranges if the comparison
3328 includes another name with a known numeric range.
3329 Update the equivalnce set of the new range when asserting
3331 (extract_range_from_ssa_name): Update the equivalence set of
3332 the new range with VAR.
3333 (extract_range_from_binary_expr): Also handle TRUTH_*_EXPR.
3334 If -fwrapv is used, set the resulting range to VARYING if the
3335 operation overflows. Otherwise, use TYPE_MIN_VALUE and
3336 TYPE_MAX_VALUE to represent -INF and +INF.
3337 Fix handling of *_DIV_EXPR.
3338 (extract_range_from_unary_expr): Handle MINUS_EXPR and
3339 ABS_EXPR properly by switching the range around if necessary.
3340 (extract_range_from_comparison): New local function.
3341 (extract_range_from_expr): Call it.
3342 (adjust_range_with_scev): Do not adjust the range if using
3343 wrapping arithmetic (-fwrapv).
3344 (dump_value_range): Also show equivalence set.
3345 Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE.
3346 (build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR.
3347 (infer_value_range): Change return value to bool.
3348 Add arguments 'comp_code_p' and 'val_p'.
3349 Do not attempt to infer ranges from statements that may throw.
3350 Store the comparison code in comp_code_p.
3351 Store the other operand to be used in the predicate in val_p.
3352 (dump_asserts_for): New.