1 2005-05-02 Joseph S. Myers <joseph@codesourcery.com>
4 * c-tree.h (C_DECL_BUILTIN_PROTOTYPE): New.
5 * c-decl.c (current_function_prototype_built_in,
6 current_function_prototype_arg_types): New.
7 (merge_decls): Keep source location of prototype followed by
8 nonprototype declaration. Update C_DECL_BUILTIN_PROTOTYPE.
9 (builtin_function): Set C_DECL_BUILTIN_PROTOTYPE.
10 (start_function): Always set current_function_prototype_locus,
11 current_function_prototype_built_in and
12 current_function_prototype_arg_types. Check for external
13 prototype whether or not visible for external function and set
14 current_function_prototype_arg_types accordingly.
15 (store_parm_decls_oldstyle): Use
16 current_function_prototype_arg_types for checking old-style
17 definition against prototype. Give warnings only if
18 current_function_prototype_built_in).
20 2005-05-02 Daniel Jacobowitz <dan@codesourcery.com>
22 * ggc.h (ggc_alloc_zone_pass_stat): New macro.
23 (ggc_alloc_zone_stat): Don't define.
24 * ggc-zone.c (ggc_alloc_typed_stat, ggc_alloc_stat): Use
25 ggc_alloc_zone_pass_stat.
26 * rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Likewise.
27 * tree.c (make_node_stat, copy_node_stat, make_tree_binfo_stat)
28 (make_tree_vec_stat, tree_cons_stat, build1_stat): Likewise.
30 2005-05-02 Daniel Jacobowitz <dan@codesourcery.com>
32 * calls.c (expand_call): Handle current_function_pretend_args_size
33 when checking for sibcalls.
35 2005-05-02 Kazu Hirata <kazu@cs.umass.edu>
37 PR tree-optimization/21294
38 * tree-vrp.c (vrp_expr_computes_nonzero): New.
39 (extract_range_from_expr): Call vrp_expr_computes_nonzero.
41 2005-05-02 Janis Johnson <janis187@us.ibm.com>
44 * gcov-io.h: Declare gcov external functions hidden.
46 2005-05-02 Kazu Hirata <kazu@cs.umass.edu>
48 * tree-ssa-uncprop.c (equiv_hash_elt, remove_equivalence,
49 record_equiv, tree_ssa_uncprop, uncprop_into_successor_phis):
50 Use VEC instead of VARRAY.
53 * tree-ssa-sink.c (nearest_common_dominator_of_uses): Factor
56 2005-05-02 Paolo Bonzini <bonzini@gnu.org>
58 * c-common.c (resolve_overloaded_builtin): Forward to target
59 hook for BUILT_IN_MD built-ins.
60 * c-typeck.c (finish_call_expr): Call resolve_overloaded_builtin
61 for all types of built-in.
62 * target-def.h (TARGET_RESOLVE_OVERLOADED_BUILTIN): New. Use it
63 in the definition of the target hooks struct.
64 * target.h (struct gcc_target): Add resolve_overloaded_builtin.
65 * config/rs6000/altivec.h: Rewritten.
66 * config/rs6000/rs6000-c.c (struct altivec_builtin_types,
67 altivec_resolve_overloaded_builtin, altivec_build_resolved_builtin,
68 rs6000_builtin_type, rs6000_builtin_type_compatible,
69 altivec_overloaded_builtins, rs6000_builtin_type,
70 rs6000_builtin_type_compatible): New.
71 * config/rs6000/rs6000.c (rs6000_builtin_types, rs6000_builtin_decls):
73 (def_builtin): Turn into a function. Check for duplicates and store
74 the builtin into rs6000_builtin_decls.
75 (bdesc_3arg, bdesc_dst, bdesc_altivec_preds, bdesc_2arg,
76 bdesc_1arg): Add overloaded builtins.
77 (altivec_expand_builtin): Check for unresolved overloaded builtins,
78 do not support ALTIVEC_COMPILETIME_ERROR.
79 (rs6000_init_builtins): Add opaque 128-bit vector, and internal
80 nodes to represent front-end types.
81 (altivec_init_builtins, rs6000_common_init_builtins): Create builtins
82 with opaque arguments and/or return values.
83 * config/rs6000/rs6000.h (enum rs6000_builtins): Remove
84 ALTIVEC_COMPILETIME_ERROR and add Altivec overloaded builtins.
85 (rs6000_builtin_type_index): New.
86 (is_ev64_opaque_type): Rename to...
87 (rs6000_is_opaque_type): ... this.
88 (rs6000_cpu_cpp_builtins): Install the resolve_overloaded_builtin
91 2005-05-02 Kazu Hirata <kazu@cs.umass.edu>
93 * function.c (reorder_blocks, reorder_blocks_1): Use VEC
96 2005-05-02 Nathan Sidwell <nathan@codesourcery.com>
97 Bernd Schmidt <bernd.schmidt@analog.com>
99 * config/bfin/bfin.c (emit_link_insn, effective_address_32bit_p,
100 print_address_operand, print_operand, legitimize_pic_address,
101 asm_conditional_branch, bfin_gen_compare, output_push_multiple,
102 output_pop_multiple): Use gcc_assert or gcc_unreachable as
104 * config/bfin/bfin.md (movsf splitter, beq, bne): Likewise.
106 2005-05-02 Dorit Naishlos <dorit@il.ibm.com>
108 * doc/passes.texi: Document vectorization pass.
110 2005-05-02 Kazu Hirata <kazu@cs.umass.edu>
112 * tree-scalar-evolution.c (get_exit_conditions_rec,
113 select_loops_exit_conditions,
114 number_of_iterations_for_all_loops,
115 analyze_scalar_evolution_for_all_loop_phi_nodes,
116 scev_analysis): Use VEC instead of VARRAY.
118 2005-05-02 Michael Matz <matz@suse.de>
121 * c-common.c (c_common_nodes_and_builtins): Create global null_node.
122 (warn_strict_null_sentinel): Define.
123 (check_function_sentinel): Check for null_node as valid sentinel too.
124 * c-common.h (c_tree_index): Added CTI_NULL.
125 (null_node) Define global_tree[CTI_NULL].
126 (warn_strict_null_sentinel): Declare.
127 * c-opts.c: (c_common_handle_option): Handle -Wstrict-null-sentinel.
128 * c.opt: (Wstrict-null-sentinel): New C++ option.
129 * doc/invoke.texi (C++ Options): Document -Wstrict-null-sentinel.
131 2005-05-01 Kazu Hirata <kazu@cs.umass.edu>
133 * gimplify.c (gimplify_compound_lval): Use VEC instead of
136 * global.c (calculate_reg_pav): Use VEC instead of VARRAY.
138 * dwarf2out.c (decl_scope_table, push_decl_scope,
139 pop_decl_scope, scope_die_for, dwarf2out_init): Use VEC
142 2005-05-01 Mark Mitchell <mark@codesourcery.com>
145 * c-cppbuiltin.c (c_cpp_builtins): Do not define __GXX_WEAK__ to 1
147 * doc/cpp.texi (__DEPRECATED): Document.
148 (__EXCEPTIONS): Likewise.
149 (__GXX_WEAK__): Likewise.
151 * function.c (INVOKE__main): Do not define.
152 (expand_main_function): Check HAS_INIT_SECTION when determining
153 whether or not to call __main.
155 2005-05-01 Kazu Hirata <kazu@cs.umass.edu>
157 * tree-ssa-loop-ivopts.c: Fix a comment typo.
159 2005-01-05 Paul Brook <paul@codesourcery.com>
161 * config/arm/arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define.
162 (INITIALIZE_TRAMPOLINE): Use it.
163 * config/arm/linux-gas.h (INITIALIZE_TRAMPOLINE): Remove.
164 * config/arm/netbsd.h (INITIALIZE_TRAMPOLINE): Remove.
165 * config/arm/netbsd-elf.h (INITIALIZE_TRAMPOLINE): Remove.
167 2005-05-01 Gerald Pfeifer <gerald@pfeifer.com>
169 * doc/install.texi (Specific): Omit dots in the @anchors names
170 for i?86-*-sco3.2v5*, i?86-*-solaris2.10, and sparc-sun-solaris2.7.
171 Omit underscores for x86_64-*-* and the "all ELF targets" entry.
173 2005-05-01 Zdenek Dvorak <dvorakz@suse.cz>
175 PR tree-optimization/18316
176 PR tree-optimization/19126
177 * tree.c (build_int_cst_type): Avoid shift by size of type.
178 * tree-scalar-evolution.c (simple_iv): Add allow_nonconstant_step
180 * tree-scalar-evolution.h (simple_iv): Declaration changed.
181 * tree-ssa-loop-ivopts.c (struct iv_cand): Add depends_on
183 (dump_cand): Dump depends_on information.
184 (determine_biv_step): Add argument to simple_iv call.
185 (contains_abnormal_ssa_name_p): Handle case expr == NULL.
186 (find_bivs, find_givs_in_stmt_scev): Do not require step to be a
188 (add_candidate_1): Record depends_on for candidates.
189 (tree_int_cst_sign_bit, constant_multiple_of): New functions.
190 (get_computation_at, get_computation_cost_at, may_eliminate_iv):
191 Handle ivs with nonconstant step.
192 (iv_ca_set_remove_invariants, iv_ca_set_add_invariants): New functions.
193 (iv_ca_set_no_cp, iv_ca_set_cp): Handle cand->depends_on.
194 (create_new_iv): Unshare the step before passing it to create_iv.
195 (free_loop_data): Free cand->depends_on.
196 (build_addr_strip_iref): New function.
197 (find_interesting_uses_address): Use build_addr_strip_iref.
198 (strip_offset_1): Split the recursive part from strip_offset.
199 Strip constant offset component_refs and array_refs.
200 (strip_offset): Split the recursive part to strip_offset_1.
201 (add_address_candidates): Removed.
202 (add_derived_ivs_candidates): Do not use add_address_candidates.
203 (add_iv_value_candidates): Add candidates with stripped constant
204 offset. Consider all candidates with initial value 0 important.
205 (struct affine_tree_combination): New.
206 (aff_combination_const, aff_combination_elt, aff_combination_scale,
207 aff_combination_add_elt, aff_combination_add,
208 tree_to_aff_combination, add_elt_to_tree, aff_combination_to_tree,
209 fold_affine_sum): New functions.
210 (get_computation_at): Use fold_affine_sum.
211 * tree-ssa-loop-manip.c (create_iv): Handle ivs with nonconstant step.
212 * tree-ssa-loop-niter.c (number_of_iterations_exit): Add argument
215 2005-04-30 Michael Matz <matz@suse.de>
217 * config/i386/i386.md (movmemsi): Also active when
218 TARGET_INLINE_ALL_STRINGOPS.
220 2005-04-30 Eric Botcazou <ebotcazou@libertysurf.fr>
223 * config/freebsd-spec.h (FBSD_CPP_SPEC): Add %(cpp_arch).
225 2005-04-30 Paul Brook <paul@codesourcery.com>
227 * config/arm/bpabi.h (RENAME_LIBRARY_SET): Always use .thumb_set in
229 * config/arm/ieee754-df.S: Use __INTERWORKING_STUBS__.
230 * config/arm/ieee754-sf.S: Ditto.
231 * config/arm/lib1funcs.asm: Define and use __INTERWORKING_STUBS__.
232 (FUNC_ALIAS): Use .thumb_set for thumb routines.
234 2005-04-30 Kazu Hirata <kazu@cs.umass.edu>
236 * tree-ssanames.c: Fix a comment typo.
237 * doc/options.texi: Fix a typo.
239 2005-04-30 Nathan Sidwell <nathan@codesourcery.com>
241 * config/h8300/h8300.c (byte_reg): Use gcc_assert and
242 gcc_unreachable as appropriate.
243 (split_adds_subs, cond_string, print_operand,
244 h8300_initial_elimination_offset, h8300_classify_operand,
245 h8300_unary_length, h8300_short_immediate_length,
246 h8300_bitfield_length, h8300_binary_length,
247 h8300_insn_length_from_table, compute_mov_length, output_plussi,
248 compute_plussi_length, compute_plussi_cc, output_logical_op,
249 compute_logical_op_length, compute_logical_op_cc,
250 output_h8sx_shift, get_shift_alg, h8300_shift_needs_scratch_p,
251 output_a_shift, compute_a_shift_length, compute_a_shift_cc,
252 output_a_rotate, compute_a_rotate_length, fix_bit_operand,
253 h8300_regs_ok_for_stm): Likewise.
254 * config/h8300/h8300.md (*movsi_h8300, *movsf_h8300,
255 monitor_prologue): Likewise.
257 2005-04-30 Kazu Hirata <kazu@cs.umass.edu>
259 * loop-invariant.c (invariants, create_new_invariant,
260 get_inv_cost, best_gain_for_invariant,
261 find_invariants_to_move, move_invariants,
262 init_inv_motion_data, free_inv_motion_data): Use VEC instead
265 2005-04-29 Richard Henderson <rth@redhat.com>
267 * function.c (instantiate_decls): Remove valid_only argument.
268 (instantiate_decls_1, instantiate_decl): Likewise.
269 (instantiate_virtual_regs_1): Delete.
270 (instantiate_virtual_regs_lossage): Delete.
271 (instantiate_virtual_regs_in_rtx): New.
272 (safe_insn_predicate): New.
273 (instantiate_virtual_regs_in_insn): New.
274 (instantiate_virtual_regs): Update to match all that. Only run
275 instantiate_decls once.
277 2005-04-29 Richard Henderson <rth@redhat.com>
278 Daniel Jacobowitz <dan@codesourcery.com>
280 * gengtype.c (write_func_for_structure): Split out ...
281 (output_type_enum): ... new function. Fix thinko accessing
282 TYPE_PARAM_STRUCT data.
284 2005-04-29 Tom Tromey <tromey@redhat.com>
286 * tree.c (build_block): Removed unused 'tags' argument.
287 * tree.h (build_block): Removed argument.
289 2005-04-29 Michael Matz <matz@suse.de>
291 PR rtl-optimization/21144
292 * postreload.c (reload_cse_move2add): Check for VOIDmode.
294 2005-04-29 Bob Wilson <bob.wilson@acm.org>
296 * config/xtensa/xtensa.h (OPTIMIZATION_OPTIONS): Define to disable
299 2005-04-28 Kazu Hirata <kazu@cs.umass.edu>
301 PR tree-optimization/21030
302 * tree-vrp.c (adjust_range_with_scev): Do not create invalid
303 ranges where VR->MAX is smaller than VR->MIN.
305 2005-04-29 Devang Patel <dpatel@apple.com>
307 PR tree-optimization/21272
308 PR tree-optimization/21266
309 * tree-if-conv.c (find_phi_replacement_condition): Fix think-o.
311 2005-04-29 Kazu Hirata <kazu@cs.umass.edu>
313 * tree-flow-inline.h: Fix a comment typo.
314 * doc/tree-ssa.texi: Fix a typo.
316 * tree-flow-inline.h, tree-ssa-operands.c: Fix comment typos.
318 2005-04-29 Nathan Sidwell <nathan@codesourcery.com>
320 * config/fr30/fr30.c (fr30_expand_prologue): Use gcc_assert and
321 gcc_unreachable as appropriate.
322 (fr30_expand_epilogue, fr30_setup_incoming_varargs,
323 fr30_print_operand, fr30_move_double): Likewise.
324 * config/fr30/fr30.md (*movsi_internal, *movsf_internal): Likewise.
326 2005-04-29 Mark Mitchell <mark@codesourcery.com>
328 * config/arm/arm.h (ARM_EABI_CTORS_SECTION_OP): Do not define if a
329 definition has already been provided.
330 (ARM_EABI_DTORS_SECTION_OP): Likewise.
331 * config/arm/symbian.h (ARM_EABI_CTORS_SECTION_OP): Define.
332 (ARM_EABI_DTORS_SECTION_OP): Likewise.
334 2005-04-29 Jim Tison <jtison@us.ibm.com>
336 * config/s390/s390.md ("prologue_tpf", "epilogue_tpf"): Alter
337 trace hooks calls to improve performance.
339 2005-04-29 Julian Brown <julian@codesourcery.com>
340 Mark Mitchell <mark@codesourcery.com>
341 Paul Brook <paul@codesourcery.com>
343 * crtstuff.c: Handle targets that use .init_array.
344 * function.c (HAS_INIT_SECTION): Do not define. Instead, make sure
345 that INVOKE__main is set correctly.
346 (expand_main_function): Test INVOKE__main.
347 * libgcc2.c: Do not define __main when using .init_array.
348 * config/arm/arm.c (arm_elf_asm_constructor): New function.
349 * config/arm/arm.h (CTORS_SECTION_ASM_OP): Define, with specialized
351 (DTORS_SECTION_ASM_OP): Likewise.
352 (CTOR_LIST_BEGIN): Define specially when in libgcc.
353 (CTOR_LIST_END): Likewise.
354 (DTOR_LIST_BEGIN): Likewise.
355 (DTOR_LIST_END): Likewise.
356 * config/arm/bpapi.h (INIT_SECTION_ASM_OP): Do not define it.
357 (FINI_SECTION_ASM_OP): Likewise.
358 (INIT_ARRAY_SECTION_ASM_OP): Define.
359 (FINI_ARRAY_SECTION_ASM_OP): Likewise.
360 * config/arm/elf.h (TARGET_ASM_CONSTRUCTOR): Define.
361 (SUPPORTS_INIT_PRIORITY): Evaluate to false for EABI based targets.
362 * doc/tm.texi (INIT_ARRAY_SECTION_ASM_OP): Document.
363 (FINI_ARRAY_SECTION_ASM_OP): Likewise.
365 2005-04-29 Nathan Sidwell <nathan@codesourcery.com>
367 * config/m68k/m68k.c (m68k_initial_elimination_offset): Use
368 gcc_assert and gcc_unreachable as appropriate.
369 (output_dbcc_and_branch, output_scc_di, legitimize_pic_address,
370 const_int_cost, output_move_const_into_data_reg,
371 output_move_qimode, output_move_double, find_addr_reg,
372 print_operand, print_operand_address): Likewise.
373 * config/m68k/m68k.md (adddi3, subdi3, negsf2, negdf2, abssf2,
374 absdf2, sordered, sunordered, suneq, sunge, sungt, sunle, sunlt,
375 sltgt, bordered, bunordered, buneq, bunge, bungt, bunle, bunlt,
376 bltgt, *bordered_rev, *bunordered_rev, *buneq_rev, *bunge_rev,
377 *bunle_rev, *bunlt_rev, *bltgt_rev, negxf2, absxf2,
378 conditional_trap): Likewise.
379 * config/m68k/m68kelf.h (ASM_OUTPUT_ALIGN): Remove unreachable code.
381 2005-04-29 Nathan Sidwell <nathan@codesourcery.com>
383 * config/xtensa/xtensa.c (gen_int_relational): Use gcc_assert and
384 gcc_unreachable as appropriate.
385 (gen_conditional_move, xtensa_split_operand_pair,
386 xtensa_split_operand_pair, xtensa_copy_incoming_a7,
387 xtensa_copy_incoming_a7, xtensa_copy_incoming_a7,
388 xtensa_copy_incoming_a7, xtensa_output_literal,
389 xtensa_output_literal, xtensa_output_literal): Likewise.
390 * config/xtensa/xtensa.h (INITIAL_ELIMINATION_OFFSET): Likewise.
391 * config/xtensa/xtensa.md (*btrue, *bfalse, *ubtrue, *ubfalse,
392 *bittrue, *bitfalse, *masktrue, *maskfalse, movsicc_internal0,
393 movsicc_internal1, movsfcc_internal0,
394 movsfcc_internal1): Likewise.
396 2005-04-28 James E Wilson <wilson@specifixinc.com>
398 * config/i386/i386.h (HI_REGISTER_NAMES): Fix typos in comment.
399 (ADDITIONAL_REGISTER_NAMES): Delete obsolete mmx register entries.
401 2005-04-28 DJ Delorie <dj@redhat.com>
403 * opt-functions.awk (var_set): Emit proper initializer for
404 non-target bitfields.
406 2005-04-28 Devang Patel <dpatel@apple.com>
408 * dbxout.c (have_used_extensions): Remove.
409 (dbxout_type_fileds, dbxout_type, dbxout_symbol): Remove use of
410 have_used_extensions.
412 2005-04-28 James E Wilson <wilson@specifixinc.com>
414 * doc/install.texi: Update -enable-languages info. Correct path to
417 2005-04-28 DJ Delorie <dj@redhat.com>
419 * optc-gen.awk (END): Make sure no variable is defined more
421 * opth-gen.awk (END): Allocate bits on a per-variable basis.
422 Allow for bitfield variables other than target_flags.
423 * doc/options.text (Mask): Document that you may specify a
424 variable other than target_flags.
426 2005-04-28 Martin Koegler <mkoegler@auto.tuwien.ac.at>
428 PR rtl-optimization/18877
429 * reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg
432 2005-04-28 David Edelsohn <edelsohn@gnu.org>
435 * config/rs6000/aix43.h (SUBSUBTARGET_SWITCHES, aix64): Add
437 * config/rs6000/aix51.h (SUBSUBTARGET_SWITCHES, aix64): Same.
438 * config/rs6000/aix52.h (SUBSUBTARGET_SWITCHES, aix64): Same.
439 * config/rs6000/sysv4.h (SUBTARGET_SWITCHES, 64): Same.
441 2005-04-28 Richard Earnshaw <richard.earnshaw@arm.com>
443 * arm.c (legitimize_pic_address): Fix sense of assertion test for
444 creating pseudos when the base offset is too large.
446 2005-04-28 Kazu Hirata <kazu@cs.umass.edu>
448 * global.c (earlyclobber_regclass): Change the type to
450 (check_earlyclobber): Update uses of earlyclobber_regclass.
451 (mark_reg_use_for_earlyclobber): Likewise.
452 (calculate_local_reg_bb_info): Allocate and free
453 earlyclobber_regclass using the VEC API.
455 2005-04-28 Nathan Sidwell <nathan@codesourcery.com>
457 * tree-ssa-alias.c (push_fields_onto_fieldstack): Remove bogus
460 2005-04-28 Kazu Hirata <kazu@cs.umass.edu>
462 * modulo-sched.c, tree-stdarg.c: Use targetm.foo instead of
465 * config.gcc: Obsolete c4x-* and tic4x-*.
467 * tree.h (edge_def): Remove.
469 * bt-load.c, cfgexpand.c, dwarf2out.c, emit-rtl.c, expr.c,
470 function.c, global.c, lcm.c, loop-invariant.c, optabs.c,
471 reorg.c, resource.c, tree-ssa-loop-ivopts.c, value-prof.c: Use
472 JUMP_P, LABEL_P, REG_P, MEM_P, NONJUMP_INSN_P, and INSN_P
475 * attribs.c, c-pragma.c, caller-save.c, cfghooks.h,
476 coverage.c, cselib.h, domwalk.c, domwalk.h, errors.c,
477 errors.h, gcov-dump.c, gcov-io.c, gcov-io.h, gen-protos.c,
478 genattrtab.h, genextract.c, gthr-win32.h, insn-notes.def,
479 integrate.c, lambda-mat.c, lambda.h, libgcov.c, local-alloc.c,
480 machmode.def, mips-tfile.c, params.c, pretty-print.c,
481 print-rtl.c, protoize.c, regmove.c, sched-vis.c, tree-chrec.h,
482 tree-data-ref.h, vec.h, config/darwin-c.c, config/sol2-c.c,
483 config/sol2.c, config/arm/arm-cores.def, config/arm/cirrus.md,
484 config/arm/symbian.h, config/c4x/c4x.c, config/c4x/c4x.h,
485 config/i386/cygming.h, config/i386/djgpp.h,
486 config/i386/lynx.h, config/i386/netware.c,
487 config/i386/winnt.c, config/ia64/ia64-c.c,
488 config/iq2000/iq2000.c, config/m32r/little.h,
489 config/m68k/m68k-protos.h, config/m68k/m68k.h,
490 config/m68k/m68k.md, config/mcore/mcore.c,
491 config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.md,
492 config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
493 config/mn10300/mn10300.h, config/ns32k/netbsd.h,
494 config/ns32k/ns32k.c, config/ns32k/ns32k.h,
495 config/pa/pa-hpux11.h, config/pdp11/pdp11.c,
496 config/pdp11/pdp11.h, config/rs6000/darwin.h,
497 config/rs6000/default64.h, config/rs6000/rs6000-c.c,
498 config/s390/2064.md, config/s390/2084.md,
499 config/s390/s390-modes.def, config/s390/s390-protos.h,
500 config/s390/tpf.h, config/sh/sh.h, config/sh/symbian.c,
501 config/stormy16/stormy16.c, config/vax/vax-protos.h,
502 config/vax/vax.c, config/vax/vax.h,
503 config/xtensa/lib1funcs.asm, config/xtensa/xtensa.md: Update
506 2005-04-28 Joseph S. Myers <joseph@codesourcery.com>
508 * c-typeck.c (build_compound_expr): Correct logic in last change.
510 2005-04-27 James E. Wilson <wilson@specifixinc.com>
512 * config/ia64/ia64.c (update_set_flags): Delete ppred and pcond
513 parameters. Replace conditional move code with assert checking for
514 ar.lc. Delete obsolete comments.
515 (set_src_needs_barrier): Delete cond parameter, and code using it.
516 (rtx_needs_barrier): Delete initialization of cond. Fix typo in
517 assert checking for PR_REGS. Fix calls to update_set_flags and
518 set_src_needs_barrier.
519 (group_barrier_needed): Renamed from group_barrier_needed_p. Fix all
520 callers. Rewrite explanatory comment before the function.
521 (safe_group_barrier_needed): Renamed from safe_group_barrier_needed_p.
524 2005-04-27 Mike Stump <mrs@apple.com>
526 * doc/cpp.texi: gcc now implements universal character names.
528 2005-04-27 Joseph S. Myers <joseph@codesourcery.com>
531 * c-typeck.c (build_compound_expr): Don't warn for left-hand side
532 being a compound expression whose right-hand side is cast to void.
534 2005-04-27 Caroline Tice <ctice@apple.com>
536 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
537 Remove targetm.have_named_sections test.
538 (fix_edges_for_rarely_executed_code): Likewise.
539 (insert_section_boundary_note): Likewise.
540 (reorder_basic_blocks): Check partitioning flag before calling
541 verify_hot_cold_block_grouping.
542 * dbxout.c (dbxout_function_end): Get hot/cold section labels from
543 the function struct rather than global variables.
544 * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
545 (COLD_END_LABEL): Likewise
546 (cold_text_section_label): New static global variable.
547 (cold_end_label): Likewise.
548 (dwarf2out_switch_text_section): Get hot/cold section labels from
549 the function struct rather than global variables; test to make sure
551 (output_aranges): Use cold_text_section_label and cold_end_label;
552 check partitioning flag before putting out delta.
553 (output_ranges): Remove incorrect code attempting to use
555 (output_line_info): Get cold section label from function struct; test
556 to make sure cfun is defined.
557 (add_location_or_const_value_attribute): Likewise.
558 (dwarf2out_var_location): Likewise.
559 (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
560 write out cold_text_section_label if partition flag is set.
561 (dwarf2out_finish): Write out cold_end_label if partition flag is set;
562 * function.h (struct function): Add new fields to point to hot/cold
563 section labels: hot_section_label, cold_section_label,
564 hot_section_end_label and cold_section_end_label; also add new field
565 for cold text section name, unlikely_text_section_name.
566 * opts.c (decode_options): Turn off partitioning flag if
567 !targetm.have_named_sections.
568 * output.h (hot_section_label): Remove.
569 (hot_section_end_label): Remove.
570 (cold_section_end_label): Remove.
571 (unlikely_section_label): Remove.
572 (unlikely_text_section_name): Remove.
573 * passes.c (rest_of_handle_final): Remove extra blank line.
574 * varasm.c (unlikely_section_label): Remove.
575 (hot_section_label): Remove.
576 (hot_section_end_label): Remove.
577 (cold_section_end_label): Remove.
578 (unlikely_text_section_name): Remove.
579 (initialize_cold_section_name): Modify to call
580 targetm.strip_name_encoding; to store cold section name in current
581 function struct, if it exists; and to only use the decl_section_name
582 if flag_named_sections is true.
583 (unlikely_text_section): Modify to get section name out of current
584 function struct, if there is one; otherwise build it from
585 UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
586 (in_unlikely_text_section): Likewise.
587 (named_section): Modify to get/put cold section name in current function
588 struct, if there is one.
589 (function_section): Change 'bool unlikely' to 'int reloc'; check
590 targetm.have_named_sections before calling named_section.
591 (current_function_section): Likewise.
592 (assemble_start_function): Modify to get/put unlikely_text_section_name
593 in current function struct; modify to get hot/cold section labels
594 from function struct; initialize labels using
595 ASM_GENERATE_INTERNAL_LABEL;
596 test partitioning flag before writing out hot section label.
597 (assemble_end_function): Test partitioning flag before writing out
598 hot/cold section labels.
599 (default_section_type_flags_1): Get cold text section name from
600 function struct if there is one; Set flags correctly for
601 cold text section if there is not a current function struct.
603 2005-04-27 Richard Guenther <rguenth@gcc.gnu.org>
605 * tree-ssa-propagate.c (set_rhs): Revert last change.
607 2005-04-27 Steve Ellcey <sje@cup.hp.com>
609 * explow.c (convert_memory_address): Add gcc_assert.
611 2005-04-27 Mark Mitchell <mark@codesourcery.com>
613 * configure.ac: Check for ld --sysroot support.
614 * gcc.c: Document %R specifier for specs.
615 (SYSROOT_SPEC): New macro.
616 (sysroot_spec): New variable.
617 (static_specs): Add sysroot_spec.
618 (main): Pass the sysroot spec to the linker if appropriate.
619 * configure: Regenerated.
620 * config.in: Likewise.
622 2005-04-27 Richard Guenther <rguenth@gcc.gnu.org>
624 * fold-const.c (fold_binary): Use build_fold_addr_expr
625 for address calculation and INDIRECT_REF handling.
627 2005-04-27 Andrew Haley <aph@redhat.com>
629 * postreload-gcse.c (hash_scan_set): Remove bogus assertion.
631 2005-04-27 Nathan Sidwell <nathan@codesourcery.com>
633 * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Reserve arm frame
634 pointer when thumb backtracing is on.
636 * config/fp-bit.c (abort): Revert change.
638 2005-04-27 Ian Lance Taylor <ian@airs.com>
640 * c-semantics.c (add_stmt): Don't test STATEMENT_CODE_P.
642 2005-04-27 Kazu Hirata <kazu@cs.umass.edu>
644 * tree-ssa-dce.c: Fix a comment typo.
646 2005-04-27 David S. Miller <davem@davemloft.net>
648 * explow.c (allocate_dynamic_stack_space SETJMP_VIA_SAVE_AREA):
649 Kill setjmpless_size. current_function_calls_setjmp is completely
650 computed when we are called, so just use the optimized size value
651 instead of using REG_SAVE_AREA notes.
652 (optimize_save_area_alloca): Delete....
653 * rtl.h (optimize_save_area_alloca): Likewise...
654 * passes.c (rest_of_compilation): and don't call it any more.
655 * reg-notes.def (SAVE_AREA): Delete.
657 2005-04-27 Nathan Sidwell <nathan@codesourcery.com>
659 * config/fp-bit.c (abort): Add noreturn attribute.
661 * config/avr/avr.c (avr_naked_function_p): Use gcc_assert and
662 gcc_unreachable as appropriate.
663 (ptrreg_to_str, cond_string, avr_normalize_condition): Likewise.
664 * config/avr/avr.h (ASM_OUTPUT_REG_PUSH,
665 ASM_OUTPUT_REG_POP): Likewise.
667 2005-04-27 Paolo Bonzini <bonzini@gnu.org>
669 * tree-complex.c (expand_vector_operations_1): Do not build
670 VIEW_CONVERT_EXPR's for the lhs.
672 2005-04-27 Nathan Sidwell <nathan@codesourcery.com>
674 * config/pa/pa.h (PRINT_OPERAND_ADDRESS): Use gcc_assert, remove
675 unnecessary noncanonical RTL handling.
676 * config/pa/pa64-linux.h (INITIAL_ELIMINATION_OFFSET): Use
677 gcc_assert and gcc_unreachable.
679 * config/arm/arm.h (ARM_PRINT_OPERAND_ADDRESS): Use gcc_assert and
680 gcc_unreachable as appropriate.
681 (THUMB_PRINT_OPERAND_ADDRESS): Likewise.
682 * config/arm/arm.c (arm_override_options, arm_compute_func_type,
683 use_return_insn, const_ok_for_op, arm_gen_constant,
684 arm_canonicalize_comparison, legitimize_pic_address,
685 thumb_find_work_register, arm_load_pic_register, arm_rtx_costs_1,
686 arm_cirrus_insn_p, cirrus_reorg, minmax_code,
687 load_multiple_sequence, emit_ldm_seq, store_multiple_sequence,
688 emit_stm_seq, arm_gen_movmemqi, arm_select_dominance_cc_mode,
689 arm_select_cc_mode, arm_reload_in_hi, arm_reload_out_hi,
690 move_minipool_fix_forward_ref, move_minipool_fix_backward_ref,
691 dump_minipool, create_fix_barrier, push_minipool_fix, arm_reorg,
692 fp_immediate_constant, fp_const_from_val, vfp_output_fstmx,
693 output_call, output_mov_long_double_fpa_from_arm,
694 output_mov_long_double_arm_from_fpa,
695 output_mov_double_fpa_from_arm, output_mov_double_arm_from_fpa,
696 output_move_double, arithmetic_instr, shift_op, int_log2,
697 output_return_instruction, arm_output_function_prologue,
698 arm_output_epilogue, arm_output_function_epilogue,
699 emit_multi_reg_push, arm_get_frame_offsets,
700 arm_compute_initial_elimination_offset, arm_expand_prologue,
701 arm_print_operand, arm_assemble_integer, get_arm_condition_code,
702 arm_final_prescan_insn, arm_init_iwmmxt_builtins,
703 arm_expand_binop_builtin, thumb_pushpop, thumb_far_jump_used_p,
704 thumb_compute_initial_elimination_offset,
705 thumb_output_function_prologue, thumb_load_double_from_address,
706 thumb_output_move_mem_multiple, thumb_reload_out_hi,
707 arm_emit_vector_const, arm_dbx_register_number): Likewise.
708 * config/arm/pe.c (arm_mark_dllexport, arm_mark_dllimport): Likewise.
709 * config/arm/arm.md (thumb_extendhisi2,
710 *thumb_extendhisi2_insn_v6, *thumb_extendqisi2,
711 *thumb_extendqisi2_v6, movhi, *thumb_movhi_insn,
712 thumb_movhi_clobber, movqi, *arm_buneq, *arm_bltgt,
713 *arm_buneq_reversed, *arm_bltgt_reversed, suneq, sltgt): Likewise.
714 * config/arm/cirrus.md (*cirrus_arm_movdi,
715 *cirrus_movdf_hard_insn): Likewise.
716 * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
718 2005-04-27 Kazu Hirata <kazu@cs.umass.edu>
720 * tree-flow.h (ssa_names): Change the type to VEC(tree,gc).
721 (num_ssa_names): Use VEC_length.
722 (ssa_names): Use VEC_index.
723 * tree-ssanames.c (ssa_names): Change the type to
725 (init_ssanames, fini_ssa_names, make_ssanames,
726 release_ssa_name): Update uses of ssa_names.
728 * dojump.c, emit-rtl.c, expmed.c, expr.c, stmt.c, stor-layout.c:
729 Use fold_buildN instead of fold (buildN (...)).
731 2005-04-27 Devang Patel <dpatel@apple.com>
733 * dbxout.c (dbxout_type): Check use_gnu_debug_info_extensions.
735 2005-04-27 Matt Thomas <matt@3am-software.com>
736 Jan-Benedict Glaw <jbglaw@microdata-pos.de>
738 * config/vax/vax.c (vax_rtx_costs): Whitespace cleanup.
739 (vax_output_mi_thunk): Ditto.
740 (vax_notice_cc_update): Ditto.
741 (INDEX_REGISTER_P): Add trailing \.
742 (BASE_REGISTER_P): Add trailing \.
743 (legitimate_address_p): Whitespace cleanup. Remove trailing \.
745 2005-04-27 Richard Guenther <rguenth@gcc.gnu.org>
747 * tree-ssa-propagate.c (set_rhs): Check operand of
748 ADDR_EXPR for gimpliness, too.
750 2005-04-27 Kazu Hirata <kazu@cs.umass.edu>
752 * tree-ssa-pre.c: Fix a comment typo.
754 2005-04-27 Zdenek Dvorak <dvorakz@suse.cz>
756 PR tree-optimization/21171
757 * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not
758 record address uses if the reference is volatile.
760 2004-04-27 Paolo Bonzini <bonzini@gnu.org>
762 * tree-complex.c (expand_vector_operation): New, extracted from
763 expand_vector_operations_1.
764 (tree_vec_extract): Build a NOP_EXPR.
765 (expand_vec_parallel): Do not care about returning the correct type.
766 (expand_vector_operations_1): Call expand_vector_operation.
767 Build the VIEW_CONVERT_EXPR on the left side of MODIFY_EXPRs.
769 * tree-complex.c (gate_expand_vector_operations): New.
770 (pass_lower_vector_ssa): Use it.
771 * tree-optimize.c (init_tree_optimization_passes): Include
772 pass_lower_vector_ssa.
773 * tree-vect-transform.c (vect_min_worthwhile_factor): New.
774 (vectorizable_operation): Use it.
775 * tree-vectorizer.c (get_vectype_for_scalar_type): Accept
776 integer modes for the vector type.
778 * defaults.h (UNITS_PER_SIMD_WORD): Default to UNITS_PER_WORD.
779 * tree-vect-analyze.c (vect_enhance_data_refs_alignment):
780 Do not cope with UNITS_PER_SIMD_WORD == 0.
781 * tree-vectorizer.c (get_vectype_for_scalar_type): Check
782 if the scalar type is not bigger than UNITS_PER_SIMD_WORD.
783 (vectorize_loops): Do not check that UNITS_PER_SIMD_WORD > 0.
784 * config/i386/i386.h (UNITS_PER_SIMD_WORD): Default to UNITS_PER_WORD.
785 * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
786 * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
787 * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
789 * config/alpha/alpha.h (UNITS_PER_SIMD_WORD): Remove.
790 * config/bfin/bfin.h (UNITS_PER_SIMD_WORD): Remove.
791 * config/ia64/ia64.h (UNITS_PER_SIMD_WORD): Remove.
793 * doc/tm.texi (UNITS_PER_WORD): Rephrase more accurately.
794 (UNITS_PER_SIMD_WORD): New.
796 2005-04-27 Nathan Sidwell <nathan@codesourcery.com>
798 * config/ia64/ia64.c (ia64_encode_addr_area): Use gcc_assert and
799 gcc_unreachable as appropriate.
800 (ia64_expand_load_address, ia64_expand_tls_address,
801 ia64_split_tmode, ia64_split_tmode_move, ia64_expand_compare,
802 ia64_expand_vecint_compare, ia64_expand_vecint_minmax,
803 next_scratch_gr_reg, ia64_initial_elimination_offset,
804 ia64_expand_prologue, ia64_expand_epilogue,
805 ia64_output_dwarf_dtprel, ia64_print_operand,
806 ia64_register_move_cost, first_instruction, rws_access_regno,
807 update_set_flags, rtx_needs_barrier, group_barrier_needed_p,
808 ia64_sched_init, ia64_variable_issue,
809 ia64_first_cycle_multipass_dfs_lookahead_guard,
810 ia64_dfa_new_cycle, issue_nops_and_insn, get_template, bundling,
811 ia64_st_address_bypass_p, ia64_ld_address_bypass_p, process_set,
812 process_for_unwind_directive, ia64_hpux_file_end): Likewise.
813 * config/ia64/ia64.h (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
814 * config/ia64/ia64.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
815 * config/ia64/predicates.md (got_symbolic_operand,
816 sdata_symbolic_operand): Likewise.
817 * config/ia64/vect.md (vcondv2sf): Likewise.
819 2005-04-27 Matt Thomas <matt@3am-software.com>
821 * config/vax/vax.c (legitimate_constant_address_p): New. Formerly
822 CONSTANT_ADDRESS_P in config/vax/vax.h
823 (legitimate_constant_p): Added. Formerly CONSTANT_P in vax.h.
824 (INDEX_REGISTER_P): New.
825 (BASE_REGISTER_P): New.
826 (indirectable_constant_address_p): New. Adapted from
827 INDIRECTABLE_CONSTANT_ADDRESS_P in vax.h. Use SYMBOL_REF_LOCAL_P.
828 (indirectable_address_p): New. Adapted from
829 INDIRECTABLE_ADDRESS_P in vax.h.
830 (nonindexed_address_p): New. Adapted from
831 GO_IF_NONINDEXED_ADDRESS in vax.h.
832 (index_temp_p): New. Adapted from INDEX_TERM_P in vax.h.
833 (reg_plus_index_p): New. Adapted from GO_IF_REG_PLUS_INDEX in vax.h.
834 (legitimate_address_p): New. Adapted from
835 GO_IF_LEGITIMATE_ADDRESS in vax.h.
836 (vax_mode_dependent_address_p): New. Adapted from
837 GO_IF_MODE_DEPENDENT_ADDRESS in vax.h.
838 * config/vax/vax.h (CONSTANT_ADDRESS_P): Use
839 legitimate_constant_address_p.
840 (CONSTANT_P): Use legitimate_constant_p.
841 (INDIRECTABLE_CONSTANT_ADDRESS_P): Removed.
842 (INDIRECTABLE_ADDRESS_P): Removed.
843 (GO_IF_NONINDEXED_ADDRESS): Removed.
844 (INDEX_TEMP_P): Removed.
845 (GO_IF_REG_PLUS_INDEX): Removed.
846 (GO_IF_LEGITIMATE_ADDRESS): Use legitimate_address_p. Two
847 definitions, depending on whether REG_OK_STRICT is defined.
848 (GO_IF_MODE_DEPENDENT_ADDRESS): Use vax_mode_dependent_address_p.
849 Two definitions, depending on whether REG_OK_STRICT is defined.
850 * config/vax/vax-protos.h (legitimate_constant_address_p): Prototype
852 (legitimate_constant_p): Prototype added.
853 (legitimate_address_p): Prototype added.
854 (vax_mode_dependent_address_p): Prototype added.
856 2005-04-27 Kazu Hirata <kazu@cs.umass.edu>
858 * tree.h (phi_arg_d): Expand a comment in phi_arg_d.
860 2005-04-27 Joseph S. Myers <joseph@codesourcery.com>
863 * c-decl.c (finish_struct): Don't dereference NULL TYPE_FIELDS of
866 2005-04-27 Joseph S. Myers <joseph@codesourcery.com>
869 * c-format.c (init_dynamic_asm_fprintf_info): Give errors, not
870 assertion failures, if __gcc_host_wide_int__ is not properly
872 (init_dynamic_diag_info): Give errors, not assertion failures, if
873 location_t, tree or __gcc_host_wide_int__ are not properly
876 2005-04-26 Kazu Hirata <kazu@cs.umass.edu>
878 * tree-ssa-loop-ivopts.c (ivopts_data, decl_rtl_to_reset,
879 n_iv_uses, iv_use, n_iv_cands, iv_cand,
880 tree_ssa_iv_optimize_init, record_use, add_candidate_1,
881 prepare_decl_rtl, free_loop_data,
882 tree_ssa_iv_optimize_finalize): Use the VEC API instead of
885 * tree.h (tree_phi_node): Add a comment about the order of PHI
888 2005-04-26 Paul Brook <paul@codesourcery.com>
890 * config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.
892 2005-04-26 Nathan Sidwell <nathan@codesourcery.com>
894 * config/mips.mips.c (mips_legitimize_tls_address): Use
897 * config/mmix/mmix.c (mmix_assemble_integer): Use gcc_assert.
898 * config/mmix/crti.asm (_init): Reword comment to avoid 'abort'.
899 * config/mmix/mmix.md (nonlocal_goto_receiver): Likewise.
901 * config/sparc/sparc.h (enum reg_class): Reword comment to avoid
904 2005-04-26 Jeff Law <law@redhat.com>
906 * tree-flow-inline.h (op_iter_next_must_and_may_def): New.
907 (op_iter_init_must_and_may_def): Likewise.
908 (unmodifiable_var_p): Move to a later point in the file.
909 * tree-ssa-operands.h (FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): New.
910 * tree-ssa-dse.c (need_imm_uses_for): Remove, no longer needed.
911 (dse_record_phis): Directly check for virtual operands rather than
912 using need_imm_uses_for.
913 (dse_optimize_stmt): Handle V_MUST_DEF operands. Handle case where
914 store has multiple V_{MAY,MUST}_DEF operands.
916 2005-04-26 Andrew MacLeod <amacleod@redhat.com>
918 * tree-cfg.c (bsi_replace): Delink immediate uses for the original
921 2005-04-26 Kazu Hirata <kazu@cs.umass.edu>
923 * tree-cfg.c (lv_adjust_loop_header_phi): Speed up moving a
924 call to find_edge outside a loop to go through a PHI chain.
926 2004-04-26 Richard Guenther <rguenth@gcc.gnu.org>
928 PR tree-optimization/17598
929 * fold-const.c (fold_binary): Fold comparisons of addresses
930 of COMPONENT_REFs which reference the same field to
931 comparisons of the addresses of the base objects.
933 2005-04-26 Julian Brown <julian@codesourcery.com>
935 * config/arm/arm.c (arm_return_in_msb): New function.
936 (arm_must_pass_in_stack): New function.
937 (TARGET_RETURN_IN_MSB): Define target hook.
938 (TARGET_MUST_PASS_IN_STACK): Define target hook.
939 (arm_function_value): Pad small aggregate return.
940 (arm_pad_arg_upward): New function.
941 (arm_pad_reg_upward): New function.
942 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Include complex values.
943 (FUNCTION_ARG_PADDING): Define macro.
944 (BLOCK_REG_PADDING): Define macro.
945 (PAD_VARARGS_DOWN): Correct padding for AAPCS.
946 * config/arm/arm-protos.h (arm_pad_arg_upward): Declare function.
947 (arm_pad_reg_upward): Declare function.
949 2005-04-26 Kazu Hirata <kazu@cs.umass.edu>
951 * basic-block.h (ei_cond): New.
952 (FOR_EACH_EDGE): Call ei_cond.
954 PR tree-optimization/21047
955 * fold-const.c (fold_binary): Abort on ASSERT_EXPR.
956 (fold): Don't handle ASSERT_EXPR.
958 2005-04-25 Roger Sayle <roger@eyesopen.com>
960 * sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat
961 all writes to any stack register as a read/write dependency on
963 (sched_analyze_2): Likewise, for reads from any stack register.
965 2005-04-25 Richard Henderson <rth@redhat.com>
967 * final.c (output_addr_const): Revert 2005-04-09 change.
969 2005-04-25 Mike Stump <mrs@apple.com>
971 * config/darwin.c (darwin_encode_section_info): Always set
972 MACHO_SYMBOL_STATIC for all ! TREE_PUBLIC symbols.
974 2005-04-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
976 * collect2.c, gcc.c, gcov-dump.c, gcov.c, gen-protos.c,
977 gensupport.c, protoize.c, toplev.c: Replace calls to
978 `unlock_stream' with `unlock_std_streams'.
980 2005-04-25 Devang Patel <dpatel@apple.com>
982 * dbxout.c (dbxout_type): Emit attribute vector.
984 2005-04-05 Paul Brook <paul@codesourcery.com>
986 * target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define.
987 * target.h (struct gcc_target): Add cxx.use_aeabi_atexit.
988 * config/arm/arm.c (arm_cxx_atexit_name): New function.
989 (TARGET_CXX_USE_AEABI_ATEXIT): New macro.
990 * cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit.
991 (register_dtor_fn): Likewise.
992 * doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT.
994 2005-04-25 Ian Lance Taylor <ian@airs.com>
996 * c-common.def (EXPR_STMT): Remove, moved to C++ frontend.
997 * c-common.h (EXPR_STMT_EXPR): Don't define.
998 (c_common_stmt_codes): Don't define.
999 * c-dump.c (c_dump_tree): Remove EXPR_STMT case.
1000 * c-gimplify.c (gimplify_expr_stmt): Remove.
1001 (c_gimplify_expr): Remove EXPR_STMT case.
1002 * c-objc-common.c (c_objc_common_init): Remove stmt_codes and call
1003 to INIT_STATEMENT_CODES.
1004 * c-pretty-print.c (pp_c_statement): Just call dump_generic_node.
1006 2005-04-25 Jan Hubicka <jh@suse.cz>
1008 * tree-cfg.c (tree_duplicate_bb): Duplicate EH region too.
1010 * except.c: Include diagnostic.h
1011 (dump_eh_tree, verify_eh_tree): New functions.
1012 * except.h (verify_eh_tree, dump_eh_tree, verify_eh_edges): Declare.
1013 * tree-cfg.c (tree_verify_flow_info): verify eh edges.
1014 (dump_function_to_file): dump eh tree.
1015 * tree-eh.c (mark_eh_edge): New function.
1016 (mark_eh_edge_found_error): New static variable.
1017 (verify_eh_edges): New function.
1019 2005-04-25 Nathan Sidwell <nathan@codesourcery.com>
1021 * tree-ssa-alias.c (fieldoff_t): Remove.
1022 (fieldoff_s): typedef the structure itself. Create a vector of
1024 (push_fields_onto_fieldstack): Return count of fields pushed.
1025 Remove peeling of first field. Adjust.
1026 (fieldoff_compare): Adjust.
1027 (create_overlap_variables_for): Adjust.
1029 2005-04-25 Joseph S. Myers <joseph@codesourcery.com>
1031 * doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.
1033 2005-04-25 Joseph S. Myers <joseph@codesourcery.com>
1036 * doc/install.texi: Document correct assembler and linker to use
1037 on i?86-*-solaris2.10.
1039 2005-04-25 Steven Bosscher <stevenb@suse.de>
1041 Fix PR tree-optimization/21173
1043 * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
1044 Unshare expression we pass to force_gimple_operand.
1046 2005-04-25 J"orn Rennecke <joern.rennecke@st.com>
1047 Stephen Clarke <stevec@superh.com>
1048 Roger Sayle <roger@eyesopen.com>
1050 PR rtl-optimization/20413
1051 * cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
1052 VOIDmode for LABEL_REF.
1053 * final.c (shorten_branches): Likewise.
1054 * jump.c (mark_all_labels, redirect_exp_1): Likewise.
1055 * loop.c (reg_dead_after_loop): Likewise.
1056 * varasm.c (decode_addr_const): Likewise.
1057 * doc/rtl.texi: Document mode requirement for LABEL_REF.
1059 2005-04-25 Ralf Corsepius <ralf.corsepius@rtems.org>
1061 * config.gcc (avr-*-*): Remove redundant "case".
1063 2005-04-25 Kazu Hirata <kazu@cs.umass.edu>
1065 * tree-vect-analyze.c (vect_mark_relevant): Take
1066 VEC(tree,heap) instead of varray_type as an argument.
1067 (vect_mark_stmts_to_be_vectorized): Change the type of
1068 worklist to VEC(tree,heap). Adjust uses of worklist.
1070 2005-04-24 Devang Patel <dpatel@apple.com>
1072 * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
1074 2005-04-24 Ian Lance Taylor <ian@airs.com>
1076 * c-semantics.c (build_stmt): Remove test of specific tree codes
1077 for TREE_SIDE_EFFECTS handling.
1079 2005-04-24 Per Bothner <per@bothner.com>
1081 * c-opts.c (finish_options): Make the line-number of the <built-in>
1082 location 0, as assumed elsewhere, rather than 1.
1084 2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
1086 * tree-ssa-uncprop.c (equiv_stack): Change the type o
1088 (tree_ssa_uncprop, uncprop_finalize_block,
1089 uncprop_initialize_block): Update uses of equiv_stack.
1091 2005-04-24 Richard Henderson <rth@redhat.com>
1094 * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
1095 for SCALAR_INT_MODE_P instead of not MODE_CC before returning
1097 <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
1098 <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
1099 <DIV, MOD>: Likewise.
1101 2005-04-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1103 * collect2.c (main): Unlock the stdio streams.
1104 * gcc.c (main): Likewise.
1105 * gcov-dump.c (main): Likewise.
1106 * gcov.c (main): Likewise.
1107 * gen-protos.c (main): Likewise.
1108 * gensupport.c (init_md_reader_args_cb): Likewise.
1109 * protoize.c (main): Likewise.
1110 * toplev.c (general_init): Likewise.
1112 2005-04-24 Jakub Jelinek <jakub@redhat.com>
1115 * cgraph.h (cgraph_local_info): Add vtable_method field.
1116 * varasm.c (mark_decl_referenced): If cgraph_global_info_ready
1117 and node is vtable_method, finalized and not reachable, don't do
1120 2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
1122 * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
1124 * tree-ssa-pre.c (create_value_expr_from): Use
1125 CONSTANT_CLASS_P and REFERENCE_CLASS_P.
1126 * tree-ssa-propagate.c (stmt_makes_single_load,
1127 stmt_makes_single_store): Use REFERENCE_CLASS_P.
1128 * tree-vect-transform.c (vect_is_simple_cond): Use
1130 * tree-vrp.c (extract_range_from_assert,
1131 build_assert_expr_for, fp_predicate, has_assert_expr): Use
1134 * tree-ssa-live.c (build_tree_conflict_graph): Change the type
1135 of tpa_to_clear to VEC(int,heap). Update uses of
1136 tpa_to_clear. Free tpa_to_clear at the end.
1138 2005-04-24 Andrew Pinski <pinskia@physics.uc.edu>
1140 * tree.h (TREE_THIS_VOLATILE): Document the effect on a
1143 2005-04-24 Nathan Sidwell <nathan@codesourcery.com>
1145 * config/rs6000/rs6000.c (rs6000_override_options): Use gcc_assert
1146 and gcc_unreachable as appropriate.
1147 (num_insns_constant, output_vec_const_move,
1148 build_mask64_2_operands, rs6000_output_dwarf_dtprel,
1149 rs6000_emit_set_const, rs6000_emit_move,
1150 spe_build_register_parallel, function_arg,
1151 rs6000_move_block_from_reg, altivec_expand_predicate_builtin,
1152 spe_expand_predicate_builtin, spe_expand_evsel_builtin,
1153 rs6000_expand_builtin, spe_init_builtins, altivec_init_builtins,
1154 rs6000_common_init_builtins, expand_block_clear,
1155 expand_block_move, validate_condition_mode, ccr_bit, extract_MB,
1156 extract_ME, rs6000_get_some_local_dynamic_name,
1157 rs6000_output_function_entry, print_operand,
1158 print_operand_address, rs6000_generate_compare, rs6000_emit_sCOND,
1159 output_cbranch, output_e500_flip_gt_bit,
1160 rs6000_emit_vector_compare, rs6000_emit_vector_compare,
1161 rs6000_emit_cmove, rs6000_emit_minmax, rs6000_split_multireg_move,
1162 compute_save_world_info, rs6000_stack_info,
1163 rs6000_emit_load_toc_table, rs6000_frame_related,
1164 spe_synthesize_frame_save, rs6000_emit_epilogue,
1165 rs6000_output_function_epilogue, rs6000_hash_constant, output_toc,
1166 output_function_profiler, rs6000_trampoline_size,
1167 rs6000_initialize_trampoline, find_addr_reg,
1168 rs6000_machopic_legitimize_pic_address,
1169 rs6000_initial_elimination_offset,
1170 rs6000_dbx_register_number): Likewise.
1171 * config/rs6000/rs6000.md (*fix_truncdfsi2_internal,
1172 *movdf_hardfloat32, *movdf_softfloat32, *fix_trunctfsi2_internal,
1173 *movti_power, *movti_string, call, call_value, sibcall,
1174 sibcall_value): Likewise.
1175 * config/rs6000/spe.md (*movdf_e500_double,
1176 *movv2si_internal): Likewise.
1177 * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Remove 'abort'
1180 2005-04-24 Richard Henderson <rth@redhat.com>
1183 * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
1184 * config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
1185 Deny modes smaller than 4 bytes.
1186 * config/i386/i386-protos.h: Update.
1188 2005-04-24 Ralf Corsepius <ralf.corsepius@rtems.org>
1190 * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
1191 Switch h8300-*-rtems* to ELF.
1193 2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
1195 * vec.h (VEC_safe_grow): Replace grow with safe_grow.
1197 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
1199 * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
1201 2005-04-23 Richard Guenther <rguenth@gcc.gnu.org>
1204 * fold-const.c: Fold &a[i]-&a[j] to i-j.
1206 2005-04-23 Zdenek Dvorak <dvorakz@suse.cz>
1208 * tree-ssa-loop-niter.c (tree_simplify_using_condition): Expand simple
1209 definitions of ssa names in condition. Split recusive part to ...
1210 (tree_simplify_using_condition_1): New function.
1211 (expand_simple_operations): New function.
1213 2005-04-23 Zdenek Dvorak <dvorakz@suse.cz>
1215 * tree-ssa-loop-ivopts.c (struct cost_pair): Add value field.
1216 (find_interesting_uses_cond): Do not use integer_zerop and
1217 integer_nonzerop to check for integer constants.
1218 (set_use_iv_cost): Record the value field.
1219 (determine_use_iv_cost_generic, determine_use_iv_cost_address,
1220 determine_use_iv_cost_outer): Set the value field of the cost pair.
1221 (may_eliminate_iv): Do not return the comparison code.
1222 (iv_elimination_compare): New function.
1223 (determine_use_iv_cost_condition): Set the value field. Record
1224 noneliminable invariants correctly.
1225 (rewrite_use_compare, rewrite_use_outer): Use the value field.
1227 2005-04-23 DJ Delorie <dj@redhat.com>
1229 * diagnostic.c (warning): Accept parameter to classify warning option.
1230 (warning0): New, for when a pointer to an error() like function is needed.
1231 * errors.c (warning): Likewise.
1232 * errors.h (warning, warning0): Adjust prototypes.
1233 * toplev.h (warning, warning0): Likewise.
1235 * attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
1236 c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
1237 c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
1238 fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
1239 genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
1240 reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
1241 tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
1242 tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
1244 * config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
1245 config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
1246 config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
1247 config/darwin.c, config/darwin.h, config/h8300/h8300.c,
1248 config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
1249 config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
1250 config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
1251 config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
1252 config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
1253 config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
1254 config/rs6000/aix52.h, config/rs6000/darwin.h,
1255 config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
1256 config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
1257 config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
1258 config/stormy16/stormy16.c, config/v850/v850-c.c,
1259 config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
1262 2005-04-23 Richard Henderson <rth@redhat.com>
1265 * simplify-rtx.c (simplify_binary_operation): Fix mode check before
1266 performing some integral scalar simplifications.
1268 2005-04-23 Richard Henderson <rth@redhat.com>
1271 * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
1272 simplifying CONST_VECTOR.
1274 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
1276 * tree-ssa-live.c (live_worklist): Take a stack allocated on
1277 heap as an argument. Update uses of stack.
1278 (calculate_live_on_entry): Allocate stack on heap.
1280 * tree-ssa-live.c (build_tree_conflict_graph): Allocate
1281 partition_link and tpa_nodes on heap.
1283 * tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
1284 (mark_stmt_necessary, propagate_necessity,
1285 mark_really_necessary_kill_operand_phis): Update uses of
1287 (tree_dce_init): Allocate worklist using VEC_alloc.
1288 (tree_dce_done): Free worklist using VEC_free.
1290 2005-04-23 Mike Stump <mrs@apple.com>
1292 * config/darwin.c (machopic_indirection_name): Don't use
1294 (darwin_emit_unwind_label): Use user_label_prefix instead of
1297 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
1299 * final.c, ipa-inline.c, varasm.c: Fix comment typos.
1301 2005-04-23 Hans-Peter Nilsson <hp@axis.com>
1303 * config.gcc <cris-*>: Specify .opt files.
1304 * config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt,
1305 config/cris/linux.opt: New files.
1306 * config/cris/aout.h (CRIS_SUBTARGET_SWITCHES)
1307 (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
1308 (TARGET_ELF): Override to 0.
1309 (CRIS_SUBTARGET_HANDLE_OPTION): Override to handle -melinux and
1310 -melinux-stacksize=N.
1311 * config/cris/cris.c: (cris_handle_option): New function.
1312 (TARGET_DEFAULT_TARGET_FLAGS): Override.
1313 (TARGET_HANDLE_OPTION): Override to cris_handle_option.
1314 (cris_override_options): Use MASK_*, not TARGET_MASK_*.
1315 * config/cris/cris.h (TARGET_MASK_SVINTO, TARGET_SVINTO,
1316 (TARGET_MASK_CCINIT, TARGET_CCINIT, TARGET_MASK_PDEBUG)
1317 (TARGET_PDEBUG, TARGET_MASK_SIDE_EFFECT_PREFIXES)
1318 (TARGET_SIDE_EFFECT_PREFIXES, TARGET_MASK_EXPAND_MUL)
1319 (TARGET_EXPAND_MUL, TARGET_MASK_STACK_ALIGN, TARGET_STACK_ALIGN)
1320 (TARGET_MASK_CONST_ALIGN, TARGET_CONST_ALIGN)
1321 (TARGET_MASK_DATA_ALIGN, TARGET_DATA_ALIGN)
1322 (TARGET_MASK_PROLOGUE_EPILOGUE, TARGET_PROLOGUE_EPILOGUE)
1323 (TARGET_MASK_ETRAX4_ADD, TARGET_ETRAX4_ADD)
1324 (TARGET_MASK_ALIGN_BY_32, TARGET_ALIGN_BY_32, TARGET_MASK_ELF)
1325 (TARGET_ELF, TARGET_MASK_LINUX, TARGET_LINUX)
1326 (TARGET_MASK_AVOID_GOTPLT, TARGET_AVOID_GOTPLT)
1327 (TARGET_MASK_MUL_BUG, TARGET_MUL_BUG, TARGET_SWITCHES)
1328 (CRIS_SUBTARGET_SWITCHES, TARGET_OPTIONS)
1329 (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
1330 (TARGET_LINUX): Define 0.
1331 (TARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
1332 (CRIS_SUBTARGET_DEFAULT): Define to 0, not TARGET_MASK_ELF.
1333 (CRIS_SUBTARGET_DEFAULT): New empty default macro.
1334 * config/cris/linux.h (CRIS_SUBTARGET_SWITCHES): Don't define.
1335 (TARGET_LINUX): Override to 1.
1336 (CRIS_SUBTARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
1338 2005-04-23 Nathan Sidwell <nathan@codesourcery.com>
1340 * haifa-sched.c (schedule_block): Fix thinko in previous
1341 assertification patch.
1343 2005-04-23 Richard Sandiford <rsandifo@redhat.com>
1345 * config.gcc (hppa[12]*-*-hpux10*): Add pa/pa-hpux.opt to
1346 $extra_options. Also add pa/pa-hpux1010.opt for hpux10.[1-9]*.
1347 (hppa*64*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file. Add
1348 pa/pa-hpux.opt, pa/pa-hpux1010.opt and pa/pa64-hpux.opt to
1349 $extra_options. Also add pa/pa-hpux1111.opt for hpux11.[1-9]*.
1350 (hppa[12]*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file. Add
1351 pa/pa-hpux.opt to $extra_options. Also add pa/pa-hpux1111.opt
1353 * config/pa/pa.h (architecture_type, rtx_def, pa_arch_string, pa_arch)
1354 (pa_fixed_range_string, pa_cpu_string, pa_unix_string, target_flags)
1355 (MASK_PA_11, MASK_DISABLE_FPREGS, TARGET_DISABLE_FPREGS)
1356 (MASK_NO_SPACE_REGS, TARGET_NO_SPACE_REGS, MASK_JUMP_IN_DELAY)
1357 (TARGET_JUMP_IN_DELAY, MASK_DISABLE_INDEXING, TARGET_DISABLE_INDEXING)
1358 (MASK_PORTABLE_RUNTIME, TARGET_PORTABLE_RUNTIME, MASK_GAS, TARGET_GAS)
1359 (MASK_SOFT_FLOAT, TARGET_SOFT_FLOAT, MASK_LONG_LOAD_STORE)
1360 (TARGET_LONG_LOAD_STORE, MASK_FAST_INDIRECT_CALLS)
1361 (TARGET_FAST_INDIRECT_CALLS, MASK_BIG_SWITCH, TARGET_BIG_SWITCH)
1362 (MASK_PA_20, MASK_SIO, TARGET_SIO, MASK_GNU_LD, TARGET_GNU_LD)
1363 (MASK_LONG_CALLS, TARGET_LONG_CALLS, TARGET_PA_11, TARGET_PA_20)
1364 (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS)
1365 (SUBTARGET_OPTIONS): Delete.
1366 (TARGET_PA_10): Redefine in terms of TARGET_PA_11 and TARGET_PA_20.
1367 (TARGET_SCHED_DEFAULT): Define to a PROCESSOR_* enum (PROCESSOR_8000)
1368 instead of a string.
1369 * config/pa/pa.c (pa_arch, pa_arch_string, pa_fixed_range_string)
1370 (pa_cpu_string, pa_unix_string): Delete.
1371 (pa_cpu): Initialize to TARGET_SCHED_DEFAULT.
1372 (flag_pa_unix): Initialize based on TARGET_HPUX_11_11 and
1374 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1375 (pa_handle_option): New function.
1376 (override_options): Remove handling of -march=, -mfixed-range=,
1377 -mschedule= and -munix=.
1378 * config/pa/pa-hpux.h (SUBTARGET_SWITCHES): Delete.
1379 * config/pa/pa-hpux1010.h (SUBTARGET_OPTIONS): Delete.
1380 * config/pa/pa-hpux10.h (SUBTARGET_OPTIONS): Delete.
1381 * config/pa/pa-hpux1111.h (SUBTARGET_OPTIONS): Delete.
1382 * config/pa/pa-hpux11.h (SUBTARGET_OPTIONS): Delete.
1383 * config/pa/pa64-hpux.h (SUBTARGET_SWITCHES): Delete.
1384 * config/pa/pa64-start.h (TARGET_PA_11, TARGET_PA_20): #undef before
1386 * config/pa/pa.opt: New file.
1387 * config/pa/pa-hpux.opt: New file.
1388 * config/pa/pa-hpux1010.opt: New file.
1389 * config/pa/pa-hpux1111.opt: New file.
1390 * config/pa/pa64-hpux.opt: New file.
1392 2005-04-22 David S. Miller <davem@davemloft.net>
1394 * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
1395 integer when it's mode is VOIDmode not DImode.
1397 2005-04-22 Geoffrey Keating <geoffk@apple.com>
1399 * config/rs6000/rs6000.md (sync_add<mode>_internal,
1400 sync_addshort_internal, sync_sub<mode>_internal, sync_andsi_internal,
1401 sync_anddi_internal, sync_boolsi_internal, sync_booldi_internal,
1402 sync_boolc<mode>_internal, sync_boolc<mode>_internal2,
1403 sync_boolcc<mode>_internal, sync_lock_test_and_set<mode>): Use
1404 "bne- $-xxx" rather than local labels.
1405 (sync_lock_release<mode>): Add second operand.
1406 (lwsync): Use .long rather than a more meaningful opcode.
1407 * doc/md.texi (Standard Names): Add description of second
1408 parameter to sync_lock_test_and_set.
1410 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
1412 PR tree-optimization/21088
1413 * fold-const.c (fold_unary, fold_binary, fold_ternary):
1415 * tree-vrp.c (compare_values): Use fold_binary to compare
1416 pointers. Use boolean_type_node as the type of a comparison
1417 expression being folded.
1418 * tree.h: Add prototypes for fold_unary, fold_binary,
1421 * tree-ssa-dom.c: Fix formatting.
1423 2005-04-22 Diego Novillo <dnovillo@redhat.com>
1425 * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
1426 * lambda-code.c (perfect_nestify): Mark virtual operands in
1427 the moved statement for renaming.
1428 * params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
1429 (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
1430 * params.h (MIN_VIRTUAL_MAPPINGS): Define.
1431 (VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
1432 * tree-flow.h (struct var_ann_d): Update comments.
1433 (rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
1434 allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
1435 debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
1436 debug_tree_ssa_stats, rewrite_ssa_into_ssa,
1437 dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
1438 debug_names_replaced_by): Remove declarations.
1439 (delete_update_ssa, get_current_def, set_current_def): Declare.
1440 (rewrite_into_loop_closed_ssa): Add new argument. Update
1442 * tree-into-ssa.c: Include params.h.
1443 (old_virtual_ssa_names): Remove. Update all users.
1444 (need_to_replace_names_p): Remove. Update all users.
1445 (struct update_ssa_stats_d): Declare.
1446 (update_ssa_stats): New local.
1447 (dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
1448 dump_tree_ssa_stats, debug_tree_ssa_stats,
1449 dump_update_ssa, debug_update_ssa,
1450 dump_names_replaced_by, debug_names_replaced_by): Declare.
1451 (get_current_def, set current_def): Make extern.
1452 (is_old_name, is_new_name): Protect against references
1453 past the end of the sets.
1454 (add_new_name_mapping): Assert that OLD and NEW are
1455 different SSA names for the same symbol.
1456 When adding a virtual mapping, update stats for virtual
1458 (insert_phi_nodes_for): If UPDATE_P is true, create the
1459 LHS of the new PHI by duplicating SSA name VAR.
1460 (insert_phi_nodes_1): Remove. Update all users.
1461 (insert_phi_nodes): Remove second argument. Update all
1463 (maybe_replace_use, maybe_replace_def): New.
1464 (rewrite_update_stmt): Call them.
1465 (mark_def_interesting): Remove calls to is_gimple_reg.
1466 (prepare_phi_args_for_update): Remove. Update all users.
1467 (prepare_block_for_update): Only process virtual operands
1468 and GIMPLE registers in normal form.
1469 (prepare_use_sites_for): New.
1470 (prepare_names_to_update): Rename from prepare_def_sites.
1471 Call prepare_use_sites_for.
1472 (dump_update_ssa): Rename from dump_repl_tbl.
1474 Show statistics for virtual mapping heuristic.
1475 (debug_update_ssa): Rename from debug_debug_repl_tbl.
1476 (init_update_ssa): Initialize UPDATE_SSA_STATS.
1477 (delete_update_ssa): Make extern.
1478 (mark_set_for_renaming): If the set is empty, do nothing.
1479 (release_ssa_name_after_update_ssa): Update comment.
1480 (insert_updated_phi_nodes_for): Do not remove existing
1481 PHI nodes for symbols.
1482 (switch_virtuals_to_full_rewrite_p): New.
1483 (switch_virtuals_to_full_rewrite): New.
1484 (update_ssa): Call them.
1485 Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
1486 for every statement before updating.
1487 If all the names in NEW_SSA_NAMES have been marked for
1488 removal, do nothing.
1489 Only start at the top of the CFG if there are symbols in
1491 (ssa_rewrite_finalize_block): Remove.
1492 (ssa_register_new_def): Remove.
1493 (ssa_rewrite_stmt): Remove.
1494 (ssa_rewrite_phi_arguments): Remove.
1495 (ssa_rewrite_initialize_block): Remove.
1496 (ssa_mark_def_sites): Remove.
1497 (ssa_mark_def_sites_initialize_block): Remove.
1498 (ssa_mark_phi_uses): Remove.
1499 (rewrite_ssa_into_ssa): Remove.
1500 * tree-phinodes.c (find_phi_node_for): Remove.
1501 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
1503 * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
1504 Remove calls to verify_dominators and
1505 verify_loop_structure.
1506 (tree_unswitch_single_loop): Call update_ssa.
1507 * tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
1510 (delete_tree_ssa): Assert that need_ssa_update_p returns
1512 * tree-vect-transform.c (vect_transform_loop): Call update_ssa.
1513 * tree-vectorizer.c (allocate_new_names, rename_def_op,
1514 free_new_names): Remove. Update all users.
1515 (rename_use_op): Call get_current_def.
1516 (rename_variables_in_bb): Do not handle any real or
1518 (slpeel_update_phis_for_duplicate_loop): Call
1519 get_current_def and set_current_def instead of using
1521 (slpeel_update_phi_nodes_for_guard2): Reformat comments.
1522 (slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
1523 ssa_names_to_replace and delete_update_ssa.
1524 * doc/invoke.texi: Document --param min-virtual-mappings
1525 and --param virtual-mappings-ratio.
1527 2005-04-22 Diego Novillo <dnovillo@redhat.com>
1529 * tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
1530 for newly created PHI nodes.
1531 Call create_new_def_for for every new V_MAY_DEF and
1532 V_MUST_DEF on the copied statement.
1533 (struct ssa_name_map_entry): Remove.
1534 (ssa_name_map_entry_hash): Remove.
1535 (ssa_name_map_entry_eq): Remove.
1536 (allocate_ssa_names): Remove.
1537 (rewrite_to_new_ssa_names_def): Remove.
1538 (rewrite_to_new_ssa_names_use): Remove.
1539 (rewrite_to_new_ssa_names_bb): Remove.
1540 (rewrite_to_new_ssa_names): Remove.
1541 (tree_duplicate_sese_region): Remove variables ver,
1542 definitions, phi, ssa_name_map and bi.
1543 Call need_ssa_update_p instead of any_marked_for_rewrite_p.
1545 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
1546 update_ssa instead of rewrite_ssa_into_ssa.
1547 * tree-ssa-loop-manip.c (add_exit_phis_edge): Call
1549 (find_uses_to_rename_use): Add argument 'need_phis'.
1550 (find_uses_to_rename_stmt): Do not scan virtual operands.
1551 (find_uses_to_rename): Only scan PHI nodes for
1553 (rewrite_into_loop_closed_ssa): Call update_ssa.
1554 (check_loop_closed_ssa_use): Ignore virtual operands.
1555 (check_loop_closed_ssa_stmt): Likewise.
1556 (verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
1558 (rename_variables, set_phi_def_stmts): Remove.
1559 (tree_duplicate_loop_to_header_edge): Reformat comment.
1560 Remove variables BB, I and DEFINITIONS.
1561 Call need_ssa_update_p.
1563 (lv_adjust_loop_header_phi): Reformat comment.
1564 * tree-ssanames.c (ssa_names_to_rewrite): Remove.
1565 (marked_for_rewrite_p, any_marked_for_rewrite_p,
1566 mark_for_rewrite, unmark_all_for_rewrite,
1567 marked_ssa_names): Remove. Update all users.
1568 (release_ssa_name): If VAR has been registered for SSA
1569 updating, do nothing.
1570 * tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
1571 (build_assert_expr_for): Call register_new_name_mapping.
1572 (insert_range_assertions): Update call to update_ssa.
1573 * tree.h (mark_for_rewrite, unmark_all_for_rewrite,
1574 marked_for_rewrite_p, any_marked_for_rewrite_p,
1575 marked_ssa_names): Remove.
1577 2005-04-22 Jeff Law <law@redhat.com>
1579 * tree-ssa-dom.c (block_defs_stack): Remove, no longer needed.
1580 (restore_currdefs_to_original_value): Likewise.
1581 (register_definitions_for_stmt): Likewise.
1582 (tree_ssa_dominator_optimize): No longer initialize CURRENT_DEF
1583 for each variable. Do not allocate/free block_defs_stack either.
1584 Do not iterate if we just thread jumps. Only iterate if the
1585 tree_cleanup_cfg does useful work (temporary).
1586 (dom_opt_initialize_block): No longer push a marker on
1588 (dom_opt_finalize_block): Removal call to restore currdefs.
1589 Relax restrictions for recording edge equivalences.
1590 (record_equivalences_from_phis): No longer need to track
1592 (optimize_stmt): Similarly.
1593 (thread_across_edge): Simplify by removing the requirement that
1594 statements in the block we are threading through must be nops.
1595 (initialize_hash_element): Handle GOTO_EXPR.
1597 2005-04-22 David S. Miller <davem@davemloft.net>
1599 * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
1601 * config/sparc/sparc.c (sparc_rtx_costs): Likewise, and
1602 fix check on CONST_DOUBLE mode. It should be VOIDmode
1603 when it is representing an integer.
1605 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
1607 * builtins.c (gimplify_va_arg_expr): Reword comments to avoid
1608 'abort'. Use gcc_assert and gcc_unreachable as appropriate.
1609 * c-format.c (get_constant, decode_format_attr, get_flag_spec,
1610 find_char_info_specifier_index,
1611 find_length_info_modifier_index): Likewise.
1612 * c-typeck.c (composite_type, pop_init_level): Likewise.
1613 * combine.c (cant_combine_insn_p, try_combine): Likewise.
1614 * cse.c (cse_insn): Likewise
1615 * dominance.c (calc_dfs_tree): Likewise
1616 dwarf2out.c (loc_descriptor_from_tree_1,
1617 add_abstract_origin_attribute, force_decl_die,
1618 force_type_die): Likewise
1619 emit-rtl.c (operand_subword_force): Likewise
1620 explow.c (hard_function_value): Likewise
1621 expmed.c (store_bit_field, expand_divmod,
1622 emit_store_flag_force): Likewise
1623 expr.c (emit_move_multi_word, store_expr,
1624 expand_expr_real_1): Likewise
1625 final.c (this_is_asm_operands, shorten_branches, final_scan_insn,
1626 output_operand): Likewise
1627 flow.c (recompute_reg_usage): Likewise
1628 * function.c (assign_stack_temp_for_type, assign_temp,
1629 handle_epilogue_set): Likewise
1630 * genextract.c (main): Likewise
1631 * gimplify.c (mostly_copy_tree_r, gimplify_return_expr,
1632 gimplify_modify_expr_rhs, gimplify_expr): Likewise
1633 * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element,
1634 ready_remove, rm_line_notes, rm_other_notes,
1635 schedule_block): Likewise
1636 mips-tfile.c (copy_object, out_of_bounds): Likewise
1638 2005-04-22 David Edelsohn <edelsohn@gnu.org>
1641 * config/rs6000/default64.h (TARGET_DEFAULT): Add MASK_PPC_GFXOPT.
1642 * config/rs6000/rs6000.c (processor_target_table): Rename rs64a to
1643 rs64. Add MASK_PPC_GFXOPT to powerpc64 and rs64.
1644 (rs6000_init_libfuncs): Set TFmode optabs to xlq names if
1646 * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
1648 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
1650 * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
1651 (gcc_tree_to_linear_expression): Convert to heap allocated
1653 (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
1654 lbv_to_gcc_expression, lle_to_gcc_expression,
1655 lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
1656 perfect_nestify): Likewise.
1657 lambda.h (gcc_loopnest_to_lambda_loopnest,
1658 lambda_loopnest_to_gcc_loopnest): Likewise.
1659 tree-loop-linear.c (linear_transform_loops): Likewise.
1661 2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
1663 * config/sparc/predicates.md (arith_double_operand): Use
1664 trunc_int_for_mode if HOST_BITS_PER_WIDE_INT >=64.
1665 * config/sparc/sparc.md (movqi, movhi, movsi, movqi): Use gen_int_mode.
1666 (DImode, DFmode constant splitters): Likewise. Remove code for
1667 TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT < 64.
1668 (logical constant splitters): Use const_int_operand predicate.
1669 (lshrsi3_extend): Remove code for TARGET_ARCH64 &&
1670 HOST_BITS_PER_WIDE_INT < 64.
1672 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
1674 * config/pa/pa.c (legitimize_pic_address): Use gcc_assert and
1675 gcc_unreachable as appropriate.
1676 (force_mode, emit_move_sequence, singlemove_string,
1677 output_move_double, output_fp_move_double, find_addr_reg,
1678 output_block_move, output_block_clear, output_and,
1679 output_64bit_and, output_ior, output_64bit_ior, store_reg_modify,
1680 pa_adjust_cost, pa_issue_rate, print_operand,
1681 output_global_address, output_arg_descriptor, output_cbranch,
1682 output_lbranch, output_bb, output_bvb, output_dbra, output_movb,
1683 output_call): Likewise.
1684 * config/pa/pa.md (call, call_value, sibcall, sibcall_value,
1685 prefetch, prefetch_cc, prefetch_nocc): Likewise.
1687 2005-04-22 Zdenek Dvorak <dvorakz@suse.cz>
1689 * Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
1690 _gcov_pow2_profiler and _gcov_one_value_profiler.
1691 (tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
1692 (GTFILES): Add $(srcdir)/tree-profile.c.
1693 * gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
1694 __gcov_one_value_profiler): Declare.
1695 * gimplify.c (force_gimple_operand): Check whether the statements
1696 should be produced in ssa form.
1697 (force_gimple_operand_bsi): New function.
1698 * libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
1699 __gcov_one_value_profiler): New functions.
1700 * rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
1701 the profiled value is a power of two or not.
1702 * tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
1703 * tree-flow.h (in_ssa_p): Declare.
1704 (force_gimple_operand_bsi): Declare.
1705 * tree-into-ssa.c (in_ssa_p): New variable.
1706 (rewrite_into_ssa): Set in_ssa_p.
1707 * tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
1708 * tree-profile.c: Include ggc.h and gt-tree-profile.h.
1709 (gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
1710 tree_one_value_profiler_fn): New variables.
1711 (tree_init_edge_profiler): Initialize the profiler function decls.
1712 (tree_gen_edge_profiler): Use global gcov_type_node.
1713 (prepare_instrumented_value): New function.
1714 (tree_gen_interval_profiler, tree_gen_interval_profiler,
1715 tree_gen_one_value_profiler): Call the library functions instead of
1716 creating instrumentation code.
1717 * tree.c (build_fn_decl): New function.
1718 * tree.h (build_fn_decl): Declare.
1719 * value-prof.c (rtl_divmod_values_to_profile,
1720 rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
1721 tree_mod_pow2_value_transform, tree_find_values_to_profile):
1722 Do not handle may_be_other and precise values of exponents at pow2
1724 (tree_mod_subtract_transform): Reflect that value field of
1725 histogram has changed meaning.
1726 (tree_divmod_values_to_profile): Record the values correctly.
1727 (tree_values_to_profile): Update comment.
1728 * value-prof.h (struct histogram_value_t): Remove pow2 data.
1730 2005-04-22 Joseph S. Myers <joseph@codesourcery.com>
1732 * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
1735 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
1737 * config/i386/i386.md (length_immediate): Use gcc_assert or
1738 gcc_unreachable, as appropriate.
1739 (*movsi_1, *movqi_1, reload_outqi, *movdi_1_rex64, *pushsf,
1740 *pushsf_rex64, *truncxfsf2_mixed, *truncxfsf2_i387,
1741 *truncxfdf2_mixed, *truncxfdf2_i387, *adddi_1_rex64,
1742 *adddi_2_rex64, *adddi_3_rex64, *adddi_4_rex64, *adddi_5_rex64,
1743 *addsi_1, addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1744 *addsi_3_zext, *addsi_4, *addsi_5, *addhi_1_lea, *addhi_1,
1745 *addhi_2, *addhi_3, *addhi_4, *addhi_5, *addqi_1_lea, *addqi_1,
1746 *addqi_1_slp, *addqi_2, *addqi_3, *addqi_4, *addqi_5, addqi_ext_1,
1747 *addqi_ext_1_rex64, *anddi_1_rex64, *andsi_1, *andhi_1,
1748 *ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashlsi3_1, *ashlsi3_1_zext,
1749 *ashlsi3_cmp, *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1,
1750 *ashlhi3_cmp, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1751 pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64,
1752 pro_epilogue_adjust_stack_rex64_2, prefetch, *prefetch_sse,
1753 *prefetch_sse_rex): Likewise.
1754 * config/i386/predicates.md (x86_64_immediate_operand,
1755 x86_64_zext_immediate_operand, symbolic_operand,
1756 no_seg_address_operand, aligned_operand,
1757 memory_displacement_operand): Likewise.
1758 * config/i386/sse.md (*mov<mode>_internal,
1759 *movv2df_internal): Likewise.
1761 2005-04-22 Jan Hubicka <jh@suse.cz>
1763 * Makefile.in (ipa.o, ipa-inline.o): New files.
1764 * cgraph.h (cgraph_remove_unreachable_nodes, cgraph_postorder,
1765 cgraph_decide_inlining_incrementally, cgraph_clone_inlined_nodes,
1766 cgraph_mark_inline_edge, cgraph_default_inline_p): Declare.
1767 * cgraphunit.c (cgraph_default_inline_p,
1768 cgraph_decide_inlining_incrementally, ncalls_inlined,
1769 nfunctions_inlined, initial_insns, overall_insns,
1770 cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
1771 cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
1772 cgraph_mark_inline, cgraph_check_inline_limits,
1773 cgraph_default_inline_p, cgraph_recursive_inlining_p,
1774 update_callee_keys, lookup_recursive_calls,
1775 cgraph_decide_recursive_inlining, cgraph_set_inline_failed,
1776 cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining,
1777 cgraph_decide_inlining_incrementally, cgraph_gate_inlining,
1778 pass_ipa_inline): Move to ipa-inline.c
1779 (cgraph_postorder, cgraph_remove_unreachable_nodes): Move to ipa.c
1781 * ipa-inline.c: New file.
1783 2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
1785 * doc/invoke.texi (SPARC options): Document that -mapp-regs
1786 is turned off by default on Solaris.
1788 2005-04-21 Roger Sayle <roger@eyesopen.com>
1790 * c-common.h (objc_build_method_signature): Update prototype.
1791 * stub-objc.c (objc_build_method_signature): Update the stub
1792 implementation to accept and ignore additional parameter.
1793 * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass
1794 the value of ellipsis to objc_build_method_signature instead
1795 of setting TREE_OVERFLOW on the parms TREE_LIST node.
1797 2005-04-21 Geoffrey Keating <geoffk@apple.com>
1799 * config/rs6000/rs6000-protos.h (rs6000_emit_sync): New.
1800 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Use
1801 gen_rtx_* not gen_rtx_fmt_*.
1802 (rs6000_emit_vector_select): Likewise.
1803 (rs6000_emit_sync): New.
1804 * config/rs6000/rs6000.md (GPR, INT, INT1): New mode macros.
1805 (larx, stcx, cmp): New mode substitutions.
1806 (UNSPEC_SYNC, UNSPEC_SYNC_OP, UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC,
1807 UNSPEC_ISYNC): New constants.
1808 (rlwinm): Give name.
1809 (memory_barrier, isync, lwsync): New insns.
1810 (sync_compare_and_swap<mode>, sync_lock_test_and_set<mode>): New insn.
1811 (sync_lock_release<mode>): New expander.
1812 (sync_add<mode>, sync_sub<mode>, sync_ior<mode>, sync_and<mode>,
1813 sync_xor<mode>, sync_nand<mode>, sync_old_add<mode>,
1814 sync_old_sub<mode>, sync_old_ior<mode>, sync_old_and<mode>,
1815 sync_old_xor<mode>, sync_old_nand<mode>, sync_new_add<mode>,
1816 sync_new_sub<mode>, sync_new_ior<mode>, sync_new_and<mode>,
1817 sync_new_xor<mode>, sync_new_nand<mode>): New expanders.
1818 (sync_add<mode>_internal, sync_addshort_internal,
1819 sync_sub<mode>_internal, sync_andsi_internal, sync_anddi_internal,
1820 sync_boolsi_internal, sync_booldi_internal, sync_boolc<mode>_internal,
1821 sync_boolc<mode>_internal2, sync_boolcc<mode>_internal): New insns.
1823 * doc/md.texi (Standard Names): sync_compare_and_swap's operand 0
1824 is the memory before, not after, the operation. Clarify
1825 barrier requirements.
1827 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1829 * cfghooks.h (struct cfg_hooks): Reword comments to avoid 'abort'.
1830 * lambda.h (lambda_vector_min_nz): Likewise.
1831 * langhooks.h (struct lang_hooks_for_types,
1832 struct lang_hooks): Likewise.
1833 * output.h (assemble_integer, this_is_asm_operands): Likewise.
1836 * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
1838 * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
1839 comments to avoid 'abort'. Use gcc_assert as necessary.
1840 * opts.c (common_handle_option): Likewise.
1841 * pretty-print.c (pp_base_format_text): Likewise.
1842 * print-rtl.c (print_rtx): Likewise.
1843 * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
1844 * regmove.c (try_auto_increment): Likewise.
1845 * reload.c (find_valid_class, find_reloads_toplev,
1846 find_equiv_reg): Likewise.
1847 * reload1.c (reload, forget_old_reloads_1, function_invariant_p,
1848 merge_assigned_reloads): Likewise.
1849 * tree-inline.c (inline_forbidden_p_1,
1850 estimate_num_insns_1): Likewise.
1851 * tree-optimize.c (execute_todo): Likewise.
1852 * tree-outof-ssa.c (eliminate_phi): Likewise.
1853 * tree-ssa-alias.c (add_pointed_to_expr): Likewise.
1854 * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
1855 * tree-ssa-operands.c (parse_ssa_operands,
1856 get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
1857 * tree-ssa-pre.c (find_or_generate_expression): Likewise.
1858 * tree-ssanames.c (release_ssa_name): Likewise.
1859 * tree.c (int_bit_position, int_byte_position, tree_low_cst,
1860 walk_tree): Likewise.
1862 * tree-ssa-operands.c (verify_abort): Fold into ..
1863 (verify_imm_links): ... here.
1865 2005-04-21 Richard Henderson <rth@redhat.com>
1867 * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
1868 on non-memory operand for previous inversion.
1870 2005-04-21 Devang Patel <dpatel@apple.com>
1872 PR optimization/20994
1873 * tree-if-conv.c (find_phi_replacement_condition): Avoid generating
1874 x = !(a == b) : p , q;.
1875 (pass_if_conversion): Verify stmts and flow.
1877 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1879 * optabs.c (gen_conditional_trap): Restore #define.
1881 * alias.c (true_dependence): Remove 'abort' from comments. Use
1882 gcc_assert and gcc_unreachable as appropriate.
1883 (canon_true_dependence): Likewise.
1884 * bb-reorder.c (connect_traces): Likewise.
1885 * c-common.c (c_add_case_label): Likewise.
1886 * c-decl.c (finish_function): Likewise.
1887 * caller-save.c (insert_restore, insert_save): Likewise.
1888 * cfg.c (update_bb_profile_for_threading): Likewise.
1889 * cfganal.c (flow_active_insn_p): Likewise.
1890 * cfgexpand.c (add_reg_br_prob_note): Likewise.
1891 * cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
1892 cfg_layout_merge_blocks): Likewise.
1893 * ifcvt.c (cond_exec_process_insns, merge_if_block,
1894 find_if_block): Likewise.
1895 * integrate.c (allocate_initial_values): Likewise.
1896 * jump.c (reverse_condition, reverse_condition_maybe_unordered,
1897 swap_condition, unsigned_condition, signed_condition,
1898 mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
1899 reg_or_subregno): Likewise.
1900 * lambda-code.c (lambda_compute_auxillary_space,
1901 lambda_transform_legal_p): Likewise.
1902 * lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
1903 * langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
1904 lhd_incomplete_type_error, lhd_expand_expr,
1905 lhd_types_compatible_p, lhd_tree_size): Likewise.
1906 * lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
1907 * local-alloc.c (update_equiv_regs): Likewise.
1908 * loop-unroll.c (peel_loop_completely
1909 unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
1910 peel_loop_simple, unroll_loop_stupid,
1911 analyze_iv_to_split_insn): Likewise.
1912 * loop.c (gen_prefetch, find_and_verify_loops,
1913 basic_induction_var): Likewise.
1914 * modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
1915 * value-prof.c (tree_find_values_to_profile): Likewise.
1916 * varasm.c (named_section, default_assemble_integer,
1917 decode_addr_const): Likewise.
1919 2005-04-21 Alan Modra <amodra@bigpond.net.au>
1920 Fariborz Jahanian <fjahanian@apple.com>
1922 * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Fix size of
1923 portion of argument passed in fpr.
1924 * expr.c (emit_push_insn): Fix computation of 'offset' used to
1925 decide on partial argument save on stack.
1927 2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
1929 * config/sparc/predicates.md, config/sparc/sparc.md: Fix
1932 2005-04-21 Jan Hubicka <jh@suse.cz>
1934 * cgraphunit.c: Include tree-pass.h
1935 (cgraph_decide_recursive_inlining,
1936 cgraph_decide_inlining_of_small_function, cgraph_set_inline_failed,
1937 cgraph_decide_inlining): Dump goes to dump_file.
1938 (cgraph_optimize): Call ipa passes instead of inliner.
1939 (cgraph_gate_inlining, pass_ipa_inline): New.
1940 * tree-optimize.c (all_ipa_passes): New static variable.
1941 (register_one_dump_file): Dead with IPA passes.
1942 (register_dump_files): Likewise.
1943 (init_tree_optimization_passes): Initialize IPA passes.
1944 (execute_todo): Do cgraph dump when asked to, do not dump function body
1946 * tree-pass.h (TODO_dump_cgraph): New macro.
1947 (ipa_passes): Declare.
1948 * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
1950 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1952 * config/i386/i386.c (type_natural_mode): Use gcc_unreachable and
1953 gcc_assert instead of abort.
1954 (classify_argument, examine_argument, construct_container,
1955 contains_128bit_aligned_vector_p, ix86_check_movabs,
1956 standard_80387_constant_opcode, standard_80387_constant_rtx,
1957 ix86_initial_elimination_offset, ix86_compute_frame_layout,
1958 pro_epilogue_adjust_stack, ix86_expand_epilogue,
1959 ix86_address_cost, legitimate_address_p, legitimize_pic_address,
1960 legitimize_tls_address, output_pic_addr_const,
1961 i386_output_dwarf_dtprel, put_condition_code, print_reg,
1962 get_some_local_dynamic_name, print_operand, print_operand_address,
1963 output_387_binary_op, emit_i387_cw_initialization,
1964 output_fix_trunc, output_fp_compare, ix86_output_addr_vec_elt,
1965 ix86_expand_clear, ix86_expand_binary_operator,
1966 ix86_expand_unary_operator, ix86_match_ccmode, ix86_cc_mode,
1967 ix86_cc_modes_compatible, ix86_fp_comparison_codes,
1968 ix86_fp_comparison_arithmetics_cost, ix86_expand_fp_compare,
1969 ix86_expand_branch, ix86_expand_setcc,
1970 ix86_expand_carry_flag_compare, ix86_expand_fp_movcc,
1971 ix86_expand_int_addcc, ix86_split_to_parts, ix86_split_long_move,
1972 ix86_expand_movmem, ix86_expand_call, assign_386_stack_local,
1973 memory_address_length, ix86_attr_length_immediate_default,
1974 ix86_attr_length_address_default, ix86_agi_dependant,
1975 x86_initialize_trampoline, ix86_init_mmx_sse_builtins,
1976 ix86_expand_binop_builtin, ix86_force_to_memory,
1977 ix86_secondary_memory_needed, ix86_avoid_jump_misspredicts,
1978 x86_emit_floatuns): Likewise.
1979 * config/i386/netware.c (gen_regparm_prefix,
1980 i386_nlm_strip_name_encoding): Likewise.
1981 * config/i386/winnt.c (i386_pe_mark_dllexport): Likewise.
1983 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1985 * optabs.c (gen_condiational_trap): Remove #define.
1986 (add_equal_note): Assertify. Remove explicit indirection from
1987 call via function pointer.
1988 (expand_ternary_op, expand_simple_binop, expand_binop,
1989 expand_twoval_unop, expand_twoval_binop,
1990 expand_twoval_binop_libfunc, expand_simple_unop expand_unop,
1991 emit_unop_insn, emit_no_conflict_block, prepare_cmp_insn,
1992 prepare_operand emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
1993 prepare_float_lib_cmp, emit_conditional_move,
1994 emit_conditional_add, gen_add2_insn, gen_add3_insn,
1995 have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn,
1996 expand_float, expand_fix, debug_optab_libfuncs, gen_cond_trap,
1997 vector_compare_rtx, expand_vec_cond_expr): Likewise.
1999 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
2001 * vec.h: Update API to separate allocation mechanism from type.
2002 (VEC_safe_grow): New.
2003 * vec.c (calculate_allocation): New.
2004 (vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
2005 (vec_gc_free, vec_heap_free): Remove.
2006 * gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
2008 (mangle_macro_name): New.
2009 (struct macro_def): New.
2010 (struct macro): Add multiple argument values.
2011 (macro_expans_end): New.
2012 (push_macro_expansion): Chain on new macro. Process multiple
2013 args, create follow on expansion. Return follow on argument.
2014 (macro_input): Deal with multiple arguments.
2016 * tree.h: Define VEC(tree,heap) and VEC(tree,gc).
2017 (struct tree_binfo): Adjust.
2018 * basic-block.h: Define VEC(edge,gc).
2019 (struct edge_def): Adjust.
2020 (struct basic_block_def, struct edge_iterator): Likewise.
2021 (ei_container, ei_start_1, ei_last_1): Likewise.
2022 * cfg.c (connect_src, connect_dest): Likewise.
2023 * cfgrtl.c (force_nonfallthru_and_redirect)
2024 * dbxout.c (dbxout_type)
2025 * dwarf2out.c (gen_member_die)
2026 * lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
2027 (gcc_tree_to_linear_expression): Adjust.
2028 (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
2029 lbv_to_gcc_expression, lle_to_gcc_expression,
2030 lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
2031 perfect_nestify): Likewise.
2032 * lambda.h (gcc_loopnest_to_lambda_loopnest,
2033 lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
2034 * profile.c (instrument_values): Adjust.
2035 * tree-cfg.c (modified_noreturn_calls): Adjust.
2036 (remove_fallthru_edge): Likewise.
2037 * tree-dump.c (dequeue_and_dump): Adjust.
2038 * tree-flow-inline.h (mark_stmt_modified): Adjust.
2039 * tree-flow.h (modified_noreturn_calls): Adjust.
2040 (tree_on_heap): Remove. (yay!)
2041 (register_new_def): Adjust.
2042 * tree-into-ssa.c: Define VEC(int,heap).
2043 (block_defs_stack): Adjust.
2044 (find_idf, insert_phi_nodes, register_new_def,
2045 rewrite_initialize_block, rewrite_finalize_block,
2046 register_new_update_single, rewrite_update_init_block,
2047 rewrite_update_fini_block, rewrite_blocks,
2048 ssa_rewrite_finalize_block, ssa_register_new_def,
2049 ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
2050 * tree-loop-linear.c (linear_transform_loops): Adjust.
2051 * tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
2052 (push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
2053 * tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
2054 stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
2055 vrp_variables_stack): Adjust declarations.
2056 (tree_ssa_dominator_optimize): Adjust.
2057 (dom_opt_initialize_block, remove_local_expressions_from_table,
2058 restore_nonzero_vars_to_original_value,
2059 restore_vars_to_original_value,
2060 restore_currdefs_to_original_value, dom_opt_finalize_block,
2061 record_var_is_nonzero, record_cond, record_const_or_copy_1,
2062 optimize_stmt, update_rhs_and_lookup_avail_expr,
2063 lookup_avail_expr, record_range): Likewise.
2064 * tree-ssa-pre.c: Define VEC(basic_block,heap).
2065 (compute_antic_aux): Adjust.
2066 (inserted_exprs, create_expression_by_pieces,
2067 insert_into_preds_of_block, eliminate, mark_operand_necessary,
2068 remove_dead_inserted_code, fini_pre): Likewise.
2069 * tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
2070 (varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
2071 ssa_prop_init): Likewise.
2072 * tree-ssa.c: Define VEC(bitmap,heap).
2073 (verify_name_tags): Adjust.
2074 * value-prof.c (rtl_divmod_values_to_profile): Adjust.
2075 (insn_prefetch_values_to_profile, rtl_find_values_to_profile,
2076 tree_divmod_values_to_profile, tree_find_values_to_profile,
2077 value_profile_transformations): Likewise.
2078 * value-prof.h: Define VEC(histogram_value,heap).
2079 * varasm.c: Remove alias_pair pointer typedef, define
2081 (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
2083 * config/pa/pa.c (typedef extern_symbol): Typedef the structure,
2084 not a pointer to it. Create an object vector.
2085 (extern_symbols): Turn into an object vector.
2086 (pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
2088 2005-04-21 Sebastian Pop <pop@cri.ensmp.fr>
2091 * Makefile.in (tree-chrec.o): Depend on params.h.
2092 * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
2094 * tree-chrec.c: Depend on params.h. Replace build with buildN,
2095 and fold build with fold_buildN.
2096 (chrec_fold_plus_1): Fail with a chrec_don_know when the size of
2097 the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
2098 (tree_contains_chrecs): Compute an estimation of the size of the
2100 * tree-chrec.h (tree_contains_chrecs): Modify its declaration.
2101 (tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
2102 * tree-scalar-evolution.c (simple_iv): Ditto.
2103 * doc/invoke.texi (scev-max-expr-size): Documented.
2105 2005-04-21 Richard Sandiford <rsandifo@redhat.com>
2107 * config.gcc (*-*-darwin*): Add darwin.opt to $extra_options.
2108 (i[34567]86-pc-msdosdjgpp*): Likewise i386/djgpp.opt.
2109 (i[34567]86-*-lynxos*, powerpc-*-lynxos*): Likewise lynx.opt.
2110 (i[34567]86-*-sco3.2v5*): Likewise i386/sco5.opt.
2111 (i[34567]86-*-pe, i[34567]86-*-cygwin*, i[34567]86-*-mingw32*)
2112 (i[34567]86-*-uwin*): Likewise i386/cygming.opt.
2113 * config/darwin.h (darwin_one_byte_bool, darwin_fix_and_continue)
2114 (darwin_fix_and_continue_switch, SUBTARGET_OPTIONS): Delete.
2115 * config/darwin.c (darwin_one_byte_bool, darwin_fix_and_continue)
2116 (darwin_fix_and_continue_switch): Delete.
2117 * config/lynx.h (SUBTARGET_OS_LYNX_SWITCHES): Delete.
2118 (SUBTARGET_SWITCHES): Delete.
2119 * config/i386/i386.h (target_flags, MASK_80387, MASK_RTD)
2120 (MASK_ALIGN_DOUBLE, MASK_SVR3_SHLIB, MASK_IEEE_FP, MASK_FLOAT_RETURNS)
2121 (MASK_NO_FANCY_MATH_387, MASK_OMIT_LEAF_FRAME_POINTER)
2122 (MASK_STACK_PROBE, MASK_NO_ALIGN_STROPS, MASK_INLINE_ALL_STROPS)
2123 (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS, MASK_MMX)
2124 (MASK_SSE, MASK_SSE2, MASK_SSE3, MASK_3DNOW, MASK_3DNOW_A)
2125 (MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT)
2126 (MASK_TLS_DIRECT_SEG_REFS, MASK_NO_RED_ZONE, TARGET_80387)
2127 (TARGET_RTD, TARGET_ALIGN_DOUBLE, TARGET_PUSH_ARGS)
2128 (TARGET_ACCUMULATE_OUTGOING_ARGS, TARGET_SVR3_SHLIB, TARGET_IEEE_FP)
2129 (TARGET_128BIT_LONG_DOUBLE, TARGET_NO_FANCY_MATH_387)
2130 (TARGET_USE_FANCY_MATH_387, TARGET_OMIT_LEAF_FRAME_POINTER)
2131 (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Delete.
2132 (TARGET_FLOAT_RETURNS_IN_80387): Make an alias of TARGET_FLOAT_RETURNS.
2133 (TARGET_64BIT): Undef before redefining.
2134 (TARGET_TLS_DIRECT_SEG_REFS, TARGET_STACK_PROBE)
2135 (TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS, TARGET_SSE)
2136 (TARGET_SSE2, TARGET_SSE3, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A)
2137 (TARGET_RED_ZONE, TARGET_USE_MS_BITFIELD_LAYOUT, TARGET_SWITCHES)
2138 (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS)
2139 (ix86_fpmath_string, ix86_tls_dialect_string, ix86_cmodel_string)
2140 (ix86_asm_string, ix86_regparm, ix86_regparm_string)
2141 (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
2142 (ix86_debug_arg_string, ix86_debug_addr_string)
2143 (ix86_align_loops_string, ix86_align_jumps_string)
2144 (ix86_align_funcs_string): Delete.
2145 * config/i386/cygming.h (MASK_NOP_FUN_DLLIMPORT)
2146 (TARGET_NOP_FUN_DLLIMPORT, SUBTARGET_SWITCHES): Delete.
2147 * config/i386/djgpp.h (MASK_BNU210, SUBTARGET_SWITCHES): Delete.
2148 (SUBTARGET_OVERRIDE_OPTIONS): Check TARGET_BNU210.
2149 * config/i386/lynx.h (SUBTARGET_SWITCHES): Delete.
2150 * config/i386/sco5.h (MASK_COFF, TARGET_ELF)
2151 (SUBTARGET_SWITCHES): Delete.
2152 * config/i386/i386.c (ix86_debug_arg_string): Delete.
2153 (ix86_debug_addr_string): Delete.
2154 (ix86_cmodel_string, ix86_asm_string, ix86_tls_dialect_string)
2155 (ix86_fpmath_string, ix86_regparm_string, ix86_regparm)
2156 (ix86_align_loops_string, ix86_align_jumps_string)
2157 (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
2158 (ix86_align_funcs_string): Make static.
2159 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2160 (ix86_handle_option): New function.
2161 (TARGET_USE_MS_BITFIELD_LAYOUT): Delete.
2162 (ix86_ms_bitfield_layout_p): Check TARGET_MS_BITFIELD_LAYOUT.
2163 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove handling
2164 of darwin_fix_and_continue_switch.
2165 (darwin_one_byte_bool): Delete.
2166 * config/rs6000/lynx.h (EXTRA_SUBTARGET_SWITCHES): Delete.
2167 * config/rs6000/rs6000.c (rs6000_override_options): Update assignment
2168 to darwin_one_byte_bool.
2169 * config/darwin.opt, config/lynx.opt, config/i386/cygming.opt,
2170 * config/i386/djgpp.opt, config/i386/i386.opt,
2171 * config/i386/sco5.opt: New files.
2173 2005-04-21 Eric Botcazou <ebotcazou@libertysurf.fr>
2175 * config/sparc/sparc.c (reg_or_0_operand, const1_operand,
2176 fp_zero_operand, fp_register_operand, intreg_operand,
2177 fcc_reg_operand, fcc0_reg_operand, icc_or_fcc_reg_operand,
2178 call_operand, call_operand_address, tgd_symbolic_operand,
2179 tld_symbolic_operand, tie_symbolic_operand, tle_symbolic_operand,
2180 symbolic_operand, symbolic_memory_operand, label_ref_operand,
2181 sp64_medium_pic_operand, data_segment_operand,
2182 text_segment_operand, splittable_symbolic_memory_operand,
2183 reg_or_nonsymb_mem_operand, splittable_immediate_memory_operand,
2184 eq_or_neq, normal_comp_operator, noov_compare_op,
2185 noov_compare64_op, v9_regcmp_op, extend_op, cc_arithop,
2186 cc_arithopn, arith_operand, arith_4096_operand, arith_add_operand,
2187 const64_operand, const64_high_operand, arith11_operand,
2188 arith10_operand, arith_double_operand, arith_double_4096_operand,
2189 arith_double_add_operand, arith11_double_operand,
2190 arith10_double_operand, small_int, small_int_or_double,
2191 uns_small_int, uns_arith_operand, clobbered_register,
2192 input_operand, compare_operand): Delete.
2193 (sparc_emit_set_const32): Use predicates in assertion. Remove special
2194 code for TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT != 64.
2195 (sparc_emit_set_const64): Call gcc_unreachable if H_B_P_W_I == 32.
2196 (GEN_HIGHINT64, GEN_INT64): Delete.
2197 (sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
2198 gen_safe_XOR64): Adjust for above deletion.
2199 (sparc_emit_set_const64): Support only H_B_P_W_I == 64 and CONST_INTs.
2200 Use 'unsigned HOST_WIDE_INT' instead of 'long' for bitmask.
2201 (legitimate_constant_p): Use const_zero_operand instead.
2202 (sparc_extra_constraint_check): Likewise.
2203 * config/sparc/sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'O'.
2204 (PREFERRED_RELOAD_CLASS): Use const_zero_operand.
2205 (PREDICATE_CODES): Delete.
2206 * config/sparc/sparc.md: Include predicates.md.
2207 (All patterns): Adjust for new predicate names.
2208 (cmpdi, cmpdi_sp64): Use arith_operand predicate.
2209 (movhi_const64_special, movsi_const64_special): Add 'K' constraint.
2210 (movdi): Use general_operand predicate.
2211 (movdi_sp64_dbl): Delete.
2212 (movdi_const64_special): Add 'N' constraint.
2213 (movdicc): Use arith10_operand predicate.
2214 (movdi_cc_sp64, movdi_cc_sp64_trunc): Use arith11_operand predicate.
2215 (movdi_cc_reg_sp64): Use arith10_operand predicate.
2216 (movdi_cc_reg_sp64_trunc): Delete.
2217 (cmp_zero_extract, cmp_zero_extract_sp64): Use small_int_operand.
2218 (adddi3_sp64, cmp_ccx_plus, cmp_ccx_plus_set): Use arith_operand.
2219 (subdi3_sp32): Delete.
2220 (subdi3_insn_sp32): Change to define_insn_and_split.
2221 (subdi3_sp64, cmp_minus_ccx, cmp_minus_ccx_set): Use arith_operand.
2222 (muldi3, muldi3_sp64, muldi3_v8plus): Likewise.
2223 (smulsi3_highpart_v8plus, const_smulsi3_highpart_v8plus,
2224 umulsi3_highpart_v8plus, const_umulsi3_highpart_v8plus): Use
2225 small_int_operand predicate.
2226 (divdi3, udivdi3): Use arith_operand predicate.
2227 (udivsi3, udivsi3_sp32, udivsi3_sp64): Use nonimmediate_operand.
2228 (and<V64I>3_sp64, ior<V64I>3_sp64, xor<V64I:mode>3_sp64,
2229 xor_not_<V64I:mode>_sp64) : Use arith_operand predicate.
2230 (xordi3_sp64_dbl): Delete.
2231 (cmp_ccx_arith_op, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
2232 cmp_ccx_xor_not_set, cmp_ccx_arith_op_not, cmp_ccx_arith_op_not_set,
2233 cmp_ccx_neg, cmp_ccx_set_neg, one_cmpl<V64I>2_sp64, cmp_ccx_not,
2234 cmp_ccx_set_not): Use arith_operand predicate.
2235 (ashrsi3_extend2, lshrsi3_extend2 et al.): Use small_int_operand.
2236 * config/sparc/predicates.md: New file.
2238 2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
2240 PR tree-optimization/14846
2241 * fold-const.c (fold_single_bit_test_into_sign_test): New,
2243 (fold_single_bit_test): ... here.
2244 (fold_binary): Call fold_single_bit_test_into_sign_test
2245 instead of fold_single_bit_test.
2247 2005-04-20 James E Wilson <wilson@specifixinc.com>
2250 * dwarf2out.c (gen_variable_die): Don't emit a specification if this
2251 is another declaration.
2253 2005-04-21 Hans-Peter Nilsson <hp@axis.com>
2255 * config/cris/predicates.md: New file.
2256 * config/cris/cris-protos.h (cris_store_multiple_op_p)
2257 (cris_movem_load_rest_p): Declare.
2258 * config/cris/cris.c (cris_store_multiple_op): Return bool, not int.
2259 (cris_movem_load_rest_p): Ditto. Globalize.
2260 (cris_bdap_operand, cris_bdap_biap_operand,
2261 cris_orthogonal_operator, cris_commutative_orth_op,
2262 cris_operand_extend_operator,
2263 cris_additive_operand_extend_operator, cris_extend_operator,
2264 cris_plus_or_bound_operator, cris_mem_op,
2265 cris_general_operand_or_symbol,
2266 cris_general_operand_or_gotless_symbol,
2267 cris_general_operand_or_plt_symbol, cris_mem_call_operand,
2268 cris_load_multiple_op): Remove predicate functions.
2269 (cris_symbol, cris_gotless_symbol) <case UNSPEC>: Return 0, don't
2270 abort, for UNSPECs other than CRIS_UNSPEC_PLT.
2271 * config/cris/cris.h (PREDICATE_CODES): Don't define.
2272 * config/cris/cris.md: Include predicates.md.
2273 ("call", "call_value"): Generate CONSTs of Pmode, not VOIDmode.
2275 2005-04-20 Ian Lance Taylor <ian@airs.com>
2277 * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
2278 * c-common.h (STMT_EXPR_STMT): Don't define.
2279 (STMT_EXPR_NO_SCOPE): Don't define.
2280 * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
2281 * c-pretty-print.c (pp_c_primary_expression): Likewise.
2282 (pp_c_expression): Likewise.
2284 2005-04-20 Richard Henderson <rth@redhat.com>
2287 * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
2289 2005-04-20 Jeff Law <law@redhat.com>
2291 * reload1.c (reload): Ignore equivalences between pseudos and
2294 2005-04-20 Joseph S. Myers <joseph@codesourcery.com>
2297 * c-tree.h (struct c_label_list): Update comment.
2298 (struct c_label_context): Rename to struct c_label_context_se.
2299 (label_context_stack): Rename to label_context_stack_se.
2300 (C_DECL_UNJUMPABLE_VM, C_DECL_UNDEFINABLE_VM, struct
2301 c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
2302 c_end_vm_scope): New.
2303 (C_DECL_DECLARED_BUILTIN, C_DECL_USED): Use FUNCTION_DECL_CHECK.
2304 * c-decl.c (pop_scope): Call c_end_vm_scope.
2305 (pushdecl): Call c_begin_vm_scope for variably modified
2307 (define_label): Check for jumping into scope of identifier with
2308 variably modified type. Push label on stack for those defined at
2309 current context of identifiers with variably modified type.
2310 (start_function): Create stack level for context of identifiers
2311 with variably modified type.
2312 (finish_function): Pop stack level for context of identifiers with
2313 variably modified type.
2314 * c-typeck.c (label_context_stack): Rename to
2315 label_context_stack_se.
2316 (label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
2317 (c_finish_goto_label): Check for jumping into scope of identifier
2318 with variably modified type. Push label on stack for those jumped
2319 to from current context of identifiers with variably modified
2321 (struct c_switch): Add blocked_vm.
2322 (c_start_case): Initialize blocked_vm.
2323 (do_case): Check blocked_vm.
2324 (c_finish_case): Add comment.
2325 (c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
2326 variable label_context_stack.
2328 2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
2330 * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
2331 conditional_replacement, value_replacement, abs_replacement,
2333 (replace_phi_edge_with_variable): Remove argument BB.
2334 (conditional_replacement, value_replacement,
2335 minmax_replacement, abs_replacement): Remove argument PHI_BB.
2336 Update a call to replace_phi_edge_with_variable.
2338 * tree-ssa-phiopt.c: Fix comments.
2340 2005-04-20 Michael Matz <matz@suse.de>
2343 * reload.c (push_reload, find_dummy_reload): Check for uninitialized
2346 2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
2348 * tree-ssa-phiopt.c: Fix comment typos.
2350 PR tree-optimization/21116
2351 * tree-ssa-phiopt.c: Fix a typo.
2353 2005-04-19 Richard Henderson <rth@redhat.com>
2355 * builtins.c (expand_builtin_sync_operation): Revert last change.
2356 * optabs.c (expand_bool_compare_and_swap): Compare vs old value,
2358 (expand_compare_and_swap_loop): Likewise.
2359 (expand_sync_operation): Remove fallback from NAND to AND; invert
2360 memory operand when expanding from cmpxchg.
2361 (expand_sync_fetch_operation): Likewise.
2362 * doc/extend.texi (Atomic Builtins): Fix docs for nand and
2365 * config/alpha/alpha.c (alpha_split_atomic_op): Invert memory operand
2366 when implementing NAND. Fix double-add for AFTER.
2367 * config/alpha/sync.md (sync_nand<I48MODE>): Invert memory operand.
2368 (sync_old_nand<I48MODE>, sync_new_nand<I48MODE>): Likewise.
2369 (sync_compare_and_swap<I48MODE>): Fix compare vs zero. Return old
2371 (sync_lock_test_and_set<I48MODE>): Remove extra label and last
2374 * config/i386/sync.md (sync_compare_and_swap<IMODE>): Fix pattern
2375 to return old memory value.
2376 (sync_compare_and_swap_cc<IMODE>): Likewise.
2378 * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Early
2379 return pre-reload. Don't consider output or anti dependencies.
2380 * config/ia64/sync.md (IMODE): New.
2381 (modesuffix): Add QI and HI.
2382 (memory_barrier): Simplify expansion.
2383 (sync_compare_and_swap<IMODE>): Use IMODE, not I48MODE.
2384 (cmpxchg_acq_<IMODE>): Likewise.
2385 (sync_lock_test_and_set<IMODE>): Likewise.
2386 (sync_lock_release<IMODE>): Likewise.
2388 2005-04-19 James A. Morrison <phython@gcc.gnu.org>
2390 * fold-const.c (fold_binary): Fold ~(X ^ Y) to ~X ^ Y or X ^ ~Y if
2393 2005-04-19 James A. Morrison <phython@gcc.gnu.org>
2395 * fold-const (fold_binary): Fold ~X ^ ~ Y to X ^ Y.
2397 2005-04-20 Michael Pogue <michael.pogue@sun.com>
2398 Joseph S. Myers <joseph@codesourcery.com>
2400 * c.opt (Wint-to-pointer-cast, Wpointer-to-int-cast): New options.
2401 * c-typeck.c (build_c_cast): Check these options.
2402 * doc/invoke.texi: Document these options.
2404 2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
2406 * tree-ssa-phiopt.c: Update a comment about the pass.
2408 2005-04-19 Kazu Hirata <kazu@cs.umass.edu>
2410 * tree-ssa-phiopt.c, config/arm/arm.c, config/fr30/fr30.md,
2411 config/mcore/mcore.c: Fix comment typos.
2413 2005-04-19 Daniel Jacobowitz <dan@codesourcery.com>
2415 * Makefile.in (libgcc.mk): Pass GCC_FOR_TARGET.
2416 * mklibgcc.in: Use $GCC_FOR_TARGET instead of ./xgcc.
2418 2005-04-19 Paul Brook <paul@codesourcery.com>
2420 * config/arm/arm.c (arm_init_libfuncs): Clear mod optabs.
2422 2005-04-19 Andrew Haley <aph@redhat.com>
2425 * dbxout.c (dbxout_type_fields): Check DECL_IGNORED_P before
2426 looking at a field's bitpos.
2428 2005-04-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2430 * system.h (fopen, fdopen, freopen): Define these to the unlocked
2431 libiberty functions.
2433 2005-04-19 Kazu Hirata <kazu@cs.umass.edu>
2435 PR tree-optimization/21096
2436 * tree-ssa-copy.c (fini_copy_prop): Free cached_last_copy_of.
2438 2005-04-19 Alan Modra <amodra@bigpond.net.au>
2441 * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
2442 * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.
2444 2005-04-19 Alexandre Oliva <aoliva@redhat.com>
2446 * tree-cfg.c (dump_function_to_file): Use cfun info only if it
2447 refers to the function being dumped.
2449 2005-04-18 Daniel Jacobowitz <dan@codesourcery.com>
2451 * varasm.c (assemble_start_function): Remove reset of in_section.
2453 2005-04-18 James A. Morrison <phython@gcc.gnu.org>
2455 PR tree-optimization/21085
2456 * fold-const (fold_binary): Don't change X % -C to X % C if C has
2459 2005-04-19 Ben Elliston <bje@au.ibm.com>
2461 * doc/invoke.texi (Optimize Options): Refer to the correct
2462 optimisation flag -ftree-dominator-opts, not -ftree-dom.
2464 2005-04-18 Christopher Jaillet <christophe.jaillet@wanadoo.fr>
2466 * config/rs6000/rs6000.c (machopic_output_stub): Increase
2467 alloca argument to be big enough.
2469 2005-04-18 Alexandre Oliva <aoliva@redhat.com>
2472 * tree-cfg.c (dump_function_to_file): Do not crash if cfun or
2475 2005-04-18 Tom Tromey <tromey@redhat.com>
2477 * cgraphunit.c (cgraph_finalize_compilation_unit): Fix a comment
2480 2005-04-18 Richard Henderson <rth@redhat.com>
2482 * config/alpha/alpha.c (alpha_split_atomic_op): New.
2483 (alphaev5_insn_pipe): Add LD_L, ST_C, MB types.
2484 (alphaev4_insn_pipe): Likewise. Correct IST and LDSYM pipes.
2485 * config/alpha/alpha-protos.h: Update.
2486 * config/alpha/alpha.md (UNSPECV_MB, UNSPECV_LL, UNSPECV_SC): New.
2487 (UNSPECV_ATOMIC, UNSPECV_CMPXCHG, UNSPECV_XCHG): New.
2488 (attr type): Add ld_l, st_c, mb.
2489 (andsi_internal, andnotsi3, iorsi_internal, one_cmplsi_internal,
2490 iornotsi3, xorsi_internal, xornotsi3): New.
2491 * config/alpha/ev4.md (ev4_ld): Add ld_l.
2492 (ev4_ist_c, ev4_mb): New.
2493 * config/alpha/ev5.md (ev5_st): Add st_c, mb.
2495 * config/alpha/ev6.md (ev6_ild): Add ld_l.
2496 (ev6_ist): Add st_c.
2498 * config/alpha/sync.md: New file.
2500 2005-04-18 Richard Henderson <rth@redhat.com>
2502 * builtins.c (expand_builtin_sync_operation): Fold nand to and
2505 * optabs.c (expand_sync_operation): Fix typo expanding nand to and.
2507 2005-04-18 Devang Patel <dpatel@apple.com>
2509 * config/rs6000/atlivec.md (mulv4si3): New pattern.
2511 2005-04-18 James A. Morrison <phython@gcc.gnu.org>
2513 PR tree-optimization/20922
2514 * fold-const.c (fold_binary): Fold X - c > X and X + c < X to false.
2515 Fold X + c >= X and fold X - c <= X to true.
2517 2005-04-18 James A. Morrison <phython@gcc.gnu.org>
2519 * config/ia64/unwind-ia64.c (emergency_reg_state_free): Make an
2521 (emergency_labeled_state_free): Likewise.
2523 2005-04-18 Nick Clifton <nickc@redhat.com>
2525 * config/h8300/h8300.md (jump): Remove prescan parameter from
2526 calls to final_scan_insn.
2528 * config/arc/arc.c (arc_output_function_epilogue): Remove prescan
2529 parameter from calls to final_scan_insn.
2531 * config.gcc (m68hc12): Use the m68hc11.opt file for target
2533 (v850e, v850e1): Use the v850.opt file for target specific
2536 2005-04-18 Kazu Hirata <kazu@cs.umass.edu>
2538 PR tree-optimization/21001
2539 * tree-optimize.c (init_tree_optimization_passes): Move the
2540 first pass_forwprop immediately before pass_vrp.
2542 2005-04-17 Ian Lance Taylor <ian@airs.com>
2544 * c-common.def (SIZEOF_EXPR, ARROW_EXPR, ALIGNOF_EXPR): Remove.
2545 * c-common.c (c_sizeof_or_alignof_type): Change second parameter
2546 from enum tree_code op to bool is_sizeof.
2547 * c-common.h (c_sizeof_or_alignof_type): Update declaration.
2548 (c_sizeof, c_alignof): Update calls to c_sizeof_or_alignof_type.
2549 * c-pretty-print.c (pp_c_postfix_expression): Remove ARROW_EXPR
2551 (pp_c_unary_expression): Remove SIZEOF_EXPR and ALIGNOF_EXPR
2553 (pp_c_expression): Remove ARROW_EXPR, SIZEOF_EXPR, and
2556 2005-04-17 Ian Lance Taylor <ian@airs.com>
2558 * system.h: Poison DONT_ACCESS_GBLS_AFTER_EPILOGUE.
2560 2005-04-17 Richard Henderson <rth@redhat.com>
2562 * config/alpha/alpha.c (va_list_skip_additions): Only define if
2564 (TARGET_STDARG_OPTIMIZE_HOOK): Likewise.
2565 (alpha_stdarg_optimize_hook): Likewise. Allow for one more round
2566 of indirection through ssa names while looking for the gpr counter
2568 (alpha_setup_incoming_varargs) <TARGET_ABI_OSF>: Make use of the
2569 saved va_list_gpr_size and va_list_fpr_size.
2571 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
2573 * tree-vrp.c (compare_values): Check that VAL1 and VAL2 are
2574 both pointers or both integers.
2576 * tree-vrp.c (maybe_add_assert_expr): Don't assert
2577 ASSERT_EXPRs for single-use variable.
2579 * tree-into-ssa.c: Fix a comment typo.
2581 2005-04-17 Richard Sandiford <rsandifo@redhat.com>
2583 * config/mips/iris6.h (DRIVER_SELF_SPECS): Check -march as well as
2584 -mipsN before forcing a default of -mips2.
2586 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
2588 * predict.h (IS_TAKEN): Remove.
2589 * rtl.h (NOTE_PREDICTION): Likewise.
2591 * modulo-sched.c (CFG_HOOKS): Remove.
2593 * c-parser.c (N_C_TTYPES): Remove.
2595 * tree-flow-inline.h (get_stmt_operands): Remove.
2596 * lambda-code.c, tree-ssa-loop-unswitch.c,
2597 tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa-propagate.c,
2598 tree-ssa-sink.c, tree-ssa.c, tree-tailcall.c,
2599 tree-vect-transform.c, tree-vectorizer.c, tree-vrp.c): Remove
2600 calls to get_stmt_operands.
2601 * doc/tree-ssa.texi: Don't mention get_stmt_operands.
2603 2005-04-17 Richard Henderson <rth@redhat.com>
2606 * config/alpha/alpha.c (alpha_setup_incoming_varargs): Advance a copy
2607 of CUMULATIVE_ARGS past the last named argument.
2608 (alpha_va_start): Expect pretend_args_size only if strictly less than
2611 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
2614 * builtins.c (expand_builtin_strcat): Convert the result of
2615 strlen to the right type.
2616 * fold-const.c (fold_binary) <PLUS_EXPR>: Use fold_convert to
2617 avoid creating type mismatches.
2618 <GE_EXPR>: Pass op0 and op1 to fold_build2 to avoid creating
2621 * c-lex.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Remove.
2623 2005-04-16 Richard Henderson <rth@redhat.com>
2626 * builtins.c (expand_builtin) <BUILT_IN_BOOL_COMPARE_AND_SWAP_*>:
2627 Use the mode of boolean_type_node when the user doesn't provide one.
2628 * config/ia64/sync.md (sync_lock_release<I48MODE>): Use operand 1.
2630 2005-04-16 Alexandre Oliva <aoliva@redhat.com>
2633 * loop.c (loop_givs_rescan): Handle non-replaceable (plus (reg)
2636 * tree-scalar-evolution.c (interpret_rhs_modify_expr): Fix typo in
2639 2005-04-16 Roger Sayle <roger@eyesopen.com>
2640 Steven Bosscher <stevenb@suse.de>
2642 * fold-const.c (fold_binary_to_constant): Delete obsolete comment.
2643 (fold_unary_to_constant): Likewise.
2645 2005-04-16 Kazu Hirata <kazu@cs.umass.edu>
2647 * basic-block.h: Adjust the value of PROP_SCAN_DEAD_STORES,
2650 2005-04-16 Gerald Pfeifer <gerald@pfeifer.com>
2652 * doc/install.texi (Specific): Avoid using asterisks in @anchor
2653 names related to target triplets.
2654 Remove i?86-*-esix from platform directory.
2655 Remove powerpc-*-eabiaix from platform directory.
2657 2005-04-16 Joseph S. Myers <joseph@codesourcery.com>
2660 * config/ia64/ia64.c (rtx_needs_barrier): Recurse instead of
2661 falling through from SUBREG case to REG.
2663 2005-04-15 Roger Sayle <roger@eyesopen.com>
2665 * fold-const.c (fold_relational_hi_lo): Delete function and prototype.
2666 (fold_binary): Update comment mentioning fold_relational_hi_lo.
2667 (fold_binary_to_constant): Simplify using fold_binary.
2668 (fold_unary_to_constant): Likewise, simplify using fold_unary.
2670 2005-04-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2672 * gthr-posix.c (pthread_cancel): Define.
2673 (pthread_mutexattr_init): Likewise.
2674 (pthread_mutexattr_settype): Likewise.
2675 (pthread_mutexattr_destroy): Likewise.
2677 2005-04-15 David S. Miller <davem@davemloft.net>
2680 * config/sparc/sparc.h (sparc_hard_reg_printed): Mark as GTY(()).
2682 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
2684 PR tree-optimization/21031
2685 * tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): New.
2686 (forward_propagate_into_cond_1): Call it. Forward propagate
2687 integer-integer casts into COND_EXPRs.
2689 2005-04-15 Dave Korn <dave.korn@artimi.com>
2691 * gcc.c (default_compilers): Clarify obscure error message when
2692 reading from standard input.
2694 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
2696 * basic-block.h (PROP_EQUAL_NOTES): Remove.
2697 * flow.c (propagate_one_insn): Don't use PROP_EQUAL_NOTES.
2699 * tree-ssa-alias.c (init_alias_info): Remove a call to
2702 2005-04-15 Andrew MacLeod <amacleod@redhat.com>
2704 * tree-vect-analyze.c (vect_stmt_relevant_p): Process immediate uses
2705 of non-virtual PHI nodes like we use to.
2707 2005-05-15 Paolo Bonzini <bonzini@gnu.org>
2709 * genattrtab.c (ATTR_EQ_ATTR_P): Remove.
2710 (attr_copy_rtx): Do not use it.
2712 2005-04-15 Andrew Macleod <amacleod@redhat.com>
2714 * doc/tree-ssa.texi: Grammer/abbreviation updates.
2716 2005-04-15 Diego Novillo <dnovillo@redhat.com>
2718 * tree-vect-transform.c (vectorizable_store): Mark necessary
2719 objects in the vectorized store needing renaming. Update the
2720 SSA graph for V_MAY_DEF operands in the original store.
2722 2005-04-14 Daniel Berlin <dberlin@dberlin.org>
2724 * tree-ssa-pre.c (compute_avail): It's okay to have
2725 TREE_INVARIANT's here, and value number the resulting expressions.
2726 (create_expression_by_pieces): Make sure operands that were
2727 min_invariant when we started, stay that way.
2729 2005-04-15 David Edelsohn <edelsohn@gnu.org>
2731 * doc/install.texi (*-ibm-aix*): Add comment about system limits.
2733 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
2735 PR tree-optimization/20936.
2736 * tree-ssa-ccp.c (visit_assignment): Fix a typo.
2738 2005-04-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2740 * doc/invoke.texi: Fix typos.
2741 * doc/md.texi: Likewise.
2742 * doc/rtl.texi: Likewise.
2743 * doc/sourcebuild.texi: Likewise.
2744 * doc/tm.texi: Likewise.
2746 2005-04-15 Uros Bizjak <uros@kss-loka.si>
2748 PR tree-optimization/21004
2749 * convert.c (convert_to_integer): Convert ceilf, ceill, floorf
2750 and floorl in c99 mode only.
2751 * builtins.c (expand_builtin_int_roundingfn): Assert that
2752 fallback_fndecl is not NULL_TREE.
2754 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
2756 * cfgrtl.c (purge_all_dead_edge): Remove an unused argument.
2757 * basic-block.h: Update the prototype for
2758 purge_all_dead_edges.
2759 * cfgexpand.c (tree_expand_cfg): Update a call to
2760 purge_all_dead_edges.
2761 * combine.c (combine_instructions): Likewise.
2762 * passes.c (rest_of_handle_old_regalloc, rest_of_handle_cse,
2763 rest_of_handle_cse2, rest_of_handle_gcse,
2764 rest_of_handle_postreload): likewise.
2766 2005-04-15 Alexandre Oliva <aoliva@redhat.com>
2769 * gimplify.c (gimplify_addr_expr): Compensate for removal of
2770 e.g. cv-qualification conversions.
2772 2005-04-14 Mike Stump <mrs@apple.com>
2774 * config/darwin-c.c (framework_construct_pathname): We must
2775 find all headers of a framework in the first instance of it
2776 found in the seach path.
2778 2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
2780 PR tree-optimization/21021
2781 * tree-vrp.c (compare_values): Work around a bug in the front
2782 end that produces a comparison of mismatched types.
2784 2004-04-14 Richard Henderson <rth@redhat.com>
2786 * config/ia64/ia64.h (enum fetchop_code): Remove.
2787 (enum ia64_builtins): Move ...
2788 * config/ia64/ia64.c (enum ia64_builtins): ... here. Remove all
2789 members except BSP and FLUSHRS.
2790 (ia64_init_builtins): Remove __sync builtins.
2791 (ia64_expand_builtin): Likewise.
2792 (ia64_expand_fetch_and_op, ia64_expand_op_and_fetch): Remove.
2793 (ia64_expand_compare_and_swap, ia64_expand_lock_test_and_set): Remove.
2794 (ia64_expand_lock_release): Remove.
2795 * config/ia64/ia64.md (mf): Move to sync.md.
2796 (mf_internal, fetchadd_acq_si, fetchadd_acq_di, cmpxchg_acq_si,
2797 cmpxchg_acq_di, xchgsi, xchgdi): Likewise.
2798 * config/ia64/sync.md: New file.
2799 (memory_barrier): Rename from mf.
2800 (fetchadd_acq_<I48MODE>): Macroize from _si/_di patterns.
2801 (cmpxchg_acq_<I48MODE>): Likewise.
2802 (sync_lock_test_and_set<I48MODE>): Likewise.
2804 * config/ia64/ia64intrin.h: Define nothing for C; limit #defines
2805 to c++. Remove __sync* declarations. s/_si/_4/. s/_di/_8/.
2807 2004-04-14 Richard Henderson <rth@redhat.com>
2809 * config/i386/i386.c (x86_cmpxchg, x86_xadd): New.
2810 (ix86_compare_emitted): New.
2811 (ix86_expand_compare): Use ix86_compare_emitted if set.
2812 (ix86_expand_setcc): Only emit REG_EQUAL if both ix86_compare_op0
2813 and ix86_compare_op0 are set.
2814 * config/i386/i386.h (x86_cmpxchg, x86_xadd): Declare.
2815 (TARGET_CMPXCHG, TARGET_XADD): New.
2816 (ix86_compare_emitted): Declare.
2817 * config/i386/i386.md: Include sync.md
2818 (UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2): New.
2819 (UNSPECV_XCHG, UNSPECV_LOCK): New.
2820 * config/i386/sync.md: New file.
2822 2004-04-14 Richard Henderson <rth@redhat.com>
2825 * builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2,
2826 BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2,
2827 BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1,
2828 BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8,
2829 BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4,
2830 BT_FN_I8_VPTR_I8_I8): New.
2831 * builtins.def (DEF_SYNC_BUILTIN): New.
2832 (BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1,
2833 BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4,
2834 BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N,
2835 BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2,
2836 BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8,
2837 BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1,
2838 BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4,
2839 BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N,
2840 BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2,
2841 BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8,
2842 BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1,
2843 BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4,
2844 BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N,
2845 BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2,
2846 BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8,
2847 BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1,
2848 BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4,
2849 BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N,
2850 BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2,
2851 BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8,
2852 BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1,
2853 BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4,
2854 BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N,
2855 BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2,
2856 BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8,
2857 BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1,
2858 BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4,
2859 BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N,
2860 BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2,
2861 BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8,
2862 BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
2863 BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
2864 BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N,
2865 BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2,
2866 BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8,
2867 BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1,
2868 BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4,
2869 BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N,
2870 BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2,
2871 BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8,
2872 BUILT_IN_SYNCHRONIZE: New.
2873 * builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN
2874 as a function. Accept __sync_ as a prefix as well.
2875 (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
2876 expand_builtin_lock_test_and_set, expand_builtin_synchronize,
2877 expand_builtin_lock_release): New.
2878 (expand_builtin): Call them.
2879 * c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if
2880 neither BOTH_P nor FALLBACK_P are defined.
2881 (builtin_type_for_size): New.
2882 (sync_resolve_size, sync_resolve_params, sync_resolve_return): New.
2883 (resolve_overloaded_builtin): New.
2884 * c-common.h (resolve_overloaded_builtin): Declare.
2885 (builtin_type_for_size): Declare.
2886 * c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin.
2887 * expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab,
2888 sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab,
2889 sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab,
2890 sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab,
2891 sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab,
2892 sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap,
2893 sync_compare_and_swap_cc, sync_lock_test_and_set,
2894 sync_lock_release): New.
2895 * optabs.h: Declare them.
2896 * expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap,
2897 expand_sync_operation, expand_sync_fetch_operation,
2898 expand_sync_lock_test_and_set): Declare.
2899 * genopinit.c (optabs): Add sync optabs.
2900 * optabs.c (init_optabs): Initialize sync optabs.
2901 (expand_val_compare_and_swap_1, expand_val_compare_and_swap,
2902 expand_bool_compare_and_swap, expand_compare_and_swap_loop,
2903 expand_sync_operation, expand_sync_fetch_operation,
2904 expand_sync_lock_test_and_set): New.
2905 * doc/extend.texi (Atomic Builtins): New section
2906 * doc/md.texi (Standard Names): Add sync patterns.
2908 2005-04-14 Alexandre Oliva <aoliva@redhat.com>
2910 * tree-eh.c (lower_try_finally_copy): Generate new code in
2911 response to goto_queue entries as if the queue was sorted by
2912 index, not pointers.
2913 (lower_try_finally_switch): Likewise.
2915 2005-04-14 Richard Henderson <rth@redhat.com>
2917 * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ...
2918 (ix86_expand_sse_movcc): ... here. Take cmp as a pre-computed
2920 (ix86_expand_fp_movcc): Update to match.
2921 (ix86_expand_fp_vcond, ix86_expand_int_vcond): New.
2922 * config/i386/i386-protos.h: Update.
2923 * config/i386/sse.md (vcondv4sf, vcondv2df): New.
2924 (vcond<SSEMODE124>, vcondu<SSEMODE12>): New.
2926 2005-04-14 Joseph S. Myers <joseph@codesourcery.com>
2928 * doc/cpp.texi, doc/install.texi: Change references to GCC 3.5 to
2931 2005-04-14 Julian Brown <julian@codesourcery.com>
2933 * Revert elfos.h part of my patch from 2005-04-13 for causing libstdc++
2934 link failures on ppc64 Linux.
2936 2005-04-14 Andreas Krebbel <krebbel1@de.ibm.com>
2938 * config.gcc: Set cpu_type for s390.
2940 2005-04-14 Daniel Berlin <dberlin@dberlin.org>
2942 Fix PR tree-optimization/20963
2943 * tree-ssa-pre.c (compute_avail): Remove special case for
2945 (create_expression_by_pieces): Add value numbers for forced out
2948 2005-04-14 Hans-Peter Nilsson <hp@axis.com>
2950 * config/cris/cris.md: Replace references to (reg:SI 16) with
2951 (reg:SI CRIS_SRP_REGNUM).
2953 2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
2955 PR tree-optimization/20657
2956 * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to
2957 create an appropriate range from it.
2959 2005-04-14 Uros Bizjak <uros@kss-loka.si>
2961 * reg-stack.c (subst_stack_regs_pat): Handle <UNSPEC_FIST_FLOOR> and
2962 <UNSPEC_FIST_CEIL> case.
2964 * config/i386/i386.md (UNSPEC_FIST_FLOOR, UNSPEC_FIST_CEIL): New.
2965 (*fist<mode>2_floor_1, fistdi2_floor, fistdi2_floor_with_temp)
2966 (fist<mode>2_floor, fist<mode>2_floor_with_temp): New isns patterns
2967 to implement lfloor and llfloor built-ins as x87 intrinsic function.
2968 (fistdi2_floor, fist<mode>2_floor splitters): New splitters.
2969 (lfloor<mode>2): New expanders.
2970 (*fist<mode>2_ceil_1, fistdi2_ceil, fistdi2_ceil_with_temp)
2971 (fist<mode>2_ceil, fist<mode>2_ceil_with_temp): New isns patterns
2972 to implement lceil and llceil built-ins as x87 intrinsic function.
2973 (fistdi2_ceil, fist<mode>2_ceil splitters): New splitters.
2974 (lceil<mode>2): New expanders.
2976 2005-04-14 Uros Bizjak <uros@kss-loka.si>
2978 * convert.c (convert_to_integer): Convert (long int)trunc{,f,l},
2979 and (long long int)ceil{,f,l} into FIX_TRUNC_EXPR.
2981 2005-04-14 Ulrich Weigand <uweigand@de.ibm.com>
2984 * config/s390/s390-modes.def: Define TFmode.
2986 2005-04-13 Richard Sandiford <rsandifo@redhat.com>
2988 * config/mips/mips.h (ASM_OUTPUT_CASE_LABEL): Delete.
2989 (JUMP_TABLES_IN_TEXT_SECTION): Define.
2990 * config/mips/mips.c (mips16_insn_length): Remove reference to
2991 JUMP_TABLES_IN_TEXT_SECTION.
2993 2005-04-13 Fariborz Jahanian <fjahanian@apple.com>
2995 * simplify-rtx.c (simplify_binary_operation_1): Return
2996 scalar or vector of constant 0, depending on the xor's
2999 2005-04-13 Dale Johannesen <dalej@apple.com>
3001 * objc/Make-lang.in (objc-lang.o): Depend on tree-gimple.h.
3002 (objc-act.o): Ditto.
3003 * objc/objc-act.c (objc_gimplify_expr): New.
3004 (objc_get_callee_fndecl): New.
3005 * objc/objc-act.h: Include tree-gimple.h. Declare new functions.
3006 * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Define.
3007 (LANG_HOOKS_GET_CALLEE_FNDECL): Define.
3009 2005-04-13 Devang Patel <dpatel@apple.com>
3011 * tree-if-conv.c (tree_if_convert_cond_expr): Do not create extra
3014 2005-04-13 Hans-Peter Nilsson <hp@axis.com>
3016 CRIS prologue as RTL.
3017 * config/cris/cris-protos.h (cris_emit_movem_store)
3018 (cris_expand_prologue): Prototype.
3019 * config/cris/cris.c (struct machine_function): New member
3021 (cfa_label_num, cris_target_asm_function_prologue): Remove.
3022 (TARGET_ASM_FUNCTION_PROLOGUE): Don't override.
3023 (cris_general_operand_or_gotless_symbol): Accept CRIS_UNSPEC_GOT.
3024 (cris_load_multiple_op, cris_return_address_on_stack)
3025 (cris_return_address_on_stack_for_return): ISO-Cify.
3026 (cris_store_multiple_op): New predicate function.
3027 (cris_expand_prologue, cris_emit_movem_store): New functions.
3028 (cris_print_operand) <case 'O'>: Handle modifications other than
3030 (cris_symbol, cris_got_symbol): Return 0 for CRIS_UNSPEC_GOT.
3031 (cris_gotless_symbol): Return 1 for CRIS_UNSPEC_GOT.
3032 (cris_gen_movem_load): Rearrange slightly to make local variable
3033 src a parameter, removing osrc.
3034 (cris_setup_incoming_varargs): Set machine_function member
3035 stdarg_regs to correspond to the number of registers that need to
3037 * config/cris/cris.h (EXTRA_CONSTRAINT_S): Accept
3039 (PREDICATE_CODES): Add cris_store_multiple_op. Make
3040 cris_general_operand_or_gotless_symbol accept UNSPEC.
3041 * config/cris/cris.md (CRIS_UNSPEC_GOT): New constant.
3042 ("*movsi_internal") <alternative 8>: Handle CRIS_UNSPEC_GOT.
3043 ("*cris_store_multiple"): New pattern. Tweak common comment above
3044 this and "*cris_load_multiple".
3045 ("prologue"): New define_expand.
3047 * config/cris/cris.md ("epilogue"): Conditionalize on
3048 TARGET_PROLOGUE_EPILOGUE.
3050 2005-04-13 Steve Ellcey <sje@cup.hp.com>
3053 * config/ia64/ia64.md (divsf3_internal_lat): Generate frcpa with
3054 fpsr 0 instead of fpsr 1.
3055 (divsf3_internal_thr): Ditto.
3056 (divdf3_internal_lat): Ditto.
3057 (divdf3_internal_thr): Ditto.
3058 (divxf3_internal_lat): Ditto.
3059 (divxf3_internal_thr): Ditto.
3061 2005-04-13 Kazu Hirata <kazu@cs.umass.edu>
3063 PR tree-optimization/20913
3064 * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.
3066 PR tree-optimization/20702
3067 * tree-vrp.c (maybe_add_assert_expr): Recurse into
3068 dominator children that haven't been walked into.
3070 2005-04-13 Julian Brown <julian@codesourcery.com>
3072 * config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK from
3073 being used for symbols with vague linkage when HAVE_GAS_COMDAT_GROUP
3076 2005-04-13 Kazu Hirata <kazu@cs.umass.edu>
3078 * basic-block.h, tree-ssa-uncprop.c, varasm.c,
3079 config/i386/sse.md: Fix comment typos.
3081 * genattrtab.c (NULL_ATTR): Remove.
3082 * ifcvt.c (NULL_EDGE): Likewise.
3084 * rtl.h (RTX_EXPR_FIRST, RTX_EXPR_LAST): Remove.
3086 * rtl.h (NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS,
3087 NOTE_PREDICT): Remove.
3089 2005-04-13 Eric Botcazou <ebotcazou@libertysurf.fr>
3091 * configure.ac (gcc_AC_CHECK_DECLS): Add vsnprintf.
3092 * configure: Regenerate.
3093 * config.in: Likewise.
3094 * system.h: Declare vsnprintf if not already declared.
3096 2005-04-13 Eric Botcazou <ebotcazou@libertysurf.fr>
3098 * optc-gen.awk: Handle stand-alone Mask records.
3099 * opth-gen.awk: Likewise.
3100 * doc/options.texi (Option file format): Document them.
3101 * config.gcc (sparc-*-netbsdelf*, sparc-*-linux*, sparc64-*-freebsd*,
3102 sparc64-*-linux*, sparc64-*-netbsd*): Add long-double-switch.opt.
3103 (sparc64-*-openbsd*, sparc64-*-elf*): Add little-endian.opt.
3104 * config/sparc/sparc.h (MASK_FPU, MASK_UNALIGNED_DOUBLES,
3105 MASK_V8, MASK_SPARCLITE, MASK_SPARCLET, MASK_V9,
3106 MASK_DEPRECATED_V8_INSNS, MASK_IMPURE_TEXT, MASK_APP_REGS,
3107 MASK_HARD_QUAD, MASK_LITTLE_ENDIAN, MASK_PTR64, MASK_64BIT,
3108 MASK_STACK_BIAS, MASK_FPU_SET, MASK_VIS, MASK_V8PLUS,
3109 MASK_FASTER_STRUCTS, MASK_LONG_DOUBLE_128): Delete.
3110 (TARGET_FPU, TARGET_UNALIGNED_DOUBLES, TARGET_V8, TARGET_SPARCLITE,
3111 TARGET_SPARCLET, TARGET_V9, TARGET_DEPRECATED_V8_INSNS,
3112 TARGET_IMPURE_TEXT, TARGET_APP_REGS, MASK_HARD_QUAD,
3113 TARGET_LITTLE_ENDIAN, TARGET_PTR64, TARGET_64BIT, MASK_STACK_BIAS,
3114 TARGET_FPU_SET, TARGET_VIS, TARGET_V8PLUS, TARGET_FASTER_STRUCTS,
3115 TARGET_LONG_DOUBLE_128): Likewise.
3116 (TARGET_SWITCHES, SUBTARGET_SWITCHES): Likewise.
3117 (TARGET_OPTIONS, SUBTARGET_OPTIONS): Likewise.
3118 * config/sparc/freebsd.h (SUBTARGET_SWITCHES): Likewise.
3119 * config/sparc/linux.h (SUBTARGET_SWITCHES): Likewise.
3120 * config/sparc/linux64.h (SUBTARGET_SWITCHES): Likewise.
3121 * config/sparc/netbsd-elf.h (SUBTARGET_SWITCHES): Likewise.
3122 * config/sparc/sp64-elf.h (SUBTARGET_SWITCHES): Likewise.
3123 * config/sparc/sparc.c (fpu_option_set): New global.
3124 (sparc_handle_option): New function.
3125 (sparc_override_options): Test fpu_option_set.
3126 (TARGET_DEFAULT_TARGET_FLAGS): Set to TARGET_DEFAULT.
3127 (TARGET_HANDLE_OPTION): Set to sparc_handle_option.
3128 * config/sparc/sparc.opt: New file.
3129 * config/sparc/little-endian.opt: Likewise.
3130 * config/sparc/long-double-switch.opt: Likewise.
3132 2005-04-13 Bernd Schmidt <bernd.schmidt@analog.com>
3134 * config/bfin/bfin.c (bfin_lib_id_given): New static variable.
3135 (bfin_handle_options): Set it if -mshared-library-id= is seen.
3136 * config/bfin/bfin.opt (mshared-library-id=): Lose
3137 Var(bfin_lib_id_given).
3139 2005-04-13 Matt Thomas <matt@3am-software.com>
3141 * config/rs6000/sysv4.h (NO_IMPLICIT_EXTERN_C): undefine before
3144 2005-04-13 Kazu Hirata <kazu@cs.umass.edu>
3146 * rtl.h (CLEAR_RTX_FLAGS): Remove.
3148 * cgraphunit.c (INSNS_PER_CALL): Remove.
3150 * tree-ssa-forwprop.c (vars,
3151 record_single_argument_cond_exprs,
3152 substitute_single_use_vars): Remove.
3153 (forward_propagate_into_cond_1, forward_propagate_into_cond):
3155 (tree_ssa_forward_propagate_single_use_vars): Call
3156 forward_propagate_into_cond for each COND_EXPR.
3158 * tree-inline.c (INSNS_PER_STMT): Remove.
3160 2005-04-12 Richard Henderson <rth@redhat.com>
3162 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Split ...
3163 (ix86_expand_sse_fp_minmax): ... from ...
3164 (ix86_expand_fp_movcc): ... here.
3165 (ix86_expand_sse_movcc): Rewrite from ix86_split_sse_movcc.
3166 * config/i386/i386-protos.h: Update.
3167 * config/i386/i386.md (UNSPEC_IEEE_MIN, UNSPEC_IEEE_MAX): New.
3168 (sse_setccsf, sse_setccdf): Allow before reload.
3169 (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): Remove.
3170 (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): Remove.
3171 (ieee_sminsf3, ieee_smaxsf3, ieee_smindf3, ieee_smaxdf3): New.
3172 * config/i386/sse.md (andsf3, nandsf3, iorsf3, xorsf3): New.
3173 (anddf3, nanddf3, iordf3, xordf3): New.
3175 2005-04-12 Jeff Law <law@redhat.com>
3177 * Makefile.in (OBJS-common): Add tree-ssa-uncprop.o.
3178 (tree-ssa-uncprop.o): Add dependencies.
3179 * tree-cfg.c (remove_useless_stmts_bb, remove_useless_stmts): Remove.
3180 * tree-flow.h (remove_useless_stmts): Remove prototype.
3181 * tree-outof-ssa.c (rewrite_out_of_ssa): Remove call to
3182 remove_useless_stmts.
3183 * timevar.def (TV_TREE_SSA_UNCPROP): New timevar.
3184 * tree-optimize.c (init_tree_optimization_passes): Add uncprop pass.
3185 * tree-pass.h (pass_uncprop): Declare.
3186 * tree-ssa-uncprop.c: New file.
3188 2005-04-12 James E. Wilson <wilson@specifixinc.com>
3191 * unwind-ia64.c (uw_intall_context): Add missing load of r27.
3193 2005-04-12 Caroline Tice <ctice@apple.com>
3195 Temporary fix for partitioning problems.
3196 * passes.c (rest_of_handle_final): Remove code that
3197 frees unlikely_text_section_name,
3198 * varasm.c (assemble_start_function): Test for partitioning
3199 flag before writing out section labels.
3200 (assemble_end_function): Test for partitioning flag before
3201 writing out section labels.
3203 2005-04-12 Steven Bosscher <stevenb@suse.de>
3204 Stuart Hastings <stuart@apple.com>
3205 Jan Hubicka <jh@suse.cz>
3207 * Makefile.in: Add function.h to BASIC_BLOCK_H. Remove all
3208 references to gt-tree-cfg.h.
3209 * basic-block.h (struct basic_block_def): Don't skip rbi
3210 for garbage collection.
3211 (struct reorder_block_def): Make GTY-able.
3212 (struct control_flow_graph): New structure.
3213 (n_edges, n_basic_blocks, last_basic_block, basic_block_info,
3214 BASIC_BLOCK, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR): No longer vars,
3215 but instead defines to the control_flow_graph for cfun.
3216 (label_to_block_map): New define, points to the label map of
3217 the control_flow_graph for cfun.
3218 (n_edges_for_function, n_basic_blocks_for_function,
3219 last_basic_block_for_function, basic_block_info_for_function,
3220 EXIT_BLOCK_PTR_FOR_FUNCTION, ENTRY_BLOCK_PTR_FOR_FUNCTION,
3221 basic_block_info_for_function, label_to_block_map_for_function):
3222 Counterparts for the above, taking a struct function as an extra
3224 (alloc_rbi_pool, free_rbi_pool): Remove prototypes.
3225 * cfg.c: (n_edges, n_basic_blocks, last_basic_block,
3226 basic_block_info, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Remove.
3227 (alloc_rbi_pool, free_rbi_pool): Remove.
3228 (initialize_bb_rbi): Use ggc_alloc_cleared instead of pool_alloc.
3229 * cfglayout.c: (cfg_layout_initialize): Don't allocate the rbi pool
3231 (cfg_layout_finalize) ... and don't free it here.
3232 * cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets
3234 * flow.c (free_basic_block_vars): Set label_to_block_map and
3235 n_edges to zero too.
3236 * function.h (struct function): Add cfg field.
3237 * function.c (allocate_struct_function): Allocate the cfg.
3238 * tree-cfg.c (label_to_block_map): Remove.
3239 (build_tree_cfg): Don't allocate the rbi pool here...
3240 (delete_tree_cfg_annotations): ...and don't free it here.
3241 Also don't nullify label_to_block_map for cfun.
3243 2005-04-12 Caroline Tice <ctice@apple.com>
3245 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
3246 Revert my patch from April 9.
3247 (fix_edges_for_rarely_executed_code): Revert my patch from April 9.
3248 (reorder_basic_blocks): Revert my patch from April 9.
3249 (insert_section_boundary_note): Revert my patch from April 9.
3250 * dbxout.c (dbxout_function_end): Revert my patch from April 9.
3251 * dwarf2out.c (COLD_TEXT_SECTION_LABEL): Revert my patch from April 9.
3252 (COLD_END_LABEL): Revert my patch from April 9.
3253 (cold_text_section_label): Revert my patch from April 9.
3254 (cold_end_label): Revert my patch from April 9.
3255 (dwarf2out_switch_text_section): Revert my patch from April 9.
3256 (output_aranges): Revert my patch from April 9.
3257 (output_ranges): Revert my patch from April 9.
3258 (output_line_info): Revert my patch from April 9.
3259 (add_location_or_const_value_attribute): Revert my patch from April 9.
3260 (dwarf2out_var_location): Revert my patch from April 9.
3261 (dwarf2out_init): Revert my patch from April 9.
3262 (dwarf2out_finish): Revert my patch from April 9.
3263 * function.h (struct function): Revert my patch from April 9.
3264 * opts.c (decode_options): Revert my patch from April 9.
3265 * output.h (unlikely_section_label, hot_section_label,
3266 hot_section_end_label, cold_section_end_label,
3267 unlikely_text_section_name): Revert my patch from April 9.
3268 * passes.c (rest_of_handle_final): Revert my patch from April 9.
3269 * varasm.c (unlikely_section_label, hot_section_label,
3270 hot_section_end_label, cold_section_end_label,
3271 unlikely_text_section_name): Revert my patch from April 9.
3272 (initialize_cold_section_name): Revert my patch from April 9.
3273 (unlikely_text_section): Revert my patch from April 9.
3274 (in_unlikely_text_section): Revert my patch from April 9.
3275 (named_section): Revert my patch from April 9.
3276 (function_section): Revert my patch from April 9.
3277 (current_function_section): Revert my patch from April 9.
3278 (assemble_start_function): Revert my patch from April 9.
3279 (assemble_end_function): Revert my patch from April 9.
3280 (default_section_type_flags_1): Revert my patch from April 9.
3282 2005-04-12 Eric Botcazou <ebotcazou@libertysurf.fr>
3284 * config/sparc/sparc.h (APPLY_RESULT_SIZE): Set to 24 in 64-bit mode.
3285 * config/sparc/sparc.md (untyped_call): Save the registers manually.
3287 * config/sparc/sparc.c (legitimate_address_p): Use TARGET_ARCH32.
3289 2005-04-12 Ulrich Weigand <uweigand@de.ibm.com>
3292 * config/s390/s390.md ("*set_tp"): Use SET in pattern.
3293 ("set_tp_64", "set_tp_31"): Adapt expanded pattern.
3295 2004-04-12 Richard Henderson <rth@redhat.com>
3297 * config/i386/i386.md (UNSPEC_FIX, UNSPEC_MOVA, UNSPEC_SHUFFLE,
3298 UNSPEC_PSHUFLW, UNSPEC_PSHUFHW, UNSPEC_ADDSUB, UNSPEC_HADD,
3299 UNSPEC_HSUB, UNSPEC_MOVSHDUP, UNSPEC_MOVSLDUP, UNSPEC_MOVDDUP): Remove.
3300 (UNSPEC_*, UNSPECV_*): Renumber.
3302 2005-04-12 Frank Ch. Eigler <fche@redhat.com>
3305 From Richard Henderson <rth@redhat.com>:
3306 * tree-mudflap.c (mf_build_check_statement_for): Correct block
3309 2005-04-12 Dorit Naishlos <dorit@il.ibm.com>
3311 * tree-cfg.c (tree_verify_flow_info): Use LABEL_EXPR_LABEL.
3313 2005-04-12 Bernd Schmidt <bernd.schmidt@analog.com>
3315 * config/bfin/bfin.c (bfin_library_id_string): Remove.
3316 (bfin_library_id): New variable.
3317 (bfin_expand_prologue): Use bfin_library_id and bfin_lib_id_given
3318 instead of bfin_library_id_string.
3319 (bfin_handle_option): New function.
3320 (override_options): Remove most code to deal with shared library IDs,
3321 just check they aren't used without -mid-shared-library.
3322 (TARGET_HANDLE_OPTION): Define.
3323 * config/bfin/bfin.h (TARGET_OPTIONS): Delete macro.
3324 * config/bfin/bfin.opt (mshared-library-id=): New.
3326 2005-04-12 Kazu Hirata <kazu@cs.umass.edu>
3328 * tree-vect-transform.c: Fix comment typos.
3330 2005-04-12 Mostafa Hagog <mustafa@il.ibm.com>
3332 * postreload-gcse.c (eliminate_partially_redundant_load): Don't
3333 split critical edges when not possible/profitable.
3335 2005-04-12 Richard Sandiford <rsandifo@redhat.com>
3337 * config/ns32k/ns32k.h (target_flags, MASK_32081, MASK_RTD)
3338 (MASK_REGPARM, MASK_32532, MASK_32332, MASK_NO_SB, MASK_NO_BITFIELD)
3339 (MASK_HIMEM, MASK_32381, MASK_MULT_ADD, MASK_SRC, MASK_IEEE_COMPARE)
3340 (TARGET_32081, TARGET_32381, TARGET_MULT_ADD, TARGET_RTD)
3341 (TARGET_REGPARM, TARGET_32532, TARGET_32332, TARGET_SB, TARGET_HIMEM)
3342 (TARGET_BITFIELD, TARGET_IEEE_COMPARE, TARGET_SWITCHES): Delete.
3343 (OVERRIDE_OPTIONS): Clear MASK_SB instead of setting MASK_NO_SB.
3344 * config/ns32k/netbsd.h (TARGET_DEFAULT): Remove MASK_NO_SB and
3346 * config/ns32k/ns32k.c (ns32k_handle_option): New function.
3347 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3348 * config/ns32k/ns32k.opt: New file.
3350 2005-04-12 Richard Sandiford <rsandifo@redhat.com>
3352 * config.gcc (m68k-*-linux*): Add m68k/ieee.opt to $extra_options.
3353 * config/m68k/m68k.h (target_flags, MASK_68020, TARGET_68020)
3354 (MASK_68030, TARGET_68030, MASK_68040, TARGET_68040, MASK_68040_ONLY)
3355 (TARGET_68040_ONLY, MASK_68060, TARGET_68060, MASK_5200, TARGET_5200)
3356 (MASK_CFV3, TARGET_CFV3, MASK_CFV4, TARGET_CFV4, MASK_528x)
3357 (TARGET_528x, MASK_CF_HWDIV, TARGET_CF_HWDIV, MASK_68881, TARGET_68881)
3358 (MASK_BITFIELD, TARGET_BITFIELD, MASK_SHORT, TARGET_SHORT)
3359 (MASK_ALIGN_INT, TARGET_ALIGN_INT, MASK_PCREL, TARGET_PCREL)
3360 (MASK_NO_STRICT_ALIGNMENT, TARGET_STRICT_ALIGNMENT, MASK_RTD)
3361 (TARGET_RTD, MASK_SEP_DATA, TARGET_SEP_DATA, MASK_ID_SHARED_LIBRARY)
3362 (TARGET_ID_SHARED_LIBRARY, MASK_ALL_CF_BITS, TARGET_SWITCHES)
3363 (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS): Delete.
3364 (MASK_COLDFIRE): Formatting fixes.
3365 (TARGET_COLDFIRE): Turn into a boolean value for consistency.
3366 * config/m68k/linux.h (SUBTARGET_SWITCHES): Delete.
3367 * config/m68k/m68k.c (m68k_library_id_string): Initialize to
3368 "_current_shared_library_a5_offset_".
3369 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3370 (MASK_ALL_CPU_BITS): New macro.
3371 (m68k_handle_option): New function.
3372 (override_options): Remove handling of m68k_library_id_string.
3373 * config/m68k/m68k.opt: New file.
3374 * config/m68k/ieee.opt: New file.
3376 2005-04-11 Mark Mitchell <mark@codesourcery.com>
3378 * target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
3379 (TARGET_CXX_DETERMINE_CLASS_VISIBILITY): New macro.
3380 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
3381 (TARGET_CXX): Adjust accordingly.
3382 * target.h (struct gcc_target): Remove epxort_class_data. Add
3383 determine_class_data_visibility and class_data_always_comdat.
3384 * doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
3385 (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Document.
3386 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
3387 * config/arm/arm.c (arm_cxx_export_class_data): Remove.
3388 (arm_cxx_determine_class_data_visibility): New.
3389 (arm_cxx_class_data_always_comdat): Likewise.
3390 (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
3391 (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Define.
3392 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
3393 * config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define.
3394 * config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P):
3397 2005-04-11 Devang Patel <dpatel@apple.com>
3399 * tree-data-ref.c (build_classic_dist_vector,
3400 compute_subscript_distance): Make externally visible.
3401 * tree-data-ref.h (build_classic_dist_vector,
3402 compute_subscript_distance): Same.
3403 * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
3404 Check distance vector against vectorization factor.
3405 (vect_analyze_loop): Determine vectorizaion factor before
3406 analyzing data dependences.
3407 * tree-vectorizer.c (loops_num): Make it externally visible and
3409 * tree-vectorizer.c (vect_loops_num): ... new name.
3410 * tree-vectorizer.h (vect_loops_num): New.
3412 2005-04-11 Devang Patel <dpatel@apple.com>
3414 * tree-vect-analyze.c (vect_analyze_operations): Check
3415 vectorizable codition.
3416 * tree-vect-transform.c (vect_is_simple_cond): New function.
3417 (vectorizable_condition): New function.
3418 (vect_transform_stmt): Handle condition_vec_info_type.
3419 * tree-vectorizer.h (enum stmt_vec_info_type): Add
3420 condition_vec_info_type.
3421 (vectorizable_condition): New.
3423 2005-04-11 Geoffrey Keating <geoffk@apple.com>
3425 * config/i386/i386.h (TARGET_FPMATH_DEFAULT): New.
3426 * config/i386/darwin.h (TARGET_FPMATH_DEFAULT): New.
3427 * config/i386/i386.c (override_options): Use TARGET_FPMATH_DEFAULT.
3429 * config/i386/darwin.h (ASM_SPEC): Use -arch i386 not -arch i686.
3430 (SUBTARGET_EXTRA_SPECS): Always 'i386'.
3432 * dwarf2out.c (output_line_info): Don't try to dereference
3433 a NULL current_function_decl.
3435 * config/t-slibgcc-darwin: Don't put shared libraries in
3436 directories other than $(slibdir).
3437 * config/rs6000/darwin.h: Find -m64 libgcc under the name the
3440 2005-04-11 Diego Novillo <dnovillo@redhat.com>
3442 PR tree-optimization/20933
3443 * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Move
3444 logic to reject aliases between read-only and writable
3446 (may_alias_p): ... here.
3447 (get_tmt_for): Do not associate read-only tags to pointers
3448 whose pointed-to type is not read-only.
3449 * tree-ssa.c (verify_ssa): Check that memory stores have at
3450 least one V_MAY_DEF or V_MUST_DEF.
3452 2005-04-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3455 * configure.ac (gcc_UNLOCKED_FUNCS): New.
3456 (AC_CHECK_FUNCS, AC_CHECK_DECLS): Check for gcc_UNLOCKED_FUNCS.
3457 * system.h (putchar, getc, getchar, clearerr, feof, fileno,
3458 fflush, fgetc, fgets, ferror, fread): Redefine to the associated
3460 (fwrite_unlocked): Fix prototype.
3462 * configure, config.in: Regenerate.
3464 2005-04-11 David Edelsohn <edelsohn@gnu.org>
3466 * tree-ssa-loop-im.c: Include real.h.
3467 (determine_invariantness_stmt): If real division divisor is
3468 invariant and flag_unsafe_math_optimizations enabled, generate
3469 invariant reciprocal for hoisting.
3470 * Makefile.in (tree-ssa-loop-im.o): Add real.h dependency.
3472 2005-04-11 Daniel Berlin <dberlin@dberlin.org>
3474 Fix PR tree-optimization/20926
3476 * tree-ssa-alias.c (add_type_alias): Handle subvars.
3478 2005-04-11 Devang Patel <dpatel@apple.com>
3480 * config/rs6000.c (rs6000_emit_vector_select): Fix vector select
3483 2005-04-11 Andrew Pinski <pinskia@physics.uc.edu>
3485 * fold-const.c (fold_binary_op_with_conditional_arg):
3486 use fold_buildN instead of "fold (buildN" in some
3488 (fold_unary): Likewise.
3489 (fold_binary): Likewise.
3491 2005-04-11 Daniel Berlin <dberlin@dberlin.org>
3493 Fix PR tree-optimization/20612
3494 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix increment
3496 (perfect_nestify): preheaderbb is *not* part of loop of the
3499 2005-04-11 Andrew Pinski <pinskia@physics.uc.edu>
3501 * tree-ssa-alias.c (may_alias_p): If the variable
3502 is a global variable and the pointer is parameter
3503 and -fargument-noalias-global is used, then
3504 the pointer cannot alias the variable.
3506 2005-04-11 James A. Morrison <phython@gcc.gnu.org>
3508 * config/sparc/sparc.c: Use gcc_assert and gcc_unreachable.
3509 * config/sparc/sparc.h: Likewise.
3510 * config/sparc/sparc.md: Likewise.
3512 2005-04-11 Kazu Hirata <kazu@cs.umass.edu>
3514 * tree-vrp.c (maybe_add_assert_expr): Move a comment.
3516 * tree-vrp.c: Fix a comment typo.
3518 2005-04-11 Diego Novillo <dnovillo@redhat.com>
3520 PR tree-optimization/20920
3521 * tree-pretty-print.c (dump_generic_node): Show '(ab)' if an
3522 SSA_NAME flows through an abnormal edge.
3523 * tree-vrp.c (infer_value_range): Ignore SSA names that flow
3524 through abnormal edges.
3525 (maybe_add_assert_expr): Likewise.
3527 2005-04-11 Richard Sandiford <rsandifo@redhat.com>
3529 * config/s390/s390.h (s390_tune_string, s390_arch_string)
3530 (s390_warn_framesize_string, s390_warn_dynamicstack_string)
3531 (s390_stack_size_string, s390_stack_guard_string, target_flags)
3532 (MASK_HARD_FLOAT, MASK_SMALL_EXEC, MASK_DEBUG_ARG, MASK_64BIT)
3533 (MASK_ZARCH, MASK_MVCLE, MASK_TPF_PROFILING, MASK_NO_FUSED_MADD)
3534 (MASK_BACKCHAIN, MASK_PACKED_STACK, TARGET_HARD_FLOAT)
3535 (TARGET_SOFT_FLOAT, TARGET_SMALL_EXEC, TARGET_DEBUG_ARG)
3536 (TARGET_64BIT, TARGET_ZARCH, TARGET_MVCLE, TARGET_TPF_PROFILING)
3537 (TARGET_NO_FUSED_MADD, TARGET_FUSED_MADD, TARGET_BACKCHAIN)
3538 (TARGET_PACKED_STACK, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
3539 * config/s390/s390.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
3540 (TARGET_HANDLE_OPTION): Likewise.
3541 (s390_tune): Initialize to PROCESSOR_max.
3542 (s390_arch_string): Make static.
3543 (s390_tune_string, s390_warn_framesize_string): Delete.
3544 (s390_warn_dynamicstack_string, s390_stack_size_string): Delete.
3545 (s390_stack_guard_string, s390_warn_dynamicstack_p): Delete.
3546 (s390_handle_arch_option, s390_handle_option): New functions.
3547 (override_options): Remove parsing of option strings.
3548 * config/s390/s390.opt: New file.
3550 2005-04-11 Paolo Bonzini <bonzini@gnu.org>
3552 * tree-complex.c (expand_vector_operations): Call
3553 update_stmt_if_modified.
3555 2005-04-11 Paolo Bonzini <bonzini@gnu.org>
3557 * tree-vect-analyze (vect_determine_vectorization_factor):
3558 Do not use GET_MODE_NUNITS.
3559 * tree-vect-transform.c (vect_get_vec_def_for_operand,
3560 (vectorizable_load, vect_transform_loop): Likewise.
3562 2005-04-11 Uros Bizjak <uros@kss-loka.si>
3564 * builtins.def (BUILT_IN_LCEIL, BUILT_IN_LCEILF, BUILT_IN_LCEILL)
3565 (BUILT_IN_LLCEIL, BUILT_IN_LLCEILF, BUILT_IN_LLCEILL): New.
3566 * optabs.h (enum optab_index): Add new OTI_lceil.
3567 (lceil_optab): Define corresponding macro.
3568 * optabs.c (init_optabs): Initialize lceil_optab.
3569 * genopinit.c (optabs): Implement lceil_optab using lceilsi2
3570 and lceildi2 patterns.
3571 * builtins.c (expand_builtin_int_roundingfn): Handle
3572 BUILT_IN_LCEIL{,F,L} and BUILT_IN_LLCEIL{,F,L}.
3573 (fold_builtin_int_roundingfn): Handle BUILT_IN_LCEIL{,F,L} and
3574 BUILT_IN_LLCEIL{,F,L}.
3575 (fold_builtin_1): Fold BUILT_IN_LCEIL{,F,L} and
3576 BUILT_IN_LLCEIL{,F,L} using fold_builtin_int_roundingfn.
3577 (mathfn_built_in): Handle BUILT_IN LCEIL and BUILT_IN_LLCEIL.
3578 (expand_builtin): Expand BUILT_IN_LCEIL{,F,L} and
3579 BUILT_IN_LLCEIL{,F,L} using expand_builtin_int_roundingfn.
3580 * convert.c (convert_to_integer): Convert (long int)ceil{,f,l},
3581 into lceil built-in function and (long long int)ceil{,f,l} into
3582 llceil built-in function.
3583 * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LCEIL and
3586 2005-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3588 * pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from
3591 2005-04-10 Kazu Hirata <kazu@cs.umass.edu>
3593 * config/arm/arm.c: Fix a comment typo.
3594 * doc/tree-ssa.texi: Fix a typo.
3596 2005-04-10 Steven Bosscher <stevenb@suse.de>
3598 * cselib.c (clear_table): Rename to cselib_clear_table.
3599 * cselib.h (cselib_clear_table): Add prototype.
3600 * gcse.c (gcse_main): Make 'f' argument unused.
3601 (alloc_gcse_mem): Do not walk the insn chain, walk the contents
3602 of each basic block instead.
3603 (compute_sets, compute_hash_table_work): Likewise.
3604 (constprop_register): Change int 'alter_jumps' argument to bool.
3605 (do_local_cprop): Likewise.
3606 (local_cprop_pass): Likewise. Also walk basic blocks instead of
3607 the insn chain. Explicitly clear the cselib tables after finishing
3608 one basic block. Make sure there are no unterminated libcall blocks.
3609 Update compute_sets call.
3610 (cprop): Walk basic blocks instead of the insn chain.
3611 (one_cprop_pass, compute_ld_motion_mems, compute_store_table):
3613 (bypass_jumps): Update alloc_gcse_mem, compute_sets, and
3614 one_cprop_pass calls.
3616 2005-04-10 Richard Sandiford <rsandifo@redhat.com>
3618 * combine.c (combine_simplify_rtx): Remove a transformation that
3619 relies on an invalid assumption about rtl sign-extension semantics.
3621 2005-04-10 Richard Sandiford <rsandifo@redhat.com>
3623 * value-prof.c (tree_divmod_fixed_value_transform): Fix arguments
3624 to build_int_cst_wide.
3626 2005-04-09 Alexandre Oliva <aoliva@redhat.com>
3629 * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
3630 set the original address pseudo to the correct value before the
3631 original insn, if possible, and leave the insn alone, otherwise
3632 create a new pseudo, set it and replace it in the insn.
3633 * recog.c (validate_change_maybe_volatile): New.
3634 * recog.h (validate_change_maybe_volatile): Declare.
3636 2005-04-09 Caroline Tice <ctice@apple.com>
3638 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
3639 Remove targetm.have_named_sections test.
3640 (fix_edges_for_rarely_executed_code): Likewise.
3641 (insert_section_boundary_note): Likewise.
3642 (reorder_basic_blocks): Check partitioning flag before calling
3643 verify_hot_cold_block_grouping.
3644 * dbxout.c (dbxout_function_end): Get hot/cold section labels from
3645 the function struct rather than global variables.
3646 * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
3647 (COLD_END_LABEL): Likewise
3648 (cold_text_section_label): New static global variable.
3649 (cold_end_label): Likewise.
3650 (dwarf2out_switch_text_section): Get hot/cold section labels from
3651 the function struct rather than global variables.
3652 (output_aranges): Use cold_text_section_label and cold_end_label;
3653 check partitioning flag before putting out delta.
3654 (output_ranges): Remove incorrect code attempting to use
3656 (output_line_info): Get cold section label from function struct.
3657 (add_location_or_const_value_attribute): Likewise.
3658 (get_subprogram_die): Get hot/cold section labels from function struct.
3659 (dwarf2out_var_location): Likewise.
3660 (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
3661 write out cold_text_section_label if partition flag is set.
3662 (dwarf2out_finish): Write out cold_end_label if partition flag is set;
3663 * function.h (struct function): Add new fields to point to hot/cold
3664 section labels: hot_section_label, cold_section_label,
3665 hot_section_end_label and cold_section_end_label; also add new field
3666 for cold text section name, unlikely_text_section_name.
3667 * opts.c (decode_options): Turn off partitioning flag if
3668 !targetm.have_named_sections.
3669 * output.h (hot_section_label): Remove.
3670 (hot_section_end_label): Remove.
3671 (cold_section_end_label): Remove.
3672 (unlikely_section_label): Remove.
3673 (unlikely_text_section_name): Remove.
3674 * passes.c (rest_of_handle_final): Remove code that frees
3675 unlikely_text_section_name.
3676 * varasm.c (unlikely_section_label): Remove.
3677 (hot_section_label): Remove.
3678 (hot_section_end_label): Remove.
3679 (cold_section_end_label): Remove.
3680 (unlikely_text_section_name): Remove.
3681 (initialize_cold_section_name): Modify to call
3682 targetm.strip_name_encoding; to store cold section name in current
3683 function struct, if it exists; and to only use the decl_section_name
3684 if flag_named_sections is true.
3685 (unlikely_text_section): Modify to get section name out of current
3686 function struct, if there is one; otherwise build it from
3687 UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
3688 (in_unlikely_text_section): Likewise.
3689 (named_section): Modify to get/put cold section name in current function
3690 struct, if there is one.
3691 (function_section): Change 'bool unlikely' to 'int reloc'; check
3692 targetm.have_named_sections before calling named_section.
3693 (current_function_section): Likewise.
3694 (assemble_start_function): Modify to get/put unlikely_text_section_name
3695 in current function struct; modify to get hot/cold section labels
3696 from function struct; initialize labels using
3697 ASM_GENERATE_INTERNAL_LABEL;
3698 test partitioning flag before writing out hot section label.
3699 (assemble_end_function): Test partitioning flag before writing out
3700 hot/cold section labels.
3701 (default_section_type_flags_1): Modify to use array instead of
3702 char* for unlikely_text_section_name; set flags correctly for
3703 cold text section if there is not a current function decl.
3705 2005-04-09 Jakub Jelinek <jakub@redhat.com>
3707 * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
3708 and TI_VA_LIST_FPR_COUNTER_FIELD.
3709 (va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
3710 * tree-pass.h (pass_stdarg): Add.
3711 * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
3712 * tree-stdarg.c: New file.
3713 * tree-stdarg.h: New file.
3714 * Makefile.in (OBJS-common): Add tree-stdarg.o.
3715 (tree-stdarg.o): Add dependencies.
3716 * function.h (struct function): Add va_list_gpr_size and
3717 va_list_fpr_size fields.
3718 * function.c (allocate_struct_function): Initialize them.
3719 * target.h (struct gcc_target): Add stdarg_optimize_hook.
3720 * target-def.h (TARGET_STDARG_OPTIMIZE_HOOK): Define.
3721 (TARGET_INITIALIZER): Add it.
3723 * config/i386/i386.c (ix86_build_builtin_va_list): Initialize
3724 va_list_{g,f}pr_counter_field.
3725 (ix86_setup_incoming_varargs): Don't do anything if reg_save
3726 area will not be used. Only save registers that tree-stdarg.c
3727 detected they need saving.
3728 (ix86_va_start): Don't set up fields that won't be used.
3730 * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
3731 va_list_{g,f}pr_counter_field.
3732 (setup_incoming_varargs): Don't do anything if reg_save
3733 area will not be used. Only save registers that tree-stdarg.c
3734 detected they need saving.
3735 (rs6000_va_start): Don't set up fields that won't be used.
3737 * config/alpha/alpha.c: Include tree-flow.h and tree-stdarg.h.
3738 (alpha_build_builtin_va_list): Initialize va_list_gpr_counter_field.
3739 (va_list_skip_additions, alpha_stdarg_optimize_hook): New functions.
3740 (TARGET_STDARG_OPTIMIZE_HOOK): Define.
3742 2005-04-09 Jakub Jelinek <jakub@redhat.com>
3745 * config/i386/i386.c (construct_container): Pass empty aligned
3746 struct, union or class in memory.
3748 2005-04-09 Kazu Hirata <kazu@cs.umass.edu>
3750 * dominance.c, gthr-win32.h, reg-stack.c, tree-ssa-copy.c,
3751 tree-ssa-operands.c, tree-ssa.c, tree-vrp.c, varasm.c,
3752 config/alpha/alpha.c, config/arm/arm.c, config/m32r/m32r.h,
3753 config/rs6000/predicates.md: Fix comment typos.
3755 * sched-int.h (haifa_insn_data): Remove blockage and units.
3756 (INSN_UNIT, INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK,
3757 ENCODE_BLOCKAGE, UNIT_BLOCKED, BLOCKAGE_RANGE,
3758 MIN_BLOCKAGE_COST, MAX_BLOCKAGE_COST): Remove.
3760 2005-04-09 Jan Hubicka <jh@suse.cz>
3761 Steven Bosscher <stevenb@suse.de>
3763 * cfglayout.c (copy_bbs): Rename n_edges to num_edges.
3764 * cfgloop.c (get_loop_exit_edges): Likewise.
3765 * cfgloopmanip.c (fix_irreducible_loops): Likewise.
3767 * loop-unroll.c (analyze_insns_in_loop): Likewise.
3768 * tree-cfg.c (dump_cfg_status): Likewise.
3770 2005-04-09 David Edelsohn <edelsohn@gnu.org>
3772 * config/rs6000/predicates.md (altivec_register_operand): Remove
3773 redundant match_code test.
3774 (gpc_reg_operand): Same.
3775 (cc_reg_operand): Same.
3776 (cc_reg_not_cr0_operand): Same.
3778 2005-04-09 Jan Hubicka <jh@suse.cz>
3780 Forgotten hunk from my last merge patch:
3781 * final.c (output_addr_const): Do not call mark_referenced.
3783 2005-04-09 Andrew MacLeod <amacleod@redhat.com>
3785 * doc/tree-ssa.texi: Add immediate use documentation.
3787 2005-04-09 Richard Earnshaw <richard.earnshaw@arm.com>
3789 * arm.c (FL_WBUF): Define.
3790 (arm_tune_strongarm): Renamed from arm_is_strong. All uses changed.
3791 (arm_is_6_or_7): Delete.
3792 (arm_tune_wbuf): New.
3793 (arm_override_options): Set arm_tune_wbuf.
3794 * arm.h (arm_tune_strongarm): Renamed from arm_is_strong.
3795 (arm_is_6_or_7): Delete declaration.
3796 (arm_tune_wbuf): New declartion.
3797 * arm.md (is_strongarm): Derive from arm_tune_strongarm.
3798 (model_wbuf): Derive from arm_tune_wbuf.
3799 * arm-cores.def (arm600, arm610, arm620, arm700, arm700i, arm710)
3800 (arm720, arm710c, arm7100, arm7500, arm7500fe, arm710t, arm720t)
3801 (arm740t): Mark CPUs as having a write buffer.
3803 2005-04-09 Uros Bizjak <uros@kss-loka.si>
3805 * config/i386/i386.md (*fp_jcc_7_387): Use 'const0_operand' instead
3806 of 'const_double_operand' in operand 2 constraints. Update enable
3809 2005-04-09 Uros Bizjak <uros@kss-loka.si>
3811 * builtins.def (BUILT_IN_LFLOOR, BUILT_IN_LFLOORF, BUILT_IN_LFLOORL)
3812 (BUILT_IN_LLFLOOR, BUILT_IN_LLFLOORF, BUILT_IN_LLFLOORL): New.
3813 * optabs.h (enum optab_index): Add new OTI_lfloor.
3814 (lfloor_optab): Define corresponding macro.
3815 * optabs.c (init_optabs): Initialize lfloor_optab.
3816 * genopinit.c (optabs): Implement lfloor_optab using lfloorsi2
3817 and lfloordi2 patterns.
3818 * builtins.c (expand_builtin_int_roundingfn): New prototype.
3819 (expand_builtin_int_roundingfn): New function.
3820 (fold_builtin_int_roundingfn): New prototype.
3821 (fold_builtin_int_roundingfn): New function, renamed from
3822 fold_builtin_lround.
3823 Handle BUILT_IN_LROUND{,F,L}, BUILT_IN_LLROUND{,F,L} and
3824 BUILT_IN_LFLOOR{,F,L}, BUILT_IN_LLFLOOR{,F,L}.
3825 (fold_builtin_1): Fold BUILT_IN_LFLOOR{,F,L} and
3826 BUILT_IN_LLFLOOR{,F,L} using fold_builtin_int_roundingfn.
3827 (mathfn_built_in): Handle BUILT_IN LFLOOR and BUILT_IN_LLFLOOR.
3828 (expand_builtin): Expand BUILT_IN_LFLOOR{,F,L} and
3829 BUILT_IN_LLFLOOR{,F,L} using expand_builtin_int_roundingfn.
3830 * convert.c (convert_to_integer): Convert (long int)floor{,f,l},
3831 into lfloor built-in function and (long long int)floor{,f,l} into
3832 llfloor built-in function.
3833 * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LFLOOR and
3836 2005-04-08 Ian Lance Taylor <ian@airs.com>
3838 * c-common.def: Move FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
3839 CONTINUE_STMT, and SWITCH_STMT to cp/cp-tree.def.
3840 * c-common.h (WHILE_COND, WHILE_BODY): Move to cp/cp-tree.h.
3841 (DO_COND, DO_BODY): Likewise.
3842 (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Likewise.
3843 (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Likewise.
3844 (c_common_stmt_codes): Remove FOR_STMT, WHILE_STMT, DO_STMT,
3845 BREAK_STMT, CONTINUE_STMT, and SWITCH_STMT.
3846 (build_continue_stmt, build_break_stmt): Don't declare.
3847 (c_do_switch_warnings): Update declaration.
3848 * c-gimplify.c (enum bc_t): Remove.
3849 (struct c_gimplify_ctx, ctxp): Remove.
3850 (push_context, pop_context): Remove static functions.
3851 (c_genericize): Don't call push_context or pop_context.
3852 (begin_bc_block, finish_bc_block): Remove static functions.
3853 (build_bc_goto): Likewise.
3854 (gimplify_c_loop): Likewise.
3855 (gimplify_for_stmt, gimplify_while_stmt): Likewise.
3856 (gimplify_do_stmt, gimplify_switch_stmt): Likewise.
3857 (c_gimplify_expr): Remove handling of FOR_STMT, WHILE_STMT,
3858 DO_STMT, SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
3859 * c-common.c (c_do_switch_warnings): Rename from
3860 c_do_switch_warnings_1.
3861 (c_do_switch_warnings) [old version]: Remove.
3862 (c_do_switch_expr_warnings): Remove.
3863 * c-typeck.c (c_finish_case): Call new c_do_switch_warnings
3864 function instead of c_do_switch_expr_warnings.
3865 * c-dump.c (c_dump_tree): Remove handling of BREAK_STMT,
3866 CONTINUE_STMT, DO_STMT, FOR_STMT, SWITCH_STMT, and WHILE_STMT.
3867 * c-pretty-print.c (pp_c_statement): Likewise.
3868 * c-semantics.c (build_break_stmt, build_continue_stmt): Remove.
3870 2005-04-08 Devang Patel <dpatel@apple.com>
3872 * tree-if-conv.c (find_phi_replacement_condition): New parameter, loop.
3873 While selecting replacement condition pay attention to loop header.
3875 2005-04-08 Diego Novillo <dnovillo@redhat.com>
3877 Merge from tree-cleanup-branch: VRP, store CCP, store
3878 copy-prop, incremental SSA updating of FUD chains and
3879 newly exposed symbols.
3881 * Makefile.in (tree-ssa-copy.o): Depend on tree-ssa-propagate.h.
3882 (OBJS-common): Add tree-vrp.o.
3883 (tree-vrp.o): New rule.
3884 * basic-block.h (nearest_common_dominator_for_set): Declare.
3885 * common.opt (ftree-store-ccp): New flag.
3886 (ftree-copy-prop): New flag.
3887 (ftree-vrp): New flag.
3888 (ftree-store-copy-prop): New flag.
3889 * dominance.c (nearest_common_dominator_for_set): New.
3890 * domwalk.c (walk_dominator_tree): Only traverse
3891 statements in blocks marked in walk_data->interesting_blocks.
3892 * domwalk.h (struct dom_walk_data): Add field interesting_blocks.
3893 * fold-const.c (fold): Handle ASSERT_EXPR.
3894 * opts.c (decode_options): Set flag_tree_copy_prop at -O1.
3895 Set flag_tree_store_ccp, flag_tree_store_copy_prop and
3896 flag_tree_vrp at -O2.
3897 * timevar.def (TV_TREE_VRP): Define.
3898 (TV_TREE_COPY_PROP): Define.
3899 (TV_TREE_STORE_COPY_PROP): Define.
3900 (TV_TREE_SSA_INCREMENTAL): Define.
3901 (TV_TREE_STORE_CCP): Define.
3902 * tree-cfg.c (tree_can_merge_blocks_p): Remove reference
3903 to kill_redundant_phi_nodes from comment.
3904 (verify_expr): Handle ASSERT_EXPR.
3905 * tree-dfa.c (mark_new_vars_to_rename): Remove second
3906 argument. Update all users.
3907 (mark_call_clobbered_vars_to_rename): Remove. Update all
3909 * tree-flow-inline.h (unmodifiable_var_p): New.
3910 * tree-flow.h (enum value_range_type): Declare.
3911 (struct value_range_def): Declare.
3912 (value_range): Declare.
3913 (remove_all_phi_nodes_for): Remove. Update all users.
3914 (find_phi_node_for): Declare.
3915 (add_type_alias): Declare.
3916 (count_uses_and_derefs): Declare.
3917 (kill_redundant_phi_nodes): Remove.
3918 (rewrite_into_ssa): Remove.
3919 (rewrite_def_def_chains): Remove.
3920 (update_ssa, register_new_name_mapping, create_new_def_for,
3921 need_ssa_update_p, name_registered_for_update_p,
3922 release_ssa_name_after_update_ssa, dump_repl_tbl,
3923 debug_repl_tbl, dump_names_replaced_by,
3924 debug_names_replaced_by, mark_sym_for_renaming,
3925 mark_set_for_renaming, get_current_def, set_current_def,
3926 get_value_range, dump_value_range, debug_value_range,
3927 dump_all_value_ranges, debug_all_value_ranges,
3928 expr_computes_nonzero, loop_depth_of_name,
3929 unmodifiable_var_p): Declare.
3930 * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle
3932 * tree-into-ssa.c (block_defs_stack): Update comment.
3933 (old_ssa_names, new_ssa_names, old_virtual_ssa_names,
3934 syms_to_rename, names_to_release, repl_tbl,
3935 need_to_initialize_update_ssa_p, need_to_update_vops_p,
3936 need_to_replace_names_p): New locals.
3937 (NAME_SETS_GROWTH_FACTOR): Define.
3938 (struct repl_map_d): Declare.
3939 (struct mark_def_sites_global_data): Add field
3941 (enum rewrite_mode): Declare.
3942 (REGISTER_DEFS_IN_THIS_STMT): Define.
3943 (compute_global_livein): Use last_basic_block instead of
3945 (set_def_block): Remove last argument. Update all callers.
3946 (prepare_use_operand_for_rename): Remove. Update all callers.
3947 (prepare_def_operand_for_rename): Remove. Update all callers.
3948 (symbol_marked_for_renaming): New.
3951 (repl_map_hash): New.
3953 (repl_map_free): New.
3954 (names_replaced_by): New.
3955 (add_to_repl_tbl): New.