OSDN Git Service

4183ec0f5dfee6e0bb5a56a0d579d4b812910bdd
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-05-02  Joseph S. Myers  <joseph@codesourcery.com>
2
3         PR c/15698
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).
19
20 2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
21
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.
29
30 2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
31
32         * calls.c (expand_call): Handle current_function_pretend_args_size
33         when checking for sibcalls.
34
35 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
36
37         PR tree-optimization/21294
38         * tree-vrp.c (vrp_expr_computes_nonzero): New.
39         (extract_range_from_expr): Call vrp_expr_computes_nonzero.
40
41 2005-05-02  Janis Johnson  <janis187@us.ibm.com>
42
43         PR 19985
44         * gcov-io.h: Declare gcov external functions hidden.
45
46 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
47
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.
51         (equiv_free): New.
52
53         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Factor
54         out common code.
55
56 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
57
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):
72         New.
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
89         target hook.
90
91 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
92
93         * function.c (reorder_blocks, reorder_blocks_1): Use VEC
94         instead of VARRAY.
95
96 2005-05-02  Nathan Sidwell  <nathan@codesourcery.com>
97             Bernd Schmidt  <bernd.schmidt@analog.com>
98
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
103         appropriate.
104         * config/bfin/bfin.md (movsf splitter, beq, bne): Likewise.
105
106 2005-05-02  Dorit Naishlos  <dorit@il.ibm.com>
107
108         * doc/passes.texi: Document vectorization pass.
109
110 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
111
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.
117
118 2005-05-02  Michael Matz  <matz@suse.de>
119
120         PR c++/19542
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.
130
131 2005-05-01  Kazu Hirata  <kazu@cs.umass.edu>
132
133         * gimplify.c (gimplify_compound_lval): Use VEC instead of
134         VARRAY.
135
136         * global.c (calculate_reg_pav): Use VEC instead of VARRAY.
137
138         * dwarf2out.c (decl_scope_table, push_decl_scope,
139         pop_decl_scope, scope_die_for, dwarf2out_init): Use VEC
140         instead of VARRAY.
141
142 2005-05-01  Mark Mitchell  <mark@codesourcery.com>
143
144         PR C++/14391
145         * c-cppbuiltin.c (c_cpp_builtins): Do not define __GXX_WEAK__ to 1
146         if !flag_weak.
147         * doc/cpp.texi (__DEPRECATED): Document.
148         (__EXCEPTIONS): Likewise.
149         (__GXX_WEAK__): Likewise.
150
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.
154
155 2005-05-01  Kazu Hirata  <kazu@cs.umass.edu>
156
157         * tree-ssa-loop-ivopts.c: Fix a comment typo.
158
159 2005-01-05  Paul Brook  <paul@codesourcery.com>
160
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.
166
167 2005-05-01  Gerald Pfeifer  <gerald@pfeifer.com>
168
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.
172
173 2005-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
174
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
179         argument.
180         * tree-scalar-evolution.h (simple_iv): Declaration changed.
181         * tree-ssa-loop-ivopts.c (struct iv_cand): Add depends_on
182         field.
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
187         constant.
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
213         to simple_iv call.
214
215 2005-04-30  Michael Matz  <matz@suse.de>
216
217         * config/i386/i386.md (movmemsi): Also active when
218         TARGET_INLINE_ALL_STRINGOPS.
219
220 2005-04-30  Eric Botcazou  <ebotcazou@libertysurf.fr>
221
222         PR bootstrap/20633
223         * config/freebsd-spec.h (FBSD_CPP_SPEC): Add %(cpp_arch).
224
225 2005-04-30  Paul Brook  <paul@codesourcery.com>
226
227         * config/arm/bpabi.h (RENAME_LIBRARY_SET): Always use .thumb_set in
228         thumb mode.
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.
233
234 2005-04-30  Kazu Hirata  <kazu@cs.umass.edu>
235
236         * tree-ssanames.c: Fix a comment typo.
237         * doc/options.texi: Fix a typo.
238
239 2005-04-30  Nathan Sidwell  <nathan@codesourcery.com>
240
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.
256
257 2005-04-30  Kazu Hirata  <kazu@cs.umass.edu>
258
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
263         of VARRAY.
264
265 2005-04-29  Richard Henderson  <rth@redhat.com>
266
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.
276
277 2005-04-29  Richard Henderson  <rth@redhat.com>
278             Daniel Jacobowitz  <dan@codesourcery.com>
279
280         * gengtype.c (write_func_for_structure): Split out ...
281         (output_type_enum): ... new function.  Fix thinko accessing
282         TYPE_PARAM_STRUCT data.
283
284 2005-04-29  Tom Tromey  <tromey@redhat.com>
285
286         * tree.c (build_block): Removed unused 'tags' argument.
287         * tree.h (build_block): Removed argument.
288
289 2005-04-29  Michael Matz  <matz@suse.de>
290
291         PR rtl-optimization/21144
292         * postreload.c (reload_cse_move2add): Check for VOIDmode.
293
294 2005-04-29  Bob Wilson  <bob.wilson@acm.org>
295
296         * config/xtensa/xtensa.h (OPTIMIZATION_OPTIONS): Define to disable
297         flag_reorder_blocks.
298
299 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
300
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.
304
305 2005-04-29  Devang Patel  <dpatel@apple.com>
306
307         PR tree-optimization/21272
308         PR tree-optimization/21266
309         * tree-if-conv.c (find_phi_replacement_condition): Fix think-o.
310         
311 2005-04-29  Kazu Hirata  <kazu@cs.umass.edu>
312
313         * tree-flow-inline.h: Fix a comment typo.
314         * doc/tree-ssa.texi: Fix a typo.
315
316         * tree-flow-inline.h, tree-ssa-operands.c: Fix comment typos.
317
318 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
319
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.
325
326 2005-04-29  Mark Mitchell  <mark@codesourcery.com>
327
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.
333
334 2005-04-29  Jim Tison  <jtison@us.ibm.com>
335
336         * config/s390/s390.md ("prologue_tpf", "epilogue_tpf"): Alter
337         trace hooks calls to improve performance.
338
339 2005-04-29  Julian Brown  <julian@codesourcery.com>
340             Mark Mitchell  <mark@codesourcery.com>
341             Paul Brook  <paul@codesourcery.com>
342
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
350         libgcc version.
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.  
364
365 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
366
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.
380
381 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
382
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.
395
396 2005-04-28  James E Wilson  <wilson@specifixinc.com>
397
398         * config/i386/i386.h (HI_REGISTER_NAMES): Fix typos in comment.
399         (ADDITIONAL_REGISTER_NAMES): Delete obsolete mmx register entries.
400
401 2005-04-28  DJ Delorie  <dj@redhat.com>
402
403         * opt-functions.awk (var_set): Emit proper initializer for
404         non-target bitfields.
405
406 2005-04-28  Devang Patel  <dpatel@apple.com>
407
408         * dbxout.c (have_used_extensions): Remove.
409         (dbxout_type_fileds, dbxout_type, dbxout_symbol): Remove use of
410         have_used_extensions.
411         
412 2005-04-28  James E Wilson  <wilson@specifixinc.com>
413
414         * doc/install.texi: Update -enable-languages info.  Correct path to
415         html docs.
416
417 2005-04-28  DJ Delorie  <dj@redhat.com>
418
419         * optc-gen.awk (END): Make sure no variable is defined more
420         than once.
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.
425
426 2005-04-28  Martin Koegler <mkoegler@auto.tuwien.ac.at>
427
428         PR rtl-optimization/18877
429         * reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg
430         number in val.start.
431
432 2005-04-28  David Edelsohn  <edelsohn@gnu.org>
433
434         PR target/20813
435         * config/rs6000/aix43.h (SUBSUBTARGET_SWITCHES, aix64): Add
436         MASK_PPC_GFXOPT.
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.
440
441 2005-04-28  Richard Earnshaw  <richard.earnshaw@arm.com>
442
443         * arm.c (legitimize_pic_address): Fix sense of assertion test for
444         creating pseudos when the base offset is too large.
445
446 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
447
448         * global.c (earlyclobber_regclass): Change the type to
449         VEC(int,heap).
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.
454
455 2005-04-28  Nathan Sidwell  <nathan@codesourcery.com>
456
457         * tree-ssa-alias.c (push_fields_onto_fieldstack): Remove bogus
458         assert.
459
460 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
461
462         * modulo-sched.c, tree-stdarg.c: Use targetm.foo instead of
463         (*targetm.foo).
464
465         * config.gcc: Obsolete c4x-* and tic4x-*.
466
467         * tree.h (edge_def): Remove.
468
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
473         where appropriate.
474
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
504         copyright.
505
506 2005-04-28  Joseph S. Myers  <joseph@codesourcery.com>
507
508         * c-typeck.c (build_compound_expr): Correct logic in last change.
509
510 2005-04-27  James E. Wilson  <wilson@specifixinc.com>
511
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.
522         Fix all callers.
523
524 2005-04-27  Mike Stump  <mrs@apple.com>
525
526         * doc/cpp.texi: gcc now implements universal character names.
527
528 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
529
530         PR c/21159
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.
533
534 2005-04-27  Caroline Tice  <ctice@apple.com>
535
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
550         cfun is defined.
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
554         hot/cold labels.
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.
602         
603 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
604
605         * tree-ssa-propagate.c (set_rhs): Revert last change.
606
607 2005-04-27  Steve Ellcey  <sje@cup.hp.com>
608
609         * explow.c (convert_memory_address): Add gcc_assert.
610
611 2005-04-27  Mark Mitchell  <mark@codesourcery.com>
612
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.
621
622 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
623
624         * fold-const.c (fold_binary): Use build_fold_addr_expr
625         for address calculation and INDIRECT_REF handling.
626
627 2005-04-27  Andrew Haley  <aph@redhat.com>
628
629         * postreload-gcse.c (hash_scan_set): Remove bogus assertion.
630
631 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
632
633         * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Reserve arm frame
634         pointer when thumb backtracing is on.
635
636         * config/fp-bit.c (abort): Revert change.
637
638 2005-04-27  Ian Lance Taylor  <ian@airs.com>
639
640         * c-semantics.c (add_stmt): Don't test STATEMENT_CODE_P.
641
642 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
643
644         * tree-ssa-dce.c: Fix a comment typo.
645
646 2005-04-27  David S. Miller  <davem@davemloft.net>
647
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.
656         
657 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
658
659         * config/fp-bit.c (abort): Add noreturn attribute.
660
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.
666
667 2005-04-27  Paolo Bonzini  <bonzini@gnu.org>
668
669         * tree-complex.c (expand_vector_operations_1): Do not build
670         VIEW_CONVERT_EXPR's for the lhs.
671
672 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
673
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.
678
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.
717
718 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
719
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
724         VEC(tree,gc).
725         (init_ssanames, fini_ssa_names, make_ssanames,
726         release_ssa_name): Update uses of ssa_names.
727
728         * dojump.c, emit-rtl.c, expmed.c, expr.c, stmt.c, stor-layout.c:
729         Use fold_buildN instead of fold (buildN (...)).
730
731 2005-04-27  Devang Patel <dpatel@apple.com>
732
733         * dbxout.c (dbxout_type): Check use_gnu_debug_info_extensions.
734
735 2005-04-27  Matt Thomas <matt@3am-software.com>
736             Jan-Benedict Glaw <jbglaw@microdata-pos.de>
737
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 \.
744
745 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
746
747         * tree-ssa-propagate.c (set_rhs): Check operand of
748         ADDR_EXPR for gimpliness, too.
749
750 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
751
752         * tree-ssa-pre.c: Fix a comment typo.
753
754 2005-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
755
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.
759
760 2004-04-27  Paolo Bonzini  <bonzini@gnu.org>
761
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.
768
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.
777
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.
788
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.
792
793         * doc/tm.texi (UNITS_PER_WORD): Rephrase more accurately.
794         (UNITS_PER_SIMD_WORD): New.
795
796 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
797
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.
818
819 2005-04-27  Matt Thomas <matt@3am-software.com>
820
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
851         added.
852         (legitimate_constant_p): Prototype added.
853         (legitimate_address_p): Prototype added.
854         (vax_mode_dependent_address_p): Prototype added.
855
856 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
857
858         * tree.h (phi_arg_d): Expand a comment in phi_arg_d.
859
860 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
861
862         PR c/21213
863         * c-decl.c (finish_struct): Don't dereference NULL TYPE_FIELDS of
864         transparent union.
865
866 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
867
868         PR c/20740
869         * c-format.c (init_dynamic_asm_fprintf_info): Give errors, not
870         assertion failures, if __gcc_host_wide_int__ is not properly
871         defined.
872         (init_dynamic_diag_info): Give errors, not assertion failures, if
873         location_t, tree or __gcc_host_wide_int__ are not properly
874         defined.
875
876 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
877
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
883         VARRAY.
884
885         * tree.h (tree_phi_node): Add a comment about the order of PHI
886         arguments.
887
888 2005-04-26  Paul Brook  <paul@codesourcery.com>
889
890         * config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.
891
892 2005-04-26  Nathan Sidwell  <nathan@codesourcery.com>
893
894         * config/mips.mips.c (mips_legitimize_tls_address): Use
895         gcc_unreachable.
896
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.
900
901         * config/sparc/sparc.h (enum reg_class): Reword comment to avoid
902         'abort'.
903
904 2005-04-26  Jeff Law  <law@redhat.com>
905
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.
915
916 2005-04-26  Andrew MacLeod  <amacleod@redhat.com>
917
918         * tree-cfg.c (bsi_replace): Delink immediate uses for the original
919         stmt.
920
921 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
922
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.
925
926 2004-04-26  Richard Guenther  <rguenth@gcc.gnu.org>
927
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.
932
933 2005-04-26  Julian Brown  <julian@codesourcery.com>
934
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.
948
949 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
950
951         * basic-block.h (ei_cond): New.
952         (FOR_EACH_EDGE): Call ei_cond.
953
954         PR tree-optimization/21047
955         * fold-const.c (fold_binary): Abort on ASSERT_EXPR.
956         (fold): Don't handle ASSERT_EXPR.
957
958 2005-04-25  Roger Sayle  <roger@eyesopen.com>
959
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
962         FIRST_STACK_REG.
963         (sched_analyze_2): Likewise, for reads from any stack register.
964
965 2005-04-25  Richard Henderson  <rth@redhat.com>
966
967         * final.c (output_addr_const): Revert 2005-04-09 change.
968
969 2005-04-25  Mike Stump  <mrs@apple.com>
970
971         * config/darwin.c (darwin_encode_section_info): Always set
972         MACHO_SYMBOL_STATIC for all ! TREE_PUBLIC symbols.
973
974 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
975
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'.
979
980 2005-04-25  Devang Patel <dpatel@apple.com>
981
982         * dbxout.c (dbxout_type): Emit attribute vector.
983         
984 2005-04-05  Paul Brook  <paul@codesourcery.com>
985
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.
993
994 2005-04-25  Ian Lance Taylor  <ian@airs.com>
995
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.
1005
1006 2005-04-25  Jan Hubicka  <jh@suse.cz>
1007
1008         * tree-cfg.c (tree_duplicate_bb): Duplicate EH region too.
1009
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.
1018
1019 2005-04-25  Nathan Sidwell  <nathan@codesourcery.com>
1020
1021         * tree-ssa-alias.c (fieldoff_t): Remove.
1022         (fieldoff_s): typedef the structure itself.  Create a vector of
1023         objects.
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.
1028
1029 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
1030
1031         * doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.
1032
1033 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
1034
1035         PR bootstrap/21215
1036         * doc/install.texi: Document correct assembler and linker to use
1037         on i?86-*-solaris2.10.
1038
1039 2005-04-25  Steven Bosscher  <stevenb@suse.de>
1040
1041         Fix PR tree-optimization/21173
1042
1043         * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
1044         Unshare expression we pass to force_gimple_operand.
1045
1046 2005-04-25  J"orn Rennecke <joern.rennecke@st.com>
1047             Stephen Clarke <stevec@superh.com>
1048             Roger Sayle <roger@eyesopen.com>
1049
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.
1058
1059 2005-04-25  Ralf Corsepius  <ralf.corsepius@rtems.org>
1060
1061         * config.gcc (avr-*-*): Remove redundant "case".
1062
1063 2005-04-25  Kazu Hirata  <kazu@cs.umass.edu>
1064
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.
1069
1070 2005-04-24  Devang Patel  <dpatel@apple.com>
1071
1072         *  config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
1073         
1074 2005-04-24  Ian Lance Taylor  <ian@airs.com>
1075
1076         * c-semantics.c (build_stmt): Remove test of specific tree codes
1077         for TREE_SIDE_EFFECTS handling.
1078
1079 2005-04-24  Per Bothner  <per@bothner.com>
1080
1081         * c-opts.c (finish_options):  Make the line-number of the <built-in>
1082         location 0, as assumed elsewhere, rather than 1.
1083
1084 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
1085
1086         * tree-ssa-uncprop.c (equiv_stack): Change the type o
1087         VEC(tree,heap).
1088         (tree_ssa_uncprop, uncprop_finalize_block,
1089         uncprop_initialize_block): Update uses of equiv_stack.
1090
1091 2005-04-24  Richard Henderson  <rth@redhat.com>
1092
1093         PR rtl-opt/21163
1094         * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
1095         for SCALAR_INT_MODE_P instead of not MODE_CC before returning
1096         constm1_rtx.
1097         <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
1098         <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
1099         <DIV, MOD>: Likewise.
1100
1101 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1102
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.
1111
1112 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
1113
1114         PR middle-end/20991
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
1118         anything.
1119
1120 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
1121
1122         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
1123         COMPARISON_CLASS_P.
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
1129         COMPARISON_CLASS_P.
1130         * tree-vrp.c (extract_range_from_assert,
1131         build_assert_expr_for, fp_predicate, has_assert_expr): Use
1132         COMPARISON_CLASS_P.
1133
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.
1137
1138 2005-04-24  Andrew Pinski  <pinskia@physics.uc.edu>
1139
1140         * tree.h (TREE_THIS_VOLATILE): Document the effect on a
1141         function decl.
1142
1143 2005-04-24  Nathan Sidwell  <nathan@codesourcery.com>
1144
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'
1178         from comment.
1179
1180 2005-04-24  Richard Henderson  <rth@redhat.com>
1181
1182         PR target/21101
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.
1187
1188 2005-04-24  Ralf Corsepius  <ralf.corsepius@rtems.org>
1189
1190         * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
1191         Switch h8300-*-rtems* to ELF.
1192
1193 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
1194
1195         * vec.h (VEC_safe_grow): Replace grow with safe_grow.
1196
1197 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1198
1199         * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
1200
1201 2005-04-23  Richard Guenther  <rguenth@gcc.gnu.org>
1202
1203         PR middle-end/21082
1204         * fold-const.c: Fold &a[i]-&a[j] to i-j.
1205
1206 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
1207
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.
1212
1213 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
1214
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.
1226
1227 2005-04-23  DJ Delorie  <dj@redhat.com>
1228
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.
1234
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.
1243
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()
1260         callers.
1261         
1262 2005-04-23  Richard Henderson  <rth@redhat.com>
1263
1264         PR rtl-opt/21102
1265         * simplify-rtx.c (simplify_binary_operation): Fix mode check before
1266         performing some integral scalar simplifications.
1267
1268 2005-04-23  Richard Henderson  <rth@redhat.com>
1269
1270         PR target/21099
1271         * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
1272         simplifying CONST_VECTOR.
1273
1274 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1275
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.
1279
1280         * tree-ssa-live.c (build_tree_conflict_graph): Allocate
1281         partition_link and tpa_nodes on heap.
1282
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
1286         worklist.
1287         (tree_dce_init): Allocate worklist using VEC_alloc.
1288         (tree_dce_done): Free worklist using VEC_free.
1289
1290 2005-04-23  Mike Stump  <mrs@apple.com>
1291
1292         * config/darwin.c (machopic_indirection_name): Don't use
1293         quotes needlessly.
1294         (darwin_emit_unwind_label): Use user_label_prefix instead of
1295         "_".
1296
1297 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1298
1299         * final.c, ipa-inline.c, varasm.c: Fix comment typos.
1300
1301 2005-04-23  Hans-Peter Nilsson  <hp@axis.com>
1302
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_*.
1337
1338 2005-04-23  Nathan Sidwell  <nathan@codesourcery.com>
1339
1340         * haifa-sched.c (schedule_block): Fix thinko in previous
1341         assertification patch.
1342
1343 2005-04-23  Richard Sandiford  <rsandifo@redhat.com>
1344
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
1352         for hpux11.[1-9]*.
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
1373         TARGET_HPUX_10_10.
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
1385         redefining.
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.
1391
1392 2005-04-22  David S. Miller  <davem@davemloft.net>
1393
1394         * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
1395         integer when it's mode is VOIDmode not DImode.
1396
1397 2005-04-22  Geoffrey Keating  <geoffk@apple.com>
1398
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.
1409
1410 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1411
1412         PR tree-optimization/21088
1413         * fold-const.c (fold_unary, fold_binary, fold_ternary):
1414         Export.
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,
1419         fold_ternary.
1420
1421         * tree-ssa-dom.c: Fix formatting.
1422
1423 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
1424
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
1441         all callers.
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
1457         mapping heuristic.
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
1462         users.
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.
1473         Update all users.
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
1490         SYMS_TO_RENAME.
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):
1502         Call update_ssa.
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
1508         returns false.
1509         Call verify_stmts.
1510         (delete_tree_ssa): Assert that need_ssa_update_p returns
1511         false.
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
1517         virtual definition.
1518         (slpeel_update_phis_for_duplicate_loop): Call
1519         get_current_def and set_current_def instead of using
1520         SSA_NAME_AUX.
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.
1526
1527 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
1528
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.
1544         Call update_ssa.
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
1548         create_new_def_for.
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
1552         non-virtual names.
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
1557         NULL.
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.
1562         Call update_ssa.
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.
1576
1577 2005-04-22  Jeff Law  <law@redhat.com>
1578
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
1587         BLOCK_DEFS_STACK.
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
1591         CURRENT_DEF.
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.
1596
1597 2005-04-22  David S. Miller  <davem@davemloft.net>
1598
1599         * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
1600         CONST_DOUBLE_HIGH.
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.
1604
1605 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1606
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
1637
1638 2005-04-22 David Edelsohn  <edelsohn@gnu.org>
1639
1640         PR target/20813
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
1645         TARGET_XL_COMPAT.
1646         * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
1647
1648 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1649
1650         * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
1651         (gcc_tree_to_linear_expression): Convert to heap allocated
1652         vectors.
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.
1660
1661 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1662
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.
1671
1672 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1673
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.
1686
1687 2005-04-22  Zdenek Dvorak  <dvorakz@suse.cz>
1688
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
1723         profiler.
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.
1729
1730 2005-04-22  Joseph S. Myers  <joseph@codesourcery.com>
1731
1732         * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
1733         (decl).
1734
1735 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1736
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.
1760
1761 2005-04-22  Jan Hubicka  <jh@suse.cz>
1762
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
1780         * ipa.c: New file.
1781         * ipa-inline.c: New file.
1782
1783 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1784
1785         * doc/invoke.texi (SPARC options): Document that -mapp-regs
1786         is turned off by default on Solaris.
1787
1788 2005-04-21  Roger Sayle  <roger@eyesopen.com>
1789
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.
1796
1797 2005-04-21  Geoffrey Keating  <geoffk@apple.com>
1798
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.
1822
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.
1826
1827 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1828
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.
1834         * tree.h: Likewise.
1835         * vec.h: Likewise.
1836         * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
1837         
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.
1861
1862         * tree-ssa-operands.c (verify_abort): Fold into ..
1863         (verify_imm_links): ... here.
1864
1865 2005-04-21  Richard Henderson  <rth@redhat.com>
1866
1867         * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
1868         on non-memory operand for previous inversion.
1869
1870 2005-04-21  Devang Patel  <dpatel@apple.com>
1871
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.
1876         
1877 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1878
1879         * optabs.c (gen_conditional_trap): Restore #define.
1880
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.
1918
1919 2005-04-21 Alan Modra  <amodra@bigpond.net.au>
1920            Fariborz Jahanian <fjahanian@apple.com>
1921
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.
1926
1927 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
1928
1929         * config/sparc/predicates.md, config/sparc/sparc.md: Fix
1930         comment typos.
1931
1932 2005-04-21  Jan Hubicka  <jh@suse.cz>
1933
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
1945         for IPA pass.
1946         * tree-pass.h (TODO_dump_cgraph): New macro.
1947         (ipa_passes): Declare.
1948         * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
1949
1950 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1951
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.
1982
1983 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1984
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.
1998
1999 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
2000
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.
2007         (VEC): Likewise.
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.
2015         
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
2080         VEC(alias_pair,gc).
2081         (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
2082         
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.
2087
2088 2005-04-21  Sebastian Pop  <pop@cri.ensmp.fr>
2089
2090         PR/20742
2091         * Makefile.in (tree-chrec.o): Depend on params.h.
2092         * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
2093         default value 20.
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
2099         given expression.
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.
2104
2105 2005-04-21  Richard Sandiford  <rsandifo@redhat.com>
2106
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.
2172
2173 2005-04-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
2174
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.
2237
2238 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
2239
2240         PR tree-optimization/14846
2241         * fold-const.c (fold_single_bit_test_into_sign_test): New,
2242         split out from ...
2243         (fold_single_bit_test): ... here.
2244         (fold_binary): Call fold_single_bit_test_into_sign_test
2245         instead of fold_single_bit_test.
2246
2247 2005-04-20  James E Wilson  <wilson@specifixinc.com>
2248
2249         PR c++/20805
2250         * dwarf2out.c (gen_variable_die): Don't emit a specification if this
2251         is another declaration.
2252
2253 2005-04-21  Hans-Peter Nilsson  <hp@axis.com>
2254
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.
2274
2275 2005-04-20  Ian Lance Taylor  <ian@airs.com>
2276
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.
2283
2284 2005-04-20  Richard Henderson  <rth@redhat.com>
2285
2286         PR target/21100
2287         * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
2288
2289 2005-04-20  Jeff Law  <law@redhat.com>
2290
2291         * reload1.c (reload): Ignore equivalences between pseudos and
2292         read only memory.
2293
2294 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
2295
2296         PR c/12913
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
2306         declarations.
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
2320         type.
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.
2327
2328 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
2329
2330         * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
2331         conditional_replacement, value_replacement, abs_replacement,
2332         minmax_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.
2337
2338         * tree-ssa-phiopt.c: Fix comments.
2339
2340 2005-04-20  Michael Matz  <matz@suse.de>
2341
2342         PR20973
2343         * reload.c (push_reload, find_dummy_reload): Check for uninitialized
2344         pseudos.
2345
2346 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
2347
2348         * tree-ssa-phiopt.c: Fix comment typos.
2349
2350         PR tree-optimization/21116
2351         * tree-ssa-phiopt.c: Fix a typo.
2352
2353 2005-04-19  Richard Henderson  <rth@redhat.com>
2354
2355         * builtins.c (expand_builtin_sync_operation): Revert last change.
2356         * optabs.c (expand_bool_compare_and_swap): Compare vs old value,
2357         not vs new 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
2363         compare-and-swap.
2364
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
2370         memory value.
2371         (sync_lock_test_and_set<I48MODE>): Remove extra label and last
2372         memory barrier.
2373
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.
2377
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.
2387
2388 2005-04-19  James A. Morrison  <phython@gcc.gnu.org>
2389
2390         * fold-const.c (fold_binary): Fold ~(X ^ Y) to ~X ^ Y or X ^ ~Y if
2391         ~X or ~Y simplify.
2392
2393 2005-04-19  James A. Morrison  <phython@gcc.gnu.org>
2394
2395         * fold-const (fold_binary):  Fold ~X ^ ~ Y to X ^ Y.
2396
2397 2005-04-20  Michael Pogue  <michael.pogue@sun.com>
2398             Joseph S. Myers  <joseph@codesourcery.com>
2399
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.
2403
2404 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
2405
2406         * tree-ssa-phiopt.c: Update a comment about the pass.
2407
2408 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
2409
2410         * tree-ssa-phiopt.c, config/arm/arm.c, config/fr30/fr30.md,
2411         config/mcore/mcore.c: Fix comment typos.
2412
2413 2005-04-19  Daniel Jacobowitz  <dan@codesourcery.com>
2414
2415         * Makefile.in (libgcc.mk): Pass GCC_FOR_TARGET.
2416         * mklibgcc.in: Use $GCC_FOR_TARGET instead of ./xgcc.
2417
2418 2005-04-19  Paul Brook  <paul@codesourcery.com>
2419
2420         * config/arm/arm.c (arm_init_libfuncs): Clear mod optabs. 
2421
2422 2005-04-19  Andrew Haley  <aph@redhat.com>
2423
2424         PR java/21022
2425         * dbxout.c (dbxout_type_fields): Check DECL_IGNORED_P before
2426         looking at a field's bitpos.
2427
2428 2005-04-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2429
2430         * system.h (fopen, fdopen, freopen): Define these to the unlocked
2431         libiberty functions.
2432
2433 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
2434
2435         PR tree-optimization/21096
2436         * tree-ssa-copy.c (fini_copy_prop): Free cached_last_copy_of.
2437
2438 2005-04-19  Alan Modra  <amodra@bigpond.net.au>
2439
2440         PR target/21098
2441         * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
2442         * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.
2443
2444 2005-04-19  Alexandre Oliva  <aoliva@redhat.com>
2445
2446         * tree-cfg.c (dump_function_to_file): Use cfun info only if it
2447         refers to the function being dumped.
2448
2449 2005-04-18  Daniel Jacobowitz  <dan@codesourcery.com>
2450
2451         * varasm.c (assemble_start_function): Remove reset of in_section.
2452
2453 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
2454
2455         PR tree-optimization/21085
2456         * fold-const (fold_binary): Don't change X % -C to X % C if C has
2457         overflowed.
2458
2459 2005-04-19  Ben Elliston  <bje@au.ibm.com>
2460
2461         * doc/invoke.texi (Optimize Options): Refer to the correct
2462         optimisation flag -ftree-dominator-opts, not -ftree-dom.
2463
2464 2005-04-18  Christopher Jaillet <christophe.jaillet@wanadoo.fr>
2465
2466         * config/rs6000/rs6000.c (machopic_output_stub):  Increase
2467         alloca argument to be big enough.
2468
2469 2005-04-18  Alexandre Oliva  <aoliva@redhat.com>
2470
2471         PR middle-end/21049
2472         * tree-cfg.c (dump_function_to_file): Do not crash if cfun or
2473         cfun->cfg are NULL.
2474
2475 2005-04-18  Tom Tromey  <tromey@redhat.com>
2476
2477         * cgraphunit.c (cgraph_finalize_compilation_unit): Fix a comment
2478         typo.
2479
2480 2005-04-18  Richard Henderson  <rth@redhat.com>
2481
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.
2494         (ev5_ld_l): New.
2495         * config/alpha/ev6.md (ev6_ild): Add ld_l.
2496         (ev6_ist): Add st_c.
2497         (ev6_mb): New.
2498         * config/alpha/sync.md: New file.
2499
2500 2005-04-18  Richard Henderson  <rth@redhat.com>
2501
2502         * builtins.c (expand_builtin_sync_operation): Fold nand to and
2503         for constants.
2504
2505         * optabs.c (expand_sync_operation): Fix typo expanding nand to and.
2506
2507 2005-04-18  Devang Patel  <dpatel@apple.com>
2508
2509         * config/rs6000/atlivec.md (mulv4si3): New pattern.
2510         
2511 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
2512
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.
2516
2517 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
2518
2519         * config/ia64/unwind-ia64.c (emergency_reg_state_free): Make an
2520         unsigned int.
2521         (emergency_labeled_state_free): Likewise.
2522
2523 2005-04-18  Nick Clifton  <nickc@redhat.com>
2524
2525         * config/h8300/h8300.md (jump): Remove prescan parameter from
2526         calls to final_scan_insn.
2527
2528         * config/arc/arc.c (arc_output_function_epilogue): Remove prescan
2529         parameter from calls to final_scan_insn.
2530
2531         * config.gcc (m68hc12): Use the m68hc11.opt file for target
2532         specific options.
2533         (v850e, v850e1): Use the v850.opt file for target specific
2534         options.
2535
2536 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
2537
2538         PR tree-optimization/21001
2539         * tree-optimize.c (init_tree_optimization_passes): Move the
2540         first pass_forwprop immediately before pass_vrp.
2541
2542 2005-04-17  Ian Lance Taylor  <ian@airs.com>
2543
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
2550         case.
2551         (pp_c_unary_expression): Remove SIZEOF_EXPR and ALIGNOF_EXPR
2552         cases.
2553         (pp_c_expression): Remove ARROW_EXPR, SIZEOF_EXPR, and
2554         ALIGNOF_EXPR cases.
2555
2556 2005-04-17  Ian Lance Taylor  <ian@airs.com>
2557
2558         * system.h: Poison DONT_ACCESS_GBLS_AFTER_EPILOGUE.
2559
2560 2005-04-17  Richard Henderson  <rth@redhat.com>
2561
2562         * config/alpha/alpha.c (va_list_skip_additions): Only define if
2563         TARGET_ABI_OSF.
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
2567         field.
2568         (alpha_setup_incoming_varargs) <TARGET_ABI_OSF>: Make use of the
2569         saved va_list_gpr_size and va_list_fpr_size.
2570
2571 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
2572
2573         * tree-vrp.c (compare_values): Check that VAL1 and VAL2 are
2574         both pointers or both integers.
2575
2576         * tree-vrp.c (maybe_add_assert_expr): Don't assert
2577         ASSERT_EXPRs for single-use variable.
2578
2579         * tree-into-ssa.c: Fix a comment typo.
2580
2581 2005-04-17  Richard Sandiford  <rsandifo@redhat.com>
2582
2583         * config/mips/iris6.h (DRIVER_SELF_SPECS): Check -march as well as
2584         -mipsN before forcing a default of -mips2.
2585
2586 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
2587
2588         * predict.h (IS_TAKEN): Remove.
2589         * rtl.h (NOTE_PREDICTION): Likewise.
2590
2591         * modulo-sched.c (CFG_HOOKS): Remove.
2592
2593         * c-parser.c (N_C_TTYPES): Remove.
2594
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.
2602
2603 2005-04-17  Richard Henderson  <rth@redhat.com>
2604
2605         PR target/20375
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
2609         6 named arguments.
2610
2611 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
2612
2613         PR middle-end/21024
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
2619         type mismatches.
2620
2621         * c-lex.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Remove.
2622
2623 2005-04-16  Richard Henderson  <rth@redhat.com>
2624
2625         PR target/21051
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.
2629
2630 2005-04-16  Alexandre Oliva  <aoliva@redhat.com>
2631
2632         PR target/20126
2633         * loop.c (loop_givs_rescan): Handle non-replaceable (plus (reg)
2634         (const)).
2635
2636         * tree-scalar-evolution.c (interpret_rhs_modify_expr): Fix typo in
2637         comment.
2638
2639 2005-04-16  Roger Sayle  <roger@eyesopen.com>
2640             Steven Bosscher  <stevenb@suse.de>
2641
2642         * fold-const.c (fold_binary_to_constant): Delete obsolete comment.
2643         (fold_unary_to_constant): Likewise.
2644
2645 2005-04-16  Kazu Hirata  <kazu@cs.umass.edu>
2646
2647         * basic-block.h: Adjust the value of PROP_SCAN_DEAD_STORES,
2648         PROP_ASM_SCAN.
2649
2650 2005-04-16  Gerald Pfeifer  <gerald@pfeifer.com>
2651
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.
2656
2657 2005-04-16  Joseph S. Myers  <joseph@codesourcery.com>
2658
2659         PR middle-end/20491
2660         * config/ia64/ia64.c (rtx_needs_barrier): Recurse instead of
2661         falling through from SUBREG case to REG.
2662
2663 2005-04-15  Roger Sayle  <roger@eyesopen.com>
2664
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.
2669
2670 2005-04-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2671
2672         * gthr-posix.c (pthread_cancel): Define.
2673         (pthread_mutexattr_init): Likewise.
2674         (pthread_mutexattr_settype): Likewise.
2675         (pthread_mutexattr_destroy): Likewise.
2676
2677 2005-04-15  David S. Miller  <davem@davemloft.net>
2678
2679         PR target/20673
2680         * config/sparc/sparc.h (sparc_hard_reg_printed): Mark as GTY(()).
2681
2682 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
2683
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.
2688
2689 2005-04-15  Dave Korn  <dave.korn@artimi.com>
2690
2691         * gcc.c (default_compilers): Clarify obscure error message when
2692         reading from standard input.
2693
2694 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
2695
2696         * basic-block.h (PROP_EQUAL_NOTES): Remove.
2697         * flow.c (propagate_one_insn): Don't use PROP_EQUAL_NOTES.
2698
2699         * tree-ssa-alias.c (init_alias_info): Remove a call to
2700         get_stmt_operands.
2701
2702 2005-04-15  Andrew MacLeod  <amacleod@redhat.com>
2703
2704         * tree-vect-analyze.c (vect_stmt_relevant_p): Process immediate uses
2705         of non-virtual PHI nodes like we use to.
2706
2707 2005-05-15  Paolo Bonzini  <bonzini@gnu.org>
2708
2709         * genattrtab.c (ATTR_EQ_ATTR_P): Remove.
2710         (attr_copy_rtx): Do not use it.
2711
2712 2005-04-15  Andrew Macleod  <amacleod@redhat.com>
2713
2714         * doc/tree-ssa.texi: Grammer/abbreviation updates.
2715
2716 2005-04-15  Diego Novillo  <dnovillo@redhat.com>
2717
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.
2721
2722 2005-04-14  Daniel Berlin <dberlin@dberlin.org>
2723
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.
2728
2729 2005-04-15  David Edelsohn  <edelsohn@gnu.org>
2730
2731         * doc/install.texi (*-ibm-aix*): Add comment about system limits.
2732
2733 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
2734
2735         PR tree-optimization/20936.
2736         * tree-ssa-ccp.c (visit_assignment): Fix a typo.
2737
2738 2005-04-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2739
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.
2745
2746 2005-04-15  Uros Bizjak  <uros@kss-loka.si>
2747
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.
2753
2754 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
2755
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.
2765
2766 2005-04-15  Alexandre Oliva  <aoliva@redhat.com>
2767
2768         PR middle-end/20739
2769         * gimplify.c (gimplify_addr_expr): Compensate for removal of
2770         e.g. cv-qualification conversions.
2771
2772 2005-04-14  Mike Stump  <mrs@apple.com>
2773
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.
2777
2778 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
2779
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.
2783
2784 2004-04-14  Richard Henderson  <rth@redhat.com>
2785
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.
2803
2804         * config/ia64/ia64intrin.h: Define nothing for C; limit #defines
2805         to c++.  Remove __sync* declarations.  s/_si/_4/.  s/_di/_8/.
2806
2807 2004-04-14  Richard Henderson  <rth@redhat.com>
2808
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.
2821
2822 2004-04-14  Richard Henderson  <rth@redhat.com>
2823
2824         PR middle-end/14311
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.
2907
2908 2005-04-14  Alexandre Oliva  <aoliva@redhat.com>
2909
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.
2914
2915 2005-04-14  Richard Henderson  <rth@redhat.com>
2916
2917         * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ...
2918         (ix86_expand_sse_movcc): ... here.  Take cmp as a pre-computed
2919         register.
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.
2925
2926 2005-04-14  Joseph S. Myers  <joseph@codesourcery.com>
2927
2928         * doc/cpp.texi, doc/install.texi: Change references to GCC 3.5 to
2929         refer to 4.0.
2930
2931 2005-04-14  Julian Brown  <julian@codesourcery.com>
2932
2933         * Revert elfos.h part of my patch from 2005-04-13 for causing libstdc++
2934         link failures on ppc64 Linux.
2935
2936 2005-04-14  Andreas Krebbel  <krebbel1@de.ibm.com>
2937
2938         * config.gcc: Set cpu_type for s390.
2939
2940 2005-04-14  Daniel Berlin  <dberlin@dberlin.org>
2941
2942         Fix PR tree-optimization/20963
2943         * tree-ssa-pre.c (compute_avail): Remove special case for
2944         TREE_INVARIANT.
2945         (create_expression_by_pieces): Add value numbers for forced out
2946         statements.
2947
2948 2005-04-14  Hans-Peter Nilsson  <hp@axis.com>
2949
2950         * config/cris/cris.md: Replace references to (reg:SI 16) with
2951         (reg:SI CRIS_SRP_REGNUM).
2952
2953 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
2954
2955         PR tree-optimization/20657
2956         * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to
2957         create an appropriate range from it.
2958
2959 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
2960
2961         * reg-stack.c (subst_stack_regs_pat): Handle <UNSPEC_FIST_FLOOR> and
2962         <UNSPEC_FIST_CEIL> case.
2963
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.
2975
2976 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
2977
2978         * convert.c (convert_to_integer): Convert (long int)trunc{,f,l},
2979         and (long long int)ceil{,f,l} into FIX_TRUNC_EXPR.
2980
2981 2005-04-14  Ulrich Weigand  <uweigand@de.ibm.com>
2982
2983         PR target/20927
2984         * config/s390/s390-modes.def: Define TFmode.
2985
2986 2005-04-13  Richard Sandiford  <rsandifo@redhat.com>
2987
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.
2992
2993 2005-04-13 Fariborz Jahanian <fjahanian@apple.com>
2994
2995         * simplify-rtx.c (simplify_binary_operation_1): Return
2996         scalar or vector of constant 0, depending on the xor's
2997         mode.
2998
2999 2005-04-13  Dale Johannesen  <dalej@apple.com>
3000
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.
3008
3009 2005-04-13  Devang Patel  <dpatel@apple.com>
3010
3011         * tree-if-conv.c (tree_if_convert_cond_expr): Do not create extra
3012         temp variables.
3013
3014 2005-04-13  Hans-Peter Nilsson  <hp@axis.com>
3015
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
3020         stdarg_regs.
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
3029         post-increment.
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
3036         be saved.
3037         * config/cris/cris.h (EXTRA_CONSTRAINT_S): Accept
3038         CRIS_UNSPEC_GOT.
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.
3046
3047         * config/cris/cris.md ("epilogue"): Conditionalize on
3048         TARGET_PROLOGUE_EPILOGUE.
3049
3050 2005-04-13  Steve Ellcey  <sje@cup.hp.com>
3051
3052         PR target/20924
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.
3060
3061 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
3062
3063         PR tree-optimization/20913
3064         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.
3065
3066         PR tree-optimization/20702
3067         * tree-vrp.c (maybe_add_assert_expr): Recurse into
3068         dominator children that haven't been walked into.
3069
3070 2005-04-13  Julian Brown  <julian@codesourcery.com>
3071
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
3074         is true.
3075
3076 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
3077
3078         * basic-block.h, tree-ssa-uncprop.c, varasm.c,
3079         config/i386/sse.md: Fix comment typos.
3080
3081         * genattrtab.c (NULL_ATTR): Remove.
3082         * ifcvt.c (NULL_EDGE): Likewise.
3083
3084         * rtl.h (RTX_EXPR_FIRST, RTX_EXPR_LAST): Remove.
3085
3086         * rtl.h (NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS,
3087         NOTE_PREDICT): Remove.
3088
3089 2005-04-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
3090
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.
3095
3096 2005-04-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
3097
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.
3131
3132 2005-04-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3133
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).
3138
3139 2005-04-13  Matt Thomas  <matt@3am-software.com>
3140
3141         * config/rs6000/sysv4.h (NO_IMPLICIT_EXTERN_C): undefine before
3142         defining.
3143
3144 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
3145
3146         * rtl.h (CLEAR_RTX_FLAGS): Remove.
3147
3148         * cgraphunit.c (INSNS_PER_CALL): Remove.
3149
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):
3154         New.
3155         (tree_ssa_forward_propagate_single_use_vars): Call
3156         forward_propagate_into_cond for each COND_EXPR.
3157
3158         * tree-inline.c (INSNS_PER_STMT): Remove.
3159
3160 2005-04-12  Richard Henderson  <rth@redhat.com>
3161
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.
3174
3175 2005-04-12  Jeff Law  <law@redhat.com>
3176
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.
3187
3188 2005-04-12  James E. Wilson  <wilson@specifixinc.com>
3189
3190         PR target/20670
3191         * unwind-ia64.c (uw_intall_context): Add missing load of r27.
3192
3193 2005-04-12  Caroline Tice  <ctice@apple.com>
3194
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.
3202
3203 2005-04-12  Steven Bosscher  <stevenb@suse.de>
3204             Stuart Hastings <stuart@apple.com>
3205             Jan Hubicka  <jh@suse.cz>
3206
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
3223         argument.
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
3230         here...
3231         (cfg_layout_finalize) ... and don't free it here.
3232         * cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets
3233         garbage collected.
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.
3242
3243 2005-04-12  Caroline Tice  <ctice@apple.com>
3244
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.
3281
3282 2005-04-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
3283
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.
3286
3287         * config/sparc/sparc.c (legitimate_address_p): Use TARGET_ARCH32.
3288
3289 2005-04-12  Ulrich Weigand  <uweigand@de.ibm.com>
3290
3291         PR middle-end/20917
3292         * config/s390/s390.md ("*set_tp"): Use SET in pattern.
3293         ("set_tp_64", "set_tp_31"): Adapt expanded pattern.
3294
3295 2004-04-12  Richard Henderson  <rth@redhat.com>
3296
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.
3301
3302 2005-04-12  Frank Ch. Eigler  <fche@redhat.com>
3303
3304         PR mudflap/19266
3305         From Richard Henderson <rth@redhat.com>:
3306         * tree-mudflap.c (mf_build_check_statement_for): Correct block
3307         splitting logic.
3308
3309 2005-04-12  Dorit Naishlos  <dorit@il.ibm.com>
3310
3311         * tree-cfg.c (tree_verify_flow_info): Use LABEL_EXPR_LABEL.
3312
3313 2005-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
3314
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.
3325
3326 2005-04-12  Kazu Hirata  <kazu@cs.umass.edu>
3327
3328         * tree-vect-transform.c: Fix comment typos.
3329
3330 2005-04-12 Mostafa Hagog <mustafa@il.ibm.com>
3331
3332         * postreload-gcse.c (eliminate_partially_redundant_load): Don't
3333         split critical edges when not possible/profitable.
3334
3335 2005-04-12  Richard Sandiford  <rsandifo@redhat.com>
3336
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
3345         MASK_NO_BITFIELD.
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.
3349
3350 2005-04-12  Richard Sandiford  <rsandifo@redhat.com>
3351
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.
3375
3376 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
3377
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):
3395         Define.
3396
3397 2005-04-11  Devang Patel  <dpatel@apple.com>
3398
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
3408         rename ...
3409         * tree-vectorizer.c (vect_loops_num): ... new name.
3410         * tree-vectorizer.h  (vect_loops_num): New.
3411
3412 2005-04-11  Devang Patel  <dpatel@apple.com>
3413
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.
3422
3423 2005-04-11  Geoffrey Keating  <geoffk@apple.com>
3424
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.
3428
3429         * config/i386/darwin.h (ASM_SPEC): Use -arch i386 not -arch i686.
3430         (SUBTARGET_EXTRA_SPECS): Always 'i386'.
3431
3432         * dwarf2out.c (output_line_info): Don't try to dereference
3433         a NULL current_function_decl.
3434
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
3438         OS uses for it.
3439
3440 2005-04-11  Diego Novillo  <dnovillo@redhat.com>
3441
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
3445         variables ...
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.
3451
3452 2005-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3453
3454         PR/17092
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
3459         _unlocked function.
3460         (fwrite_unlocked): Fix prototype.
3461
3462         * configure, config.in: Regenerate.
3463
3464 2005-04-11  David Edelsohn  <edelsohn@gnu.org>
3465
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.
3471
3472 2005-04-11  Daniel Berlin  <dberlin@dberlin.org>
3473
3474         Fix PR tree-optimization/20926
3475
3476         * tree-ssa-alias.c (add_type_alias): Handle subvars.
3477
3478 2005-04-11  Devang Patel  <dpatel@apple.com>
3479
3480         * config/rs6000.c (rs6000_emit_vector_select): Fix vector select
3481         operand ordering.
3482
3483 2005-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
3484
3485         * fold-const.c (fold_binary_op_with_conditional_arg):
3486         use fold_buildN instead of "fold (buildN" in some
3487         non obvious places.
3488         (fold_unary): Likewise.
3489         (fold_binary): Likewise.
3490
3491 2005-04-11  Daniel Berlin  <dberlin@dberlin.org>
3492
3493         Fix PR tree-optimization/20612
3494         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix increment
3495         handling
3496         (perfect_nestify): preheaderbb is *not* part of loop of the
3497         old destination.
3498
3499 2005-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
3500
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.
3505
3506 2005-04-11  James A. Morrison  <phython@gcc.gnu.org>
3507
3508         * config/sparc/sparc.c: Use gcc_assert and gcc_unreachable.
3509         * config/sparc/sparc.h: Likewise.
3510         * config/sparc/sparc.md: Likewise.
3511
3512 2005-04-11  Kazu Hirata  <kazu@cs.umass.edu>
3513
3514         * tree-vrp.c (maybe_add_assert_expr): Move a comment.
3515
3516         * tree-vrp.c: Fix a comment typo.
3517
3518 2005-04-11  Diego Novillo  <dnovillo@redhat.com>
3519
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.
3526
3527 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
3528
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.
3549
3550 2005-04-11  Paolo Bonzini  <bonzini@gnu.org>
3551
3552         * tree-complex.c (expand_vector_operations): Call
3553         update_stmt_if_modified.
3554
3555 2005-04-11  Paolo Bonzini  <bonzini@gnu.org>
3556
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.
3561
3562 2005-04-11  Uros Bizjak  <uros@kss-loka.si>
3563
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
3584         BUILT_IN_LLCEIL.
3585
3586 2005-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3587
3588         * pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from
3589         zero.
3590
3591 2005-04-10  Kazu Hirata  <kazu@cs.umass.edu>
3592
3593         * config/arm/arm.c: Fix a comment typo.
3594         * doc/tree-ssa.texi: Fix a typo.
3595
3596 2005-04-10  Steven Bosscher  <stevenb@suse.de>
3597
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):
3612         Likewise.
3613         (bypass_jumps): Update alloc_gcse_mem, compute_sets, and
3614         one_cprop_pass calls.
3615
3616 2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
3617
3618         * combine.c (combine_simplify_rtx): Remove a transformation that
3619         relies on an invalid assumption about rtl sign-extension semantics.
3620
3621 2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
3622
3623         * value-prof.c (tree_divmod_fixed_value_transform): Fix arguments
3624         to build_int_cst_wide.
3625
3626 2005-04-09  Alexandre Oliva  <aoliva@redhat.com>
3627
3628         PR target/20126
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.
3635
3636 2005-04-09  Caroline Tice  <ctice@apple.com>
3637
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
3655         hot/cold labels.
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.
3704
3705 2005-04-09  Jakub Jelinek  <jakub@redhat.com>
3706
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.
3722
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.
3729
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.
3736
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.
3741
3742 2005-04-09  Jakub Jelinek  <jakub@redhat.com>
3743
3744         PR target/20795
3745         * config/i386/i386.c (construct_container): Pass empty aligned
3746         struct, union or class in memory.
3747
3748 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
3749
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.
3754
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.
3759
3760 2005-04-09  Jan Hubicka  <jh@suse.cz>
3761             Steven Bosscher  <stevenb@suse.de>
3762
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.
3766         (unloop): Likewise.
3767         * loop-unroll.c (analyze_insns_in_loop): Likewise.
3768         * tree-cfg.c (dump_cfg_status): Likewise.
3769
3770 2005-04-09  David Edelsohn  <edelsohn@gnu.org>
3771
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.
3777
3778 2005-04-09  Jan Hubicka  <jh@suse.cz>
3779
3780         Forgotten hunk from my last merge patch:
3781         * final.c (output_addr_const): Do not call mark_referenced.
3782
3783 2005-04-09  Andrew MacLeod  <amacleod@redhat.com>
3784
3785         * doc/tree-ssa.texi: Add immediate use documentation.
3786
3787 2005-04-09  Richard Earnshaw <richard.earnshaw@arm.com>
3788
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.
3802
3803 2005-04-09  Uros Bizjak  <uros@kss-loka.si>
3804
3805         * config/i386/i386.md (*fp_jcc_7_387): Use 'const0_operand' instead
3806         of 'const_double_operand' in operand 2 constraints.  Update enable
3807         condition.
3808
3809 2005-04-09  Uros Bizjak  <uros@kss-loka.si>
3810
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
3834         BUILT_IN_LLFLOOR.
3835
3836 2005-04-08  Ian Lance Taylor  <ian@airs.com>
3837
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.
3869
3870 2005-04-08  Devang Patel  <dpatel@apple.com>
3871
3872         * tree-if-conv.c (find_phi_replacement_condition): New parameter, loop.
3873         While selecting replacement condition pay attention to loop header.
3874
3875 2005-04-08  Diego Novillo  <dnovillo@redhat.com>
3876
3877         Merge from tree-cleanup-branch: VRP, store CCP, store
3878             copy-prop, incremental SSA updating of FUD chains and
3879             newly exposed symbols.
3880
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
3908         users.
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
3931         ASSERT_EXPR.
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
3940         interesting_blocks.
3941         (enum rewrite_mode): Declare.
3942         (REGISTER_DEFS_IN_THIS_STMT): Define.
3943         (compute_global_livein): Use last_basic_block instead of
3944         n_basic_blocks.
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.
3949         (is_old_name): New.
3950         (is_new_name): New.
3951         (repl_map_hash): New.
3952         (repl_map_eq): New.
3953         (repl_map_free): New.
3954         (names_replaced_by): New.
3955         (add_to_repl_tbl): New.
3956         (add_new_