OSDN Git Service

gcc/ChangeLog:
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-05-03  Alexandre Oliva  <aoliva@redhat.com>
2
3         PR target/16888
4         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Clear reg names
5         for unavailable registers.
6
7 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
8
9         * tree-cfg.c (tree_forwarder_block_p): Fix a typo.
10
11         * cfglayout.c (block_locators_blocks,
12         insn_locators_initialize, insn_scope): Use VEC instead of
13         VARRAY.
14
15         * tree-mudflap.c (deferred_static_decls, mudflap_enqueue_decl,
16         mudflap_finish_file, mudflap_finish_file): Use VEC instead of
17         VARRAY.
18
19 2005-05-03  Eric Botcazou  <ebotcazou@libertysurf.fr>
20
21         * config/sparc/predicates.md (const_compl_high_operand): New.
22         * config/sparc/sparc.c (sparc_emit_set_safe_HIGH64): Rename into
23         gen_safe_HIGH64.
24         (sparc_emit_set_const64_quick1): Adjust for above change.
25         (sparc_emit_set_const64_quick2): Likewise.
26         (sparc_emit_set_const64_longway): Likewise.
27         (sparc_emit_set_const64): Likewise.
28         * config/sparc/sparc.md (movhi_const64_special, movsi_const64_special,
29         movdi_const64_special): Delete.
30         (logical constant splitters): Use const_compl_high_operand.
31
32 2005-05-03  Richard Guenther  <rguenth@gcc.gnu.org>
33
34         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Use STRIP_TYPE_NOPS
35         rather than STRIP_NOPS.
36
37 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
38
39         PR rtl-optimization/21330
40         * loop-unswitch.c (may_unswitch_on): Set *cinsn only when
41         returning non-NULL.
42         (unswitch_single_loop): Clear cinsn when retrying.
43
44         PR target/21297
45         * config/i386/i386.c (legitimize_address): When canonicalizing
46         ASHIFT into MULT, multiply by 1 << shift_count instead of
47         1 << log2 (shift_count).
48
49 2005-05-03  Andrew MacLeod  <amacleod@redhat.com>
50
51         * lambda-code.c (gcc_loop_to_lambda_loop, 
52         lambda_loopnest_to_gcc_loopnest, phi_loop_edge_uses_def,
53         stmt_is_bumper_for_loop, perfect_nest_p, replace_uses_of_x_with_y): Use
54         generic operand interface.
55         * tree-data-ref.c (find_data_references_in_loop): Use generic interface.
56         * tree-dfa.c (collect_dfa_stats_r, mark_new_vars_to_rename): Use
57         generic operand interface.
58         * tree-flow-inline.h (delink_imm_use, link_imm_use_to_list, 
59         link_imm_use, link_imm_use_stmt, relink_imm_use, relink_imm_use_stmt,
60         next_safe_imm_use, has_zero_uses, has_single_use, single_imm_use,
61         num_imm_uses): Use ssa_use_operand_t.
62         (get_def_ops, get_use_ops, get_v_may_def_ops, get_vuse_ops,
63         get_v_must_def_ops): Delete.
64         (get_def_from_ptr, get_phi_result_ptr): Get def directly now.
65         (get_use_op_ptr, get_def_op_ptr, get_v_may_def_result_ptr,
66         get_v_may_def_op_ptr, get_vuse_op_ptr, get_v_must_def_result_ptr,
67         get_v_must_def_kill_ptr): Delete.
68         (delink_stmt_imm_use): Move and use new operand interface.
69         (op_iter_next_use, op_iter_next_def, op_iter_next_tree, op_iter_init,
70         op_iter_next_tree): Use new operand implementation.
71         (clear_and_done_ssa_iter): New.  Initialize a blank operand iterator.
72         (op_iter_init_use, op_iter_init_def, op_iter_init_tree): Add iterator 
73         type check.
74         (op_iter_next_mustdef, op_iter_next_maydef, 
75         op_iter_next_must_and_may_def): Delete. Replace with...
76         (op_iter_next_maymustdef): New.  Combine must and may next operations.
77         (op_iter_init_maydef, op_iter_init_mustdef, 
78         op_iter_init_must_and_may_def): Use new interface.
79         (single_ssa_tree_operand ): New.  Process single operands only as trees.
80         (single_ssa_use_operand): New.  Process single operands only as uses.
81         (single_ssa_def_operand): New.  Process single operands only as defs.
82         (zero_ssa_operands): New.  Return TRUE if there are zero operands of the
83         specified types.
84         (num_ssa_operands): New.  Count the number of specified operands.
85         (compare_ssa_operands_equal): New.  Compare two statements' operands.
86         (single_phi_def): New.  Return true if PHI has one def of the specified
87         operand type.
88         (op_iter_init_phiuse): New.  Initialize the iterator for PHI arguments.
89         (op_iter_init_phidef): New.  Initialize the iterator for the PHI def.
90         * tree-flow.h (struct immediate_use_iterator_d): Use ssa_use_operand_t.
91         (struct stmt_ann_d): Operands field no longer require GTY().
92         (vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Change prototype.
93         * tree-into-ssa.c (mark_def_sites): Use SSA_OP_VMUSTKILL.
94         * tree-outof-ssa.c (check_replaceable, find_replaceable_in_bb, 
95         dump_replaceable_exprs, rewrite_trees): Use generic interface.
96         * tree-phinodes.c (make_phi_node, release_phi_node, resize_phi_node): 
97         Use use_operand_p instead of ssa_imm_use_t *.
98         * tree-pretty-print.c (dump_vops): check if operands are active before
99         dumping virtual operands.
100         * tree-sra.c (sra_walk_function): Use ZERO_SSA_OPERANDS.
101         * tree-ssa-ccp.c (likely_value): Use ZERO_SSA_OPERANDS.
102         (ccp_fold): Use new interface.
103         (ccp_visit_stmt): Remove unused variables and code.
104         (convert_to_gimple_builtin): Insert statements before calling 
105         mark_new_vars_to_rename.
106         * tree-ssa-copy.c (stmt_may_generate_copy): Use ZERO_SSA_OPERANDS.
107         (copy_prop_visit_cond_stmt): Use generic interface.
108         * tree-ssa-dom.c (struct expr_hash_elt): Use stmt pointer, not the 
109         annotation in table.
110         (thread_across_edge): Use generic interface.
111         (initialize_hash_element): Initialzie with stmt, not annotation.
112         (eliminate_redundant_computations): Use generic interface.
113         (record_equivalences_from_stmt): Pass stmt, not annotation.
114         (avail_expr_hash, real_avail_expr_hash, avail_expr_eq): Use generic
115         interface.
116         * tree-ssa-dse.c (dse_optimize_stmt): Use ZERO_SSA_OPERANDS.
117         * tree-ssa-loop-ivopts.c (find_invariants_stmt, 
118         find_interesting_uses_stmt, protect_loop_closed_ssa_form_use): Use 
119         generic operand interface.
120         * tree-ssa-loop-niter.c (chain_of_csts_start, get_val_for): Use generic
121         interface.
122         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Use Generic operand
123         Interface.
124         * tree-ssa-operands.c (struct opbuild_list_d): New.  Operand build type.
125         (build_defs, build_uses, build_v_may_defs, build_vuses, 
126         build_v_must_defs): Change type to struct opbuild_list_d.
127         (ops_active): New.  Operands active boolean.
128         (operand_memory, operand_memory_index): New.  Operand memory managers.
129         (allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
130         allocate_vuse_optype, allocate_v_must_def_optype): Delete.
131         (free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs): 
132         Change from functions to static variable list heads.
133         (opbuild_initialize_virtual): New.  Initialize a virtual build list.
134         (opbuild_initialize_real): New.  Initialize a virtual build list.
135         (opbuild_free): New.  Free a build list.
136         (opbuild_num_elems): New.  Number of items in a list.
137         (opbuild_append_real): New.  Add a real (tree *) operand.
138         (opbuild_append_virtual): New.  Add and sort a virtual (tree) operand.
139         (opbuild_first): New.  Return first element index in a list.
140         (opbuild_next): New.  Return next element in a list.
141         (opbuild_elem_real): New.  Return real element.
142         (opbuild_elem_virtual): New.  Return virtual element.
143         (opbuild_elem_uid): New.  Return UID of virtual element.
144         (opbuild_clear): New.  Reset an operand list.
145         (opbuild_remove_elem): New.  Remove an element form a list.
146         (ssa_operands_active): New.  Return true if operand cache is active.
147         (init_ssa_operands, fini_ssa_operands): Initialize new implementation.
148         (ssa_operand_alloc): New.  Allocate memory from an operand chunk.
149         (correct_use_link): Use use_operand_p.
150         (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_defs,
151         finalize_ssa_vuses, finalize_ssa_v_must_defs): New implmentation. 
152         (cleanup_v_may_defs): Use new implmentation.
153         (finalize_ssa_stmt_operands, start_ssa_stmt_operands): New 
154         implementation.
155         (append_def, append_use, append_v_may_def, append_vuse, 
156         append_v_must_def): Call opbuild_append routine instead of using varray.
157         (build_ssa_operands): Simplify to simply use stmt, don't maintain a 
158         global parse_old_ops variable.
159         (free_ssa_operands): New implementation.
160         (update_stmt_operands): Move.  Change argument to build_ssa_operands.
161         (copy_virtual_operands): Move. New generic implementation.
162         (create_ssa_artficial_load_stmt): Move. New implementation.
163         (swap_tree_operands): Update for new implementation.
164         (get_expr_operands): Add stmt parameter to calls to swap_tree_operands.
165         (add_call_clobber_ops, add_call_read_ops): Initialize opbuild list
166         rather than a varray.
167         (verify_imm_links): Use use_operand_p.
168         (dump_immediate_uses_for): If the immediate use variable is a virtual 
169         variable, show the virtual ops in the stmt.
170         * tree-ssa-operands.h (def_operand_p): No longer a structure.
171         (NULL_DEF_OPERAND_P): Now a #define.
172         (def_optype_d, use_optype_d, v_def_use_operand_type, v_may_def_optype_d,
173         vuse_operand_type, vuse_optype_d, v_must_def_optype_d): Delete.
174         (def_optype_d, use_optype_d, maydef_optype_d, vuse_optype_d,
175         mustdef_optype_d): New.  Use Linked list representation.
176         (SSA_OPERAND_MEMORY_SIZE): New.  Size of operand memory chunk.
177         (struct ssa_operand_memory_d): New.  Allocated Chunk node.
178         (struct stmt_operands_d): Change to new pointers that are not GTY.
179         (STMT_USE_OPS, NUM_USES, SET_USE_OP, STMT_DEF_OPS, NUM_DEFS, SET_DEF_OP,
180         STMT_V_MAY_DEF_OPS, NUM_V_MAY_DEFS, SET_V_MAY_DEF_RESULT,
181         SET_V_MAY_DEF_OP, STMT_VUSE_OPS, NUM_VUSES, SET_VUSE_OP,
182         STMT_V_MUST_DEF_OPS, NUM_V_MUST_DEFS, SET_V_MUST_DEF_RESULT, 
183         SET_V_MUST_DEF_KILL): Delete.
184         (V_MAY_DEF_OPS, V_MAY_DEF_RESULT_PTR, V_MAY_DEF_RESULT, 
185         V_MAY_DEF_OP_PTR, V_MAY_DEF_OP): Rename to MAYDEF_*.
186         (V_MUST_DEF_OPS, V_MUST_DEF_RESULT_PTR, V_MUST_DEF_RESULT, 
187         V_MUST_DEF_KILL_PTR, V_MUST_DEF_KILL): Rename to MUSTDEF_*.
188         (enum ssa_op_iter_type): Operand iterator typechecking values.
189         (struct ssa_operand_iterator_d): Use linked lists of operands.
190         (SSA_OP_VMUSTDEFKILL): Rename to SSA_OP_VMUSTKILL.
191         (FOR_EACH_SSA_MAYDEF_OPERAND, FOR_EACH_SSA_MUSTDEF_OPERAND,
192         FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): Use op_iter_next_maymustdef.
193         (FOR_EACH_PHI_ARG): New.  Iterate over PHI arguments.
194         (FOR_EACH_PHI_OR_STMT_USE): New.  Iterate over PHI or stmt uses.
195         (FOR_EACH_PHI_OR_STMT_DEF): New.  Iterate over PHI or stmt defs.
196         (SINGLE_SSA_TREE_OPERAND, SINGLE_SSA_USE_OPERAND, 
197         SINGLE_SSA_DEF_OPERAND, ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): New.
198         * tree-ssa-opfinalize.h: New.  Function templates for expansion.
199         (FINALIZE_ALLOC): Expands into alloc_def, alloc_use, alloc_maydef,
200         alloc_vuse, and alloc_mustdef.
201         (FINALIZE_FUNC): Expands into finalize_ssa_def_ops, 
202         finalize_ssa_use_ops, finalize_ssa_v_may_def_ops, finalize_ssa_vuse_ops,
203         and finalize_ssa_v_must_def_ops.
204         * tree-ssa-pre.c (add_to_sets): Pass tree to vn_add.
205         (create_value_expr_from): Use stmt not vuse_optype as a parameter. Pass
206         stmt around.
207         (compute_avail): Use generic iterator interface.
208         * tree-ssa-propagate.c (first_vdef): Use generic operand interface.
209         (stmt_makes_single_load, stmt_makes_single_store): Use 
210         ZERO_SSA_OPERANDS.
211         * tree-ssa-sink.c (is_hidden_global_store): Use ZERO_SSA_OPERANDS.
212         (statement_sink_location): Use generic interface.
213         * tree-ssa.c (verify_ssa):  Use %p in fprintf.  Use generic interface.
214         (delete_tree_ssa): Don't call release_defs.  Call release_ssa_name and
215         reset the immediate use link nodes.
216         (stmt_references_memory_p): Use ZERO_SSA_OPERANDS.
217         * tree-ssanames.c (make_ssa_name): Use use_operand_p.
218         * tree-tailcall.c (find_tail_calls): Use ZERO_SSA_OPERANDS.
219         (eliminate_tail_call): Use generic operand interface.
220         * tree-vect-analyze.c (vect_analyze_data_refs): Use ZERO_SSA_OPERANDS.
221         (vect_mark_relevant, vect_mark_stmts_to_be_vectorized): Use generic 
222         interface.
223         * tree-vect-transform.c (update_vuses_to_preheader): Use generic 
224         interface.
225         * tree-vectorizer.c (rename_variables_in_bb): Use generic interface.
226         * tree-vn.c (struct val_expr_pair_d): Cache statment pointer instead of
227         vuse_optype.
228         (vn_compute, val_expr_pair_hash, vn_add, vn_lookup, vn_lookup_or_add): 
229         Use statement pointer instead of vuse_optype.  Use generic interface.
230         * tree-vrp.c (maybe_add_assert_expr): Use generic interface.
231         (stmt_interesting_for_vrp, vrp_visit_stmt): Use ZERO_SSA_OPERANDS.
232         * tree.h (struct ssa_imm_use_d): Renamed to ssa_use_operand_d.
233         (tree_ssa_name, phi_arg_d): Use ssa_use_operand_d.
234         * doc/tree-ssa.texi: Update documentation for operand interface.
235
236 2005-05-03  Nathan Sidwell  <nathan@codesourcery.com>
237
238         * config/darwin.c (machopic_define_symbol): Use gcc_assert or
239         gcc_unreachable as appropriate.
240         (machopic_function_base_name, machopic_indirect_data_reference,
241         machopic_legitimize_pic_address, darwin_non_lazy_pcrel): Likewise.
242         * config/host-darwin.c (darwin_gt_pch_use_address): Likewise
243         * config/rs6000/altivec.md (*mov<mode>_internal,
244         build_vector_mask_for_load): Likewise.
245         * config/rs6000/darwin.md (movdf_low_si, movdf_low_di,
246         *call_nonlocal_darwin64, *call_value_nonlocal_darwin64,
247         *sibcall_symbolic_64, *sibcall_value_symbolic_64): Likewise.
248         * config/rs6000/predicates.md (easy_fp_constant,
249         logical_operand): Likewise.
250         * config/rs6000/rs6000.c (spe_expand_predicate_builtin,
251         compute_save_world_info, rs6000_emit_prologue,
252         rs6000_output_mi_thunk): Reword comments to avoid 'abort'.
253         * config/rs6000/host-darwin.c (segv_handler): Use fancy_abort
254         directly.
255
256 2005-05-03  Uros Bizjak  <uros@kss-loka.si>
257
258         PR middle-end/21282
259         * convert.c (convert_to_integer): Convert ceil and floor in
260         c99 mode only.
261
262 2005-04-29  Geoffrey Keating  <geoffk@apple.com>
263
264         PR target/20813
265         * config/rs6000/rs6000.md (floatsidf2_internal): Merge to create
266         define_insn_and_split.  Split only when memory operand is
267         offsettable.  Use adjust_address rather than plus_constant.
268         (floatunssidf2_internal): Likewise.
269         (fix_truncdfsi2_internal): Split only when memory operand is
270         offsettable.  Use adjust_address rather than plus_constant.
271         (fix_trunctfsi2_internal): Likewise.
272         (floatsidf2_internal): Likewise.
273
274 2005-05-02  Diego Novillo  <dnovillo@redhat.com>
275
276         * tree-vrp.c (set_value_range_to_nonnull): Declare inline.
277         (set_value_range_to_null): Likewise.
278         (set_value_range_to_varying): New function.  Use it in all
279         call sites that used to call set_value_range (vr, VR_VARYING, ...).
280         (extract_range_from_assert): If the integral type has a
281         super-type, and LIMIT is not within MIN and MAX values of that
282         type, set the resulting range to VR_VARYING.
283
284 2005-05-02  Hans-Peter Nilsson  <hp@bitrange.com>
285
286         * config/mmix/mmix.opt: New file.
287         * config/mmix/mmix.h: Move options-related comments to mmix.opt.
288         (mmix_cc1_ignored_option): Don't declare.
289         (TARGET_OPTIONS, TARGET_MASK_LIBFUNCS, TARGET_MASK_ABI_GNU)
290         (TARGET_MASK_FCMP_EPSILON, TARGET_MASK_ZERO_EXTEND)
291         (TARGET_MASK_KNUTH_DIVISION, TARGET_MASK_TOPLEVEL_SYMBOLS)
292         (TARGET_MASK_BRANCH_PREDICT, TARGET_MASK_USE_RETURN_INSN)
293         (TARGET_MASK_BASE_ADDRESSES, TARGET_LIBFUNC, TARGET_ABI_GNU,
294         (TARGET_FCMP_EPSILON, TARGET_ZERO_EXTEND, TARGET_KNUTH_DIVISION)
295         (TARGET_TOPLEVEL_SYMBOLS, TARGET_BRANCH_PREDICT)
296         (TARGET_BASE_ADDRESSES, TARGET_USE_RETURN_INSN, TARGET_SWITCHES):
297         Don't define.
298         (TARGET_DEFAULT): Change TARGET_MASK_... to MASK_...
299         * config/mmix/mmix.c (mmix_cc1_ignored_option): Remove.
300         (TARGET_DEFAULT_TARGET_FLAGS): Override default.
301
302 2005-05-02  Joseph S. Myers  <joseph@codesourcery.com>
303
304         PR c/15698
305         * c-tree.h (C_DECL_BUILTIN_PROTOTYPE): New.
306         * c-decl.c (current_function_prototype_built_in,
307         current_function_prototype_arg_types): New.
308         (merge_decls): Keep source location of prototype followed by
309         nonprototype declaration.  Update C_DECL_BUILTIN_PROTOTYPE.
310         (builtin_function): Set C_DECL_BUILTIN_PROTOTYPE.
311         (start_function): Always set current_function_prototype_locus,
312         current_function_prototype_built_in and
313         current_function_prototype_arg_types.  Check for external
314         prototype whether or not visible for external function and set
315         current_function_prototype_arg_types accordingly.
316         (store_parm_decls_oldstyle): Use
317         current_function_prototype_arg_types for checking old-style
318         definition against prototype.  Give warnings only if
319         current_function_prototype_built_in).
320
321 2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
322
323         * ggc.h (ggc_alloc_zone_pass_stat): New macro.
324         (ggc_alloc_zone_stat): Don't define.
325         * ggc-zone.c (ggc_alloc_typed_stat, ggc_alloc_stat): Use
326         ggc_alloc_zone_pass_stat.
327         * rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Likewise.
328         * tree.c (make_node_stat, copy_node_stat, make_tree_binfo_stat)
329         (make_tree_vec_stat, tree_cons_stat, build1_stat): Likewise.
330
331 2005-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
332
333         * calls.c (expand_call): Handle current_function_pretend_args_size
334         when checking for sibcalls.
335
336 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
337
338         PR tree-optimization/21294
339         * tree-vrp.c (vrp_expr_computes_nonzero): New.
340         (extract_range_from_expr): Call vrp_expr_computes_nonzero.
341
342 2005-05-02  Janis Johnson  <janis187@us.ibm.com>
343
344         PR 19985
345         * gcov-io.h: Declare gcov external functions hidden.
346
347 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
348
349         * tree-ssa-uncprop.c (equiv_hash_elt, remove_equivalence,
350         record_equiv, tree_ssa_uncprop, uncprop_into_successor_phis):
351         Use VEC instead of VARRAY.
352         (equiv_free): New.
353
354         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Factor
355         out common code.
356
357 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
358
359         * c-common.c (resolve_overloaded_builtin): Forward to target
360         hook for BUILT_IN_MD built-ins.
361         * c-typeck.c (finish_call_expr): Call resolve_overloaded_builtin
362         for all types of built-in.
363         * target-def.h (TARGET_RESOLVE_OVERLOADED_BUILTIN): New.  Use it
364         in the definition of the target hooks struct.
365         * target.h (struct gcc_target): Add resolve_overloaded_builtin.
366         * config/rs6000/altivec.h: Rewritten.
367         * config/rs6000/rs6000-c.c (struct altivec_builtin_types,
368         altivec_resolve_overloaded_builtin, altivec_build_resolved_builtin,
369         rs6000_builtin_type, rs6000_builtin_type_compatible,
370         altivec_overloaded_builtins, rs6000_builtin_type,
371         rs6000_builtin_type_compatible): New.
372         * config/rs6000/rs6000.c (rs6000_builtin_types, rs6000_builtin_decls):
373         New.
374         (def_builtin): Turn into a function.  Check for duplicates and store
375         the builtin into rs6000_builtin_decls.
376         (bdesc_3arg, bdesc_dst, bdesc_altivec_preds, bdesc_2arg,
377         bdesc_1arg): Add overloaded builtins.
378         (altivec_expand_builtin): Check for unresolved overloaded builtins,
379         do not support ALTIVEC_COMPILETIME_ERROR.
380         (rs6000_init_builtins): Add opaque 128-bit vector, and internal
381         nodes to represent front-end types.
382         (altivec_init_builtins, rs6000_common_init_builtins): Create builtins
383         with opaque arguments and/or return values.
384         * config/rs6000/rs6000.h (enum rs6000_builtins): Remove
385         ALTIVEC_COMPILETIME_ERROR and add Altivec overloaded builtins.
386         (rs6000_builtin_type_index): New.
387         (is_ev64_opaque_type): Rename to...
388         (rs6000_is_opaque_type): ... this.
389         (rs6000_cpu_cpp_builtins): Install the resolve_overloaded_builtin
390         target hook.
391
392 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
393
394         * function.c (reorder_blocks, reorder_blocks_1): Use VEC
395         instead of VARRAY.
396
397 2005-05-02  Nathan Sidwell  <nathan@codesourcery.com>
398             Bernd Schmidt  <bernd.schmidt@analog.com>
399
400         * config/bfin/bfin.c (emit_link_insn, effective_address_32bit_p,
401         print_address_operand, print_operand, legitimize_pic_address,
402         asm_conditional_branch, bfin_gen_compare, output_push_multiple,
403         output_pop_multiple): Use gcc_assert or gcc_unreachable as
404         appropriate.
405         * config/bfin/bfin.md (movsf splitter, beq, bne): Likewise.
406
407 2005-05-02  Dorit Naishlos  <dorit@il.ibm.com>
408
409         * doc/passes.texi: Document vectorization pass.
410
411 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
412
413         * tree-scalar-evolution.c (get_exit_conditions_rec,
414         select_loops_exit_conditions,
415         number_of_iterations_for_all_loops,
416         analyze_scalar_evolution_for_all_loop_phi_nodes,
417         scev_analysis): Use VEC instead of VARRAY.
418
419 2005-05-02  Michael Matz  <matz@suse.de>
420
421         PR c++/19542
422         * c-common.c (c_common_nodes_and_builtins): Create global null_node.
423         (warn_strict_null_sentinel): Define.
424         (check_function_sentinel): Check for null_node as valid sentinel too.
425         * c-common.h (c_tree_index): Added CTI_NULL.
426         (null_node) Define global_tree[CTI_NULL].
427         (warn_strict_null_sentinel): Declare.
428         * c-opts.c: (c_common_handle_option): Handle -Wstrict-null-sentinel.
429         * c.opt: (Wstrict-null-sentinel): New C++ option.
430         * doc/invoke.texi (C++ Options): Document -Wstrict-null-sentinel.
431
432 2005-05-01  Kazu Hirata  <kazu@cs.umass.edu>
433
434         * gimplify.c (gimplify_compound_lval): Use VEC instead of
435         VARRAY.
436
437         * global.c (calculate_reg_pav): Use VEC instead of VARRAY.
438
439         * dwarf2out.c (decl_scope_table, push_decl_scope,
440         pop_decl_scope, scope_die_for, dwarf2out_init): Use VEC
441         instead of VARRAY.
442
443 2005-05-01  Mark Mitchell  <mark@codesourcery.com>
444
445         PR C++/14391
446         * c-cppbuiltin.c (c_cpp_builtins): Do not define __GXX_WEAK__ to 1
447         if !flag_weak.
448         * doc/cpp.texi (__DEPRECATED): Document.
449         (__EXCEPTIONS): Likewise.
450         (__GXX_WEAK__): Likewise.
451
452         * function.c (INVOKE__main): Do not define.
453         (expand_main_function): Check HAS_INIT_SECTION when determining
454         whether or not to call __main.
455
456 2005-05-01  Kazu Hirata  <kazu@cs.umass.edu>
457
458         * tree-ssa-loop-ivopts.c: Fix a comment typo.
459
460 2005-01-05  Paul Brook  <paul@codesourcery.com>
461
462         * config/arm/arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define.
463         (INITIALIZE_TRAMPOLINE): Use it.
464         * config/arm/linux-gas.h (INITIALIZE_TRAMPOLINE): Remove.
465         * config/arm/netbsd.h (INITIALIZE_TRAMPOLINE): Remove.
466         * config/arm/netbsd-elf.h (INITIALIZE_TRAMPOLINE): Remove.
467
468 2005-05-01  Gerald Pfeifer  <gerald@pfeifer.com>
469
470         * doc/install.texi (Specific): Omit dots in the @anchors names
471         for i?86-*-sco3.2v5*, i?86-*-solaris2.10, and sparc-sun-solaris2.7.
472         Omit underscores for x86_64-*-* and the "all ELF targets" entry.
473
474 2005-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
475
476         PR tree-optimization/18316
477         PR tree-optimization/19126
478         * tree.c (build_int_cst_type): Avoid shift by size of type.
479         * tree-scalar-evolution.c (simple_iv): Add allow_nonconstant_step
480         argument.
481         * tree-scalar-evolution.h (simple_iv): Declaration changed.
482         * tree-ssa-loop-ivopts.c (struct iv_cand): Add depends_on
483         field.
484         (dump_cand): Dump depends_on information.
485         (determine_biv_step): Add argument to simple_iv call.
486         (contains_abnormal_ssa_name_p): Handle case expr == NULL.
487         (find_bivs, find_givs_in_stmt_scev): Do not require step to be a
488         constant.
489         (add_candidate_1): Record depends_on for candidates.
490         (tree_int_cst_sign_bit, constant_multiple_of): New functions.
491         (get_computation_at, get_computation_cost_at, may_eliminate_iv):
492         Handle ivs with nonconstant step.
493         (iv_ca_set_remove_invariants, iv_ca_set_add_invariants): New functions.
494         (iv_ca_set_no_cp, iv_ca_set_cp): Handle cand->depends_on.
495         (create_new_iv): Unshare the step before passing it to create_iv.
496         (free_loop_data): Free cand->depends_on.
497         (build_addr_strip_iref): New function.
498         (find_interesting_uses_address): Use build_addr_strip_iref.
499         (strip_offset_1): Split the recursive part from strip_offset.
500         Strip constant offset component_refs and array_refs.
501         (strip_offset): Split the recursive part to strip_offset_1.
502         (add_address_candidates): Removed.
503         (add_derived_ivs_candidates): Do not use add_address_candidates.
504         (add_iv_value_candidates): Add candidates with stripped constant
505         offset.  Consider all candidates with initial value 0 important.
506         (struct affine_tree_combination): New.
507         (aff_combination_const, aff_combination_elt, aff_combination_scale,
508         aff_combination_add_elt, aff_combination_add,
509         tree_to_aff_combination, add_elt_to_tree, aff_combination_to_tree,
510         fold_affine_sum): New functions.
511         (get_computation_at): Use fold_affine_sum.
512         * tree-ssa-loop-manip.c (create_iv): Handle ivs with nonconstant step.
513         * tree-ssa-loop-niter.c (number_of_iterations_exit): Add argument
514         to simple_iv call.
515
516 2005-04-30  Michael Matz  <matz@suse.de>
517
518         * config/i386/i386.md (movmemsi): Also active when
519         TARGET_INLINE_ALL_STRINGOPS.
520
521 2005-04-30  Eric Botcazou  <ebotcazou@libertysurf.fr>
522
523         PR bootstrap/20633
524         * config/freebsd-spec.h (FBSD_CPP_SPEC): Add %(cpp_arch).
525
526 2005-04-30  Paul Brook  <paul@codesourcery.com>
527
528         * config/arm/bpabi.h (RENAME_LIBRARY_SET): Always use .thumb_set in
529         thumb mode.
530         * config/arm/ieee754-df.S: Use __INTERWORKING_STUBS__.
531         * config/arm/ieee754-sf.S: Ditto.
532         * config/arm/lib1funcs.asm: Define and use __INTERWORKING_STUBS__.
533         (FUNC_ALIAS): Use .thumb_set for thumb routines.
534
535 2005-04-30  Kazu Hirata  <kazu@cs.umass.edu>
536
537         * tree-ssanames.c: Fix a comment typo.
538         * doc/options.texi: Fix a typo.
539
540 2005-04-30  Nathan Sidwell  <nathan@codesourcery.com>
541
542         * config/h8300/h8300.c (byte_reg): Use gcc_assert and
543         gcc_unreachable as appropriate.
544         (split_adds_subs, cond_string, print_operand,
545         h8300_initial_elimination_offset, h8300_classify_operand,
546         h8300_unary_length, h8300_short_immediate_length,
547         h8300_bitfield_length, h8300_binary_length,
548         h8300_insn_length_from_table, compute_mov_length, output_plussi,
549         compute_plussi_length, compute_plussi_cc, output_logical_op,
550         compute_logical_op_length, compute_logical_op_cc,
551         output_h8sx_shift, get_shift_alg, h8300_shift_needs_scratch_p,
552         output_a_shift, compute_a_shift_length, compute_a_shift_cc,
553         output_a_rotate, compute_a_rotate_length, fix_bit_operand,
554         h8300_regs_ok_for_stm): Likewise.
555         * config/h8300/h8300.md (*movsi_h8300, *movsf_h8300,
556         monitor_prologue): Likewise.
557
558 2005-04-30  Kazu Hirata  <kazu@cs.umass.edu>
559
560         * loop-invariant.c (invariants, create_new_invariant,
561         get_inv_cost, best_gain_for_invariant,
562         find_invariants_to_move, move_invariants,
563         init_inv_motion_data, free_inv_motion_data): Use VEC instead
564         of VARRAY.
565
566 2005-04-29  Richard Henderson  <rth@redhat.com>
567
568         * function.c (instantiate_decls): Remove valid_only argument.
569         (instantiate_decls_1, instantiate_decl): Likewise.
570         (instantiate_virtual_regs_1): Delete.
571         (instantiate_virtual_regs_lossage): Delete.
572         (instantiate_virtual_regs_in_rtx): New.
573         (safe_insn_predicate): New.
574         (instantiate_virtual_regs_in_insn): New.
575         (instantiate_virtual_regs): Update to match all that.  Only run
576         instantiate_decls once.
577
578 2005-04-29  Richard Henderson  <rth@redhat.com>
579             Daniel Jacobowitz  <dan@codesourcery.com>
580
581         * gengtype.c (write_func_for_structure): Split out ...
582         (output_type_enum): ... new function.  Fix thinko accessing
583         TYPE_PARAM_STRUCT data.
584
585 2005-04-29  Tom Tromey  <tromey@redhat.com>
586
587         * tree.c (build_block): Removed unused 'tags' argument.
588         * tree.h (build_block): Removed argument.
589
590 2005-04-29  Michael Matz  <matz@suse.de>
591
592         PR rtl-optimization/21144
593         * postreload.c (reload_cse_move2add): Check for VOIDmode.
594
595 2005-04-29  Bob Wilson  <bob.wilson@acm.org>
596
597         * config/xtensa/xtensa.h (OPTIMIZATION_OPTIONS): Define to disable
598         flag_reorder_blocks.
599
600 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
601
602         PR tree-optimization/21030
603         * tree-vrp.c (adjust_range_with_scev): Do not create invalid
604         ranges where VR->MAX is smaller than VR->MIN.
605
606 2005-04-29  Devang Patel  <dpatel@apple.com>
607
608         PR tree-optimization/21272
609         PR tree-optimization/21266
610         * tree-if-conv.c (find_phi_replacement_condition): Fix think-o.
611         
612 2005-04-29  Kazu Hirata  <kazu@cs.umass.edu>
613
614         * tree-flow-inline.h: Fix a comment typo.
615         * doc/tree-ssa.texi: Fix a typo.
616
617         * tree-flow-inline.h, tree-ssa-operands.c: Fix comment typos.
618
619 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
620
621         * config/fr30/fr30.c (fr30_expand_prologue): Use gcc_assert and
622         gcc_unreachable as appropriate.
623         (fr30_expand_epilogue, fr30_setup_incoming_varargs,
624         fr30_print_operand, fr30_move_double): Likewise.
625         * config/fr30/fr30.md (*movsi_internal, *movsf_internal): Likewise.
626
627 2005-04-29  Mark Mitchell  <mark@codesourcery.com>
628
629         * config/arm/arm.h (ARM_EABI_CTORS_SECTION_OP): Do not define if a
630         definition has already been provided.
631         (ARM_EABI_DTORS_SECTION_OP): Likewise.
632         * config/arm/symbian.h (ARM_EABI_CTORS_SECTION_OP): Define.
633         (ARM_EABI_DTORS_SECTION_OP): Likewise.
634
635 2005-04-29  Jim Tison  <jtison@us.ibm.com>
636
637         * config/s390/s390.md ("prologue_tpf", "epilogue_tpf"): Alter
638         trace hooks calls to improve performance.
639
640 2005-04-29  Julian Brown  <julian@codesourcery.com>
641             Mark Mitchell  <mark@codesourcery.com>
642             Paul Brook  <paul@codesourcery.com>
643
644         * crtstuff.c: Handle targets that use .init_array.
645         * function.c (HAS_INIT_SECTION): Do not define. Instead, make sure
646         that INVOKE__main is set correctly.
647         (expand_main_function): Test INVOKE__main.
648         * libgcc2.c: Do not define __main when using .init_array.
649         * config/arm/arm.c (arm_elf_asm_constructor): New function.
650         * config/arm/arm.h (CTORS_SECTION_ASM_OP): Define, with specialized
651         libgcc version.
652         (DTORS_SECTION_ASM_OP): Likewise.
653         (CTOR_LIST_BEGIN): Define specially when in libgcc.
654         (CTOR_LIST_END): Likewise.
655         (DTOR_LIST_BEGIN): Likewise.
656         (DTOR_LIST_END): Likewise.
657         * config/arm/bpapi.h (INIT_SECTION_ASM_OP): Do not define it.
658         (FINI_SECTION_ASM_OP): Likewise.
659         (INIT_ARRAY_SECTION_ASM_OP): Define.
660         (FINI_ARRAY_SECTION_ASM_OP): Likewise.
661         * config/arm/elf.h (TARGET_ASM_CONSTRUCTOR): Define.
662         (SUPPORTS_INIT_PRIORITY): Evaluate to false for EABI based targets.
663         * doc/tm.texi (INIT_ARRAY_SECTION_ASM_OP): Document.
664         (FINI_ARRAY_SECTION_ASM_OP): Likewise.  
665
666 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
667
668         * config/m68k/m68k.c (m68k_initial_elimination_offset): Use
669         gcc_assert and gcc_unreachable as appropriate.
670         (output_dbcc_and_branch, output_scc_di, legitimize_pic_address,
671         const_int_cost, output_move_const_into_data_reg,
672         output_move_qimode, output_move_double, find_addr_reg,
673         print_operand, print_operand_address): Likewise.
674         * config/m68k/m68k.md (adddi3, subdi3, negsf2, negdf2, abssf2,
675         absdf2, sordered, sunordered, suneq, sunge, sungt, sunle, sunlt,
676         sltgt, bordered, bunordered, buneq, bunge, bungt, bunle, bunlt,
677         bltgt, *bordered_rev, *bunordered_rev, *buneq_rev, *bunge_rev,
678         *bunle_rev, *bunlt_rev, *bltgt_rev, negxf2, absxf2,
679         conditional_trap): Likewise.
680         * config/m68k/m68kelf.h (ASM_OUTPUT_ALIGN): Remove unreachable code.
681
682 2005-04-29  Nathan Sidwell  <nathan@codesourcery.com>
683
684         * config/xtensa/xtensa.c (gen_int_relational): Use gcc_assert and
685         gcc_unreachable as appropriate.
686         (gen_conditional_move, xtensa_split_operand_pair,
687         xtensa_split_operand_pair, xtensa_copy_incoming_a7,
688         xtensa_copy_incoming_a7, xtensa_copy_incoming_a7,
689         xtensa_copy_incoming_a7, xtensa_output_literal,
690         xtensa_output_literal, xtensa_output_literal): Likewise.
691         * config/xtensa/xtensa.h (INITIAL_ELIMINATION_OFFSET): Likewise.
692         * config/xtensa/xtensa.md (*btrue, *bfalse, *ubtrue, *ubfalse,
693         *bittrue, *bitfalse, *masktrue, *maskfalse, movsicc_internal0,
694         movsicc_internal1, movsfcc_internal0,
695         movsfcc_internal1): Likewise.
696
697 2005-04-28  James E Wilson  <wilson@specifixinc.com>
698
699         * config/i386/i386.h (HI_REGISTER_NAMES): Fix typos in comment.
700         (ADDITIONAL_REGISTER_NAMES): Delete obsolete mmx register entries.
701
702 2005-04-28  DJ Delorie  <dj@redhat.com>
703
704         * opt-functions.awk (var_set): Emit proper initializer for
705         non-target bitfields.
706
707 2005-04-28  Devang Patel  <dpatel@apple.com>
708
709         * dbxout.c (have_used_extensions): Remove.
710         (dbxout_type_fileds, dbxout_type, dbxout_symbol): Remove use of
711         have_used_extensions.
712         
713 2005-04-28  James E Wilson  <wilson@specifixinc.com>
714
715         * doc/install.texi: Update -enable-languages info.  Correct path to
716         html docs.
717
718 2005-04-28  DJ Delorie  <dj@redhat.com>
719
720         * optc-gen.awk (END): Make sure no variable is defined more
721         than once.
722         * opth-gen.awk (END): Allocate bits on a per-variable basis.
723         Allow for bitfield variables other than target_flags.
724         * doc/options.text (Mask): Document that you may specify a
725         variable other than target_flags.
726
727 2005-04-28  Martin Koegler <mkoegler@auto.tuwien.ac.at>
728
729         PR rtl-optimization/18877
730         * reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg
731         number in val.start.
732
733 2005-04-28  David Edelsohn  <edelsohn@gnu.org>
734
735         PR target/20813
736         * config/rs6000/aix43.h (SUBSUBTARGET_SWITCHES, aix64): Add
737         MASK_PPC_GFXOPT.
738         * config/rs6000/aix51.h (SUBSUBTARGET_SWITCHES, aix64): Same.
739         * config/rs6000/aix52.h (SUBSUBTARGET_SWITCHES, aix64): Same.
740         * config/rs6000/sysv4.h (SUBTARGET_SWITCHES, 64): Same.
741
742 2005-04-28  Richard Earnshaw  <richard.earnshaw@arm.com>
743
744         * arm.c (legitimize_pic_address): Fix sense of assertion test for
745         creating pseudos when the base offset is too large.
746
747 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
748
749         * global.c (earlyclobber_regclass): Change the type to
750         VEC(int,heap).
751         (check_earlyclobber): Update uses of earlyclobber_regclass.
752         (mark_reg_use_for_earlyclobber): Likewise.
753         (calculate_local_reg_bb_info): Allocate and free
754         earlyclobber_regclass using the VEC API.
755
756 2005-04-28  Nathan Sidwell  <nathan@codesourcery.com>
757
758         * tree-ssa-alias.c (push_fields_onto_fieldstack): Remove bogus
759         assert.
760
761 2005-04-28  Kazu Hirata  <kazu@cs.umass.edu>
762
763         * modulo-sched.c, tree-stdarg.c: Use targetm.foo instead of
764         (*targetm.foo).
765
766         * config.gcc: Obsolete c4x-* and tic4x-*.
767
768         * tree.h (edge_def): Remove.
769
770         * bt-load.c, cfgexpand.c, dwarf2out.c, emit-rtl.c, expr.c,
771         function.c, global.c, lcm.c, loop-invariant.c, optabs.c,
772         reorg.c, resource.c, tree-ssa-loop-ivopts.c, value-prof.c: Use
773         JUMP_P, LABEL_P, REG_P, MEM_P, NONJUMP_INSN_P, and INSN_P
774         where appropriate.
775
776         * attribs.c, c-pragma.c, caller-save.c, cfghooks.h,
777         coverage.c, cselib.h, domwalk.c, domwalk.h, errors.c,
778         errors.h, gcov-dump.c, gcov-io.c, gcov-io.h, gen-protos.c,
779         genattrtab.h, genextract.c, gthr-win32.h, insn-notes.def,
780         integrate.c, lambda-mat.c, lambda.h, libgcov.c, local-alloc.c,
781         machmode.def, mips-tfile.c, params.c, pretty-print.c,
782         print-rtl.c, protoize.c, regmove.c, sched-vis.c, tree-chrec.h,
783         tree-data-ref.h, vec.h, config/darwin-c.c, config/sol2-c.c,
784         config/sol2.c, config/arm/arm-cores.def, config/arm/cirrus.md,
785         config/arm/symbian.h, config/c4x/c4x.c, config/c4x/c4x.h,
786         config/i386/cygming.h, config/i386/djgpp.h,
787         config/i386/lynx.h, config/i386/netware.c,
788         config/i386/winnt.c, config/ia64/ia64-c.c,
789         config/iq2000/iq2000.c, config/m32r/little.h,
790         config/m68k/m68k-protos.h, config/m68k/m68k.h,
791         config/m68k/m68k.md, config/mcore/mcore.c,
792         config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.md,
793         config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
794         config/mn10300/mn10300.h, config/ns32k/netbsd.h,
795         config/ns32k/ns32k.c, config/ns32k/ns32k.h,
796         config/pa/pa-hpux11.h, config/pdp11/pdp11.c,
797         config/pdp11/pdp11.h, config/rs6000/darwin.h,
798         config/rs6000/default64.h, config/rs6000/rs6000-c.c,
799         config/s390/2064.md, config/s390/2084.md,
800         config/s390/s390-modes.def, config/s390/s390-protos.h,
801         config/s390/tpf.h, config/sh/sh.h, config/sh/symbian.c,
802         config/stormy16/stormy16.c, config/vax/vax-protos.h,
803         config/vax/vax.c, config/vax/vax.h,
804         config/xtensa/lib1funcs.asm, config/xtensa/xtensa.md: Update
805         copyright.
806
807 2005-04-28  Joseph S. Myers  <joseph@codesourcery.com>
808
809         * c-typeck.c (build_compound_expr): Correct logic in last change.
810
811 2005-04-27  James E. Wilson  <wilson@specifixinc.com>
812
813         * config/ia64/ia64.c (update_set_flags): Delete ppred and pcond
814         parameters.  Replace conditional move code with assert checking for
815         ar.lc.  Delete obsolete comments.
816         (set_src_needs_barrier): Delete cond parameter, and code using it.
817         (rtx_needs_barrier): Delete initialization of cond.  Fix typo in
818         assert checking for PR_REGS.  Fix calls to update_set_flags and
819         set_src_needs_barrier.
820         (group_barrier_needed): Renamed from group_barrier_needed_p.  Fix all
821         callers.  Rewrite explanatory comment before the function.
822         (safe_group_barrier_needed): Renamed from safe_group_barrier_needed_p.
823         Fix all callers.
824
825 2005-04-27  Mike Stump  <mrs@apple.com>
826
827         * doc/cpp.texi: gcc now implements universal character names.
828
829 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
830
831         PR c/21159
832         * c-typeck.c (build_compound_expr): Don't warn for left-hand side
833         being a compound expression whose right-hand side is cast to void.
834
835 2005-04-27  Caroline Tice  <ctice@apple.com>
836
837         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
838         Remove targetm.have_named_sections test.
839         (fix_edges_for_rarely_executed_code): Likewise.
840         (insert_section_boundary_note): Likewise.
841         (reorder_basic_blocks): Check partitioning flag before calling
842         verify_hot_cold_block_grouping.
843         * dbxout.c (dbxout_function_end): Get hot/cold section labels from
844         the function struct rather than global variables.
845         * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
846         (COLD_END_LABEL): Likewise
847         (cold_text_section_label): New static global variable.
848         (cold_end_label): Likewise.
849         (dwarf2out_switch_text_section): Get hot/cold section labels from
850         the function struct rather than global variables; test to make sure
851         cfun is defined.
852         (output_aranges): Use cold_text_section_label and cold_end_label;
853         check partitioning flag before putting out delta.
854         (output_ranges): Remove incorrect code attempting to use
855         hot/cold labels.
856         (output_line_info): Get cold section label from function struct; test
857         to make sure cfun is defined.
858         (add_location_or_const_value_attribute): Likewise.
859         (dwarf2out_var_location): Likewise.
860         (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
861         write out cold_text_section_label if partition flag is set.
862         (dwarf2out_finish): Write out cold_end_label if partition flag is set;
863         * function.h (struct function): Add new fields to point to hot/cold
864         section labels: hot_section_label, cold_section_label,
865         hot_section_end_label and cold_section_end_label; also add new field
866         for cold text section name, unlikely_text_section_name.
867         * opts.c (decode_options): Turn off partitioning flag if
868         !targetm.have_named_sections.
869         * output.h (hot_section_label): Remove.
870         (hot_section_end_label): Remove.
871         (cold_section_end_label): Remove.
872         (unlikely_section_label): Remove.
873         (unlikely_text_section_name): Remove.
874         * passes.c (rest_of_handle_final):  Remove extra blank line.
875         * varasm.c (unlikely_section_label): Remove.
876         (hot_section_label): Remove.
877         (hot_section_end_label): Remove.
878         (cold_section_end_label): Remove.
879         (unlikely_text_section_name):  Remove.
880         (initialize_cold_section_name): Modify to call
881         targetm.strip_name_encoding; to store cold section name in current
882         function struct, if it exists; and to only use the decl_section_name
883         if flag_named_sections is true.
884         (unlikely_text_section): Modify to get section name out of current
885         function struct, if there is one; otherwise build it from
886         UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
887         (in_unlikely_text_section): Likewise.
888         (named_section): Modify to get/put cold section name in current function
889         struct, if there is one.
890         (function_section):  Change 'bool unlikely' to 'int reloc'; check
891         targetm.have_named_sections before calling named_section.
892         (current_function_section): Likewise.
893         (assemble_start_function): Modify to get/put unlikely_text_section_name
894         in current function struct; modify to get hot/cold section labels
895         from function struct; initialize labels using
896         ASM_GENERATE_INTERNAL_LABEL;
897         test partitioning flag before writing out hot section label.
898         (assemble_end_function): Test partitioning flag before writing out
899         hot/cold section labels.
900         (default_section_type_flags_1):  Get cold text section name from
901         function struct if there is one; Set flags correctly for
902         cold text section if there is not a current function struct.
903         
904 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
905
906         * tree-ssa-propagate.c (set_rhs): Revert last change.
907
908 2005-04-27  Steve Ellcey  <sje@cup.hp.com>
909
910         * explow.c (convert_memory_address): Add gcc_assert.
911
912 2005-04-27  Mark Mitchell  <mark@codesourcery.com>
913
914         * configure.ac: Check for ld --sysroot support.
915         * gcc.c: Document %R specifier for specs.
916         (SYSROOT_SPEC): New macro.
917         (sysroot_spec): New variable.
918         (static_specs): Add sysroot_spec.
919         (main): Pass the sysroot spec to the linker if appropriate.
920         * configure: Regenerated.
921         * config.in: Likewise.
922
923 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
924
925         * fold-const.c (fold_binary): Use build_fold_addr_expr
926         for address calculation and INDIRECT_REF handling.
927
928 2005-04-27  Andrew Haley  <aph@redhat.com>
929
930         * postreload-gcse.c (hash_scan_set): Remove bogus assertion.
931
932 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
933
934         * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Reserve arm frame
935         pointer when thumb backtracing is on.
936
937         * config/fp-bit.c (abort): Revert change.
938
939 2005-04-27  Ian Lance Taylor  <ian@airs.com>
940
941         * c-semantics.c (add_stmt): Don't test STATEMENT_CODE_P.
942
943 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
944
945         * tree-ssa-dce.c: Fix a comment typo.
946
947 2005-04-27  David S. Miller  <davem@davemloft.net>
948
949         * explow.c (allocate_dynamic_stack_space SETJMP_VIA_SAVE_AREA):
950         Kill setjmpless_size.  current_function_calls_setjmp is completely
951         computed when we are called, so just use the optimized size value
952         instead of using REG_SAVE_AREA notes.
953         (optimize_save_area_alloca): Delete....
954         * rtl.h (optimize_save_area_alloca): Likewise...
955         * passes.c (rest_of_compilation): and don't call it any more.
956         * reg-notes.def (SAVE_AREA): Delete.
957         
958 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
959
960         * config/fp-bit.c (abort): Add noreturn attribute.
961
962         * config/avr/avr.c (avr_naked_function_p): Use gcc_assert and
963         gcc_unreachable as appropriate.
964         (ptrreg_to_str, cond_string, avr_normalize_condition): Likewise.
965         * config/avr/avr.h (ASM_OUTPUT_REG_PUSH,
966         ASM_OUTPUT_REG_POP): Likewise.
967
968 2005-04-27  Paolo Bonzini  <bonzini@gnu.org>
969
970         * tree-complex.c (expand_vector_operations_1): Do not build
971         VIEW_CONVERT_EXPR's for the lhs.
972
973 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
974
975         * config/pa/pa.h (PRINT_OPERAND_ADDRESS): Use gcc_assert, remove
976         unnecessary noncanonical RTL handling.
977         * config/pa/pa64-linux.h (INITIAL_ELIMINATION_OFFSET): Use
978         gcc_assert and gcc_unreachable.
979
980         * config/arm/arm.h (ARM_PRINT_OPERAND_ADDRESS): Use gcc_assert and
981         gcc_unreachable as appropriate.
982         (THUMB_PRINT_OPERAND_ADDRESS): Likewise.
983         * config/arm/arm.c (arm_override_options, arm_compute_func_type,
984         use_return_insn, const_ok_for_op, arm_gen_constant,
985         arm_canonicalize_comparison, legitimize_pic_address,
986         thumb_find_work_register, arm_load_pic_register, arm_rtx_costs_1,
987         arm_cirrus_insn_p, cirrus_reorg, minmax_code,
988         load_multiple_sequence, emit_ldm_seq, store_multiple_sequence,
989         emit_stm_seq, arm_gen_movmemqi, arm_select_dominance_cc_mode,
990         arm_select_cc_mode, arm_reload_in_hi, arm_reload_out_hi,
991         move_minipool_fix_forward_ref, move_minipool_fix_backward_ref,
992         dump_minipool, create_fix_barrier, push_minipool_fix, arm_reorg,
993         fp_immediate_constant, fp_const_from_val, vfp_output_fstmx,
994         output_call, output_mov_long_double_fpa_from_arm,
995         output_mov_long_double_arm_from_fpa,
996         output_mov_double_fpa_from_arm, output_mov_double_arm_from_fpa,
997         output_move_double, arithmetic_instr, shift_op, int_log2,
998         output_return_instruction, arm_output_function_prologue,
999         arm_output_epilogue, arm_output_function_epilogue,
1000         emit_multi_reg_push, arm_get_frame_offsets,
1001         arm_compute_initial_elimination_offset, arm_expand_prologue,
1002         arm_print_operand, arm_assemble_integer, get_arm_condition_code,
1003         arm_final_prescan_insn, arm_init_iwmmxt_builtins,
1004         arm_expand_binop_builtin, thumb_pushpop, thumb_far_jump_used_p,
1005         thumb_compute_initial_elimination_offset,
1006         thumb_output_function_prologue, thumb_load_double_from_address,
1007         thumb_output_move_mem_multiple, thumb_reload_out_hi,
1008         arm_emit_vector_const, arm_dbx_register_number): Likewise.
1009         * config/arm/pe.c (arm_mark_dllexport, arm_mark_dllimport): Likewise.
1010         * config/arm/arm.md (thumb_extendhisi2,
1011         *thumb_extendhisi2_insn_v6, *thumb_extendqisi2,
1012         *thumb_extendqisi2_v6, movhi, *thumb_movhi_insn,
1013         thumb_movhi_clobber, movqi, *arm_buneq, *arm_bltgt,
1014         *arm_buneq_reversed, *arm_bltgt_reversed, suneq, sltgt): Likewise.
1015         * config/arm/cirrus.md (*cirrus_arm_movdi,
1016         *cirrus_movdf_hard_insn): Likewise.
1017         * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
1018
1019 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
1020
1021         * tree-flow.h (ssa_names): Change the type to VEC(tree,gc).
1022         (num_ssa_names): Use VEC_length.
1023         (ssa_names): Use VEC_index.
1024         * tree-ssanames.c (ssa_names): Change the type to
1025         VEC(tree,gc).
1026         (init_ssanames, fini_ssa_names, make_ssanames,
1027         release_ssa_name): Update uses of ssa_names.
1028
1029         * dojump.c, emit-rtl.c, expmed.c, expr.c, stmt.c, stor-layout.c:
1030         Use fold_buildN instead of fold (buildN (...)).
1031
1032 2005-04-27  Devang Patel <dpatel@apple.com>
1033
1034         * dbxout.c (dbxout_type): Check use_gnu_debug_info_extensions.
1035
1036 2005-04-27  Matt Thomas <matt@3am-software.com>
1037             Jan-Benedict Glaw <jbglaw@microdata-pos.de>
1038
1039         * config/vax/vax.c (vax_rtx_costs): Whitespace cleanup.
1040         (vax_output_mi_thunk): Ditto.
1041         (vax_notice_cc_update): Ditto.
1042         (INDEX_REGISTER_P): Add trailing \.
1043         (BASE_REGISTER_P): Add trailing \.
1044         (legitimate_address_p): Whitespace cleanup.  Remove trailing \.
1045
1046 2005-04-27  Richard Guenther  <rguenth@gcc.gnu.org>
1047
1048         * tree-ssa-propagate.c (set_rhs): Check operand of
1049         ADDR_EXPR for gimpliness, too.
1050
1051 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
1052
1053         * tree-ssa-pre.c: Fix a comment typo.
1054
1055 2005-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
1056
1057         PR tree-optimization/21171
1058         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not
1059         record address uses if the reference is volatile.
1060
1061 2004-04-27  Paolo Bonzini  <bonzini@gnu.org>
1062
1063         * tree-complex.c (expand_vector_operation): New, extracted from
1064         expand_vector_operations_1.
1065         (tree_vec_extract): Build a NOP_EXPR.
1066         (expand_vec_parallel): Do not care about returning the correct type.
1067         (expand_vector_operations_1): Call expand_vector_operation.
1068         Build the VIEW_CONVERT_EXPR on the left side of MODIFY_EXPRs.
1069
1070         * tree-complex.c (gate_expand_vector_operations): New.
1071         (pass_lower_vector_ssa): Use it.
1072         * tree-optimize.c (init_tree_optimization_passes): Include
1073         pass_lower_vector_ssa.
1074         * tree-vect-transform.c (vect_min_worthwhile_factor): New.
1075         (vectorizable_operation): Use it.
1076         * tree-vectorizer.c (get_vectype_for_scalar_type): Accept
1077         integer modes for the vector type.
1078
1079         * defaults.h (UNITS_PER_SIMD_WORD): Default to UNITS_PER_WORD.
1080         * tree-vect-analyze.c (vect_enhance_data_refs_alignment):
1081         Do not cope with UNITS_PER_SIMD_WORD == 0.
1082         * tree-vectorizer.c (get_vectype_for_scalar_type): Check
1083         if the scalar type is not bigger than UNITS_PER_SIMD_WORD.
1084         (vectorize_loops): Do not check that UNITS_PER_SIMD_WORD > 0.
1085         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Default to UNITS_PER_WORD.
1086         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
1087         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
1088         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
1089
1090         * config/alpha/alpha.h (UNITS_PER_SIMD_WORD): Remove.
1091         * config/bfin/bfin.h (UNITS_PER_SIMD_WORD): Remove.
1092         * config/ia64/ia64.h (UNITS_PER_SIMD_WORD): Remove.
1093
1094         * doc/tm.texi (UNITS_PER_WORD): Rephrase more accurately.
1095         (UNITS_PER_SIMD_WORD): New.
1096
1097 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
1098
1099         * config/ia64/ia64.c (ia64_encode_addr_area): Use gcc_assert and
1100         gcc_unreachable as appropriate.
1101         (ia64_expand_load_address, ia64_expand_tls_address,
1102         ia64_split_tmode, ia64_split_tmode_move, ia64_expand_compare,
1103         ia64_expand_vecint_compare, ia64_expand_vecint_minmax,
1104         next_scratch_gr_reg, ia64_initial_elimination_offset,
1105         ia64_expand_prologue, ia64_expand_epilogue,
1106         ia64_output_dwarf_dtprel, ia64_print_operand,
1107         ia64_register_move_cost, first_instruction, rws_access_regno,
1108         update_set_flags, rtx_needs_barrier, group_barrier_needed_p,
1109         ia64_sched_init, ia64_variable_issue,
1110         ia64_first_cycle_multipass_dfs_lookahead_guard,
1111         ia64_dfa_new_cycle, issue_nops_and_insn, get_template, bundling,
1112         ia64_st_address_bypass_p, ia64_ld_address_bypass_p, process_set,
1113         process_for_unwind_directive, ia64_hpux_file_end): Likewise.
1114         * config/ia64/ia64.h (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
1115         * config/ia64/ia64.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
1116         * config/ia64/predicates.md (got_symbolic_operand,
1117         sdata_symbolic_operand): Likewise.
1118         * config/ia64/vect.md (vcondv2sf): Likewise.
1119
1120 2005-04-27  Matt Thomas <matt@3am-software.com>
1121
1122         * config/vax/vax.c (legitimate_constant_address_p): New.  Formerly
1123         CONSTANT_ADDRESS_P in config/vax/vax.h
1124         (legitimate_constant_p): Added.  Formerly CONSTANT_P in vax.h. 
1125         (INDEX_REGISTER_P): New.
1126         (BASE_REGISTER_P): New.
1127         (indirectable_constant_address_p): New.  Adapted from
1128         INDIRECTABLE_CONSTANT_ADDRESS_P in vax.h. Use SYMBOL_REF_LOCAL_P.
1129         (indirectable_address_p): New.  Adapted from
1130         INDIRECTABLE_ADDRESS_P in vax.h.
1131         (nonindexed_address_p): New.  Adapted from
1132         GO_IF_NONINDEXED_ADDRESS in vax.h.
1133         (index_temp_p): New.  Adapted from INDEX_TERM_P in vax.h.
1134         (reg_plus_index_p): New.  Adapted from GO_IF_REG_PLUS_INDEX in vax.h.
1135         (legitimate_address_p): New.  Adapted from
1136         GO_IF_LEGITIMATE_ADDRESS in vax.h.
1137         (vax_mode_dependent_address_p): New.  Adapted from
1138         GO_IF_MODE_DEPENDENT_ADDRESS in vax.h.
1139         * config/vax/vax.h (CONSTANT_ADDRESS_P): Use
1140         legitimate_constant_address_p.
1141         (CONSTANT_P): Use legitimate_constant_p.
1142         (INDIRECTABLE_CONSTANT_ADDRESS_P): Removed.
1143         (INDIRECTABLE_ADDRESS_P): Removed.
1144         (GO_IF_NONINDEXED_ADDRESS): Removed.
1145         (INDEX_TEMP_P): Removed.
1146         (GO_IF_REG_PLUS_INDEX): Removed.
1147         (GO_IF_LEGITIMATE_ADDRESS): Use legitimate_address_p. Two
1148         definitions, depending on whether REG_OK_STRICT is defined.
1149         (GO_IF_MODE_DEPENDENT_ADDRESS): Use vax_mode_dependent_address_p.
1150         Two definitions, depending on whether REG_OK_STRICT is defined.
1151         * config/vax/vax-protos.h (legitimate_constant_address_p): Prototype
1152         added.
1153         (legitimate_constant_p): Prototype added.
1154         (legitimate_address_p): Prototype added.
1155         (vax_mode_dependent_address_p): Prototype added.
1156
1157 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
1158
1159         * tree.h (phi_arg_d): Expand a comment in phi_arg_d.
1160
1161 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
1162
1163         PR c/21213
1164         * c-decl.c (finish_struct): Don't dereference NULL TYPE_FIELDS of
1165         transparent union.
1166
1167 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
1168
1169         PR c/20740
1170         * c-format.c (init_dynamic_asm_fprintf_info): Give errors, not
1171         assertion failures, if __gcc_host_wide_int__ is not properly
1172         defined.
1173         (init_dynamic_diag_info): Give errors, not assertion failures, if
1174         location_t, tree or __gcc_host_wide_int__ are not properly
1175         defined.
1176
1177 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
1178
1179         * tree-ssa-loop-ivopts.c (ivopts_data, decl_rtl_to_reset,
1180         n_iv_uses, iv_use, n_iv_cands, iv_cand,
1181         tree_ssa_iv_optimize_init, record_use, add_candidate_1,
1182         prepare_decl_rtl, free_loop_data,
1183         tree_ssa_iv_optimize_finalize): Use the VEC API instead of
1184         VARRAY.
1185
1186         * tree.h (tree_phi_node): Add a comment about the order of PHI
1187         arguments.
1188
1189 2005-04-26  Paul Brook  <paul@codesourcery.com>
1190
1191         * config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.
1192
1193 2005-04-26  Nathan Sidwell  <nathan@codesourcery.com>
1194
1195         * config/mips.mips.c (mips_legitimize_tls_address): Use
1196         gcc_unreachable.
1197
1198         * config/mmix/mmix.c (mmix_assemble_integer): Use gcc_assert.
1199         * config/mmix/crti.asm (_init): Reword comment to avoid 'abort'.
1200         * config/mmix/mmix.md (nonlocal_goto_receiver): Likewise.
1201
1202         * config/sparc/sparc.h (enum reg_class): Reword comment to avoid
1203         'abort'.
1204
1205 2005-04-26  Jeff Law  <law@redhat.com>
1206
1207         * tree-flow-inline.h (op_iter_next_must_and_may_def): New.
1208         (op_iter_init_must_and_may_def): Likewise.
1209         (unmodifiable_var_p): Move to a later point in the file.
1210         * tree-ssa-operands.h (FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): New.
1211         * tree-ssa-dse.c (need_imm_uses_for): Remove, no longer needed.
1212         (dse_record_phis): Directly check for virtual operands rather than
1213         using need_imm_uses_for.
1214         (dse_optimize_stmt): Handle V_MUST_DEF operands.  Handle case where
1215         store has multiple V_{MAY,MUST}_DEF operands.
1216
1217 2005-04-26  Andrew MacLeod  <amacleod@redhat.com>
1218
1219         * tree-cfg.c (bsi_replace): Delink immediate uses for the original
1220         stmt.
1221
1222 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
1223
1224         * tree-cfg.c (lv_adjust_loop_header_phi): Speed up moving a
1225         call to find_edge outside a loop to go through a PHI chain.
1226
1227 2004-04-26  Richard Guenther  <rguenth@gcc.gnu.org>
1228
1229         PR tree-optimization/17598
1230         * fold-const.c (fold_binary): Fold comparisons of addresses
1231         of COMPONENT_REFs which reference the same field to
1232         comparisons of the addresses of the base objects.
1233
1234 2005-04-26  Julian Brown  <julian@codesourcery.com>
1235
1236         * config/arm/arm.c (arm_return_in_msb): New function.
1237         (arm_must_pass_in_stack): New function.
1238         (TARGET_RETURN_IN_MSB): Define target hook.
1239         (TARGET_MUST_PASS_IN_STACK): Define target hook.
1240         (arm_function_value): Pad small aggregate return.
1241         (arm_pad_arg_upward): New function.
1242         (arm_pad_reg_upward): New function.
1243         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Include complex values.
1244         (FUNCTION_ARG_PADDING): Define macro.
1245         (BLOCK_REG_PADDING): Define macro.
1246         (PAD_VARARGS_DOWN): Correct padding for AAPCS.
1247         * config/arm/arm-protos.h (arm_pad_arg_upward): Declare function.
1248         (arm_pad_reg_upward): Declare function.
1249
1250 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
1251
1252         * basic-block.h (ei_cond): New.
1253         (FOR_EACH_EDGE): Call ei_cond.
1254
1255         PR tree-optimization/21047
1256         * fold-const.c (fold_binary): Abort on ASSERT_EXPR.
1257         (fold): Don't handle ASSERT_EXPR.
1258
1259 2005-04-25  Roger Sayle  <roger@eyesopen.com>
1260
1261         * sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat
1262         all writes to any stack register as a read/write dependency on
1263         FIRST_STACK_REG.
1264         (sched_analyze_2): Likewise, for reads from any stack register.
1265
1266 2005-04-25  Richard Henderson  <rth@redhat.com>
1267
1268         * final.c (output_addr_const): Revert 2005-04-09 change.
1269
1270 2005-04-25  Mike Stump  <mrs@apple.com>
1271
1272         * config/darwin.c (darwin_encode_section_info): Always set
1273         MACHO_SYMBOL_STATIC for all ! TREE_PUBLIC symbols.
1274
1275 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1276
1277         * collect2.c, gcc.c, gcov-dump.c, gcov.c, gen-protos.c,
1278         gensupport.c, protoize.c, toplev.c: Replace calls to
1279         `unlock_stream' with `unlock_std_streams'.
1280
1281 2005-04-25  Devang Patel <dpatel@apple.com>
1282
1283         * dbxout.c (dbxout_type): Emit attribute vector.
1284         
1285 2005-04-05  Paul Brook  <paul@codesourcery.com>
1286
1287         * target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define.
1288         * target.h (struct gcc_target): Add cxx.use_aeabi_atexit.
1289         * config/arm/arm.c (arm_cxx_atexit_name): New function.
1290         (TARGET_CXX_USE_AEABI_ATEXIT): New macro.
1291         * cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit.
1292         (register_dtor_fn): Likewise.
1293         * doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT.
1294
1295 2005-04-25  Ian Lance Taylor  <ian@airs.com>
1296
1297         * c-common.def (EXPR_STMT): Remove, moved to C++ frontend.
1298         * c-common.h (EXPR_STMT_EXPR): Don't define.
1299         (c_common_stmt_codes): Don't define.
1300         * c-dump.c (c_dump_tree): Remove EXPR_STMT case.
1301         * c-gimplify.c (gimplify_expr_stmt): Remove.
1302         (c_gimplify_expr): Remove EXPR_STMT case.
1303         * c-objc-common.c (c_objc_common_init): Remove stmt_codes and call
1304         to INIT_STATEMENT_CODES.
1305         * c-pretty-print.c (pp_c_statement): Just call dump_generic_node.
1306
1307 2005-04-25  Jan Hubicka  <jh@suse.cz>
1308
1309         * tree-cfg.c (tree_duplicate_bb): Duplicate EH region too.
1310
1311         * except.c: Include diagnostic.h
1312         (dump_eh_tree, verify_eh_tree): New functions.
1313         * except.h (verify_eh_tree, dump_eh_tree, verify_eh_edges): Declare.
1314         * tree-cfg.c (tree_verify_flow_info): verify eh edges.
1315         (dump_function_to_file): dump eh tree.
1316         * tree-eh.c (mark_eh_edge): New function.
1317         (mark_eh_edge_found_error): New static variable.
1318         (verify_eh_edges): New function.
1319
1320 2005-04-25  Nathan Sidwell  <nathan@codesourcery.com>
1321
1322         * tree-ssa-alias.c (fieldoff_t): Remove.
1323         (fieldoff_s): typedef the structure itself.  Create a vector of
1324         objects.
1325         (push_fields_onto_fieldstack): Return count of fields pushed.
1326         Remove peeling of first field.  Adjust.
1327         (fieldoff_compare): Adjust.
1328         (create_overlap_variables_for): Adjust.
1329
1330 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
1331
1332         * doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.
1333
1334 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
1335
1336         PR bootstrap/21215
1337         * doc/install.texi: Document correct assembler and linker to use
1338         on i?86-*-solaris2.10.
1339
1340 2005-04-25  Steven Bosscher  <stevenb@suse.de>
1341
1342         Fix PR tree-optimization/21173
1343
1344         * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
1345         Unshare expression we pass to force_gimple_operand.
1346
1347 2005-04-25  J"orn Rennecke <joern.rennecke@st.com>
1348             Stephen Clarke <stevec@superh.com>
1349             Roger Sayle <roger@eyesopen.com>
1350
1351         PR rtl-optimization/20413
1352         * cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
1353         VOIDmode for LABEL_REF.
1354         * final.c (shorten_branches): Likewise.
1355         * jump.c (mark_all_labels, redirect_exp_1): Likewise.
1356         * loop.c (reg_dead_after_loop): Likewise.
1357         * varasm.c (decode_addr_const): Likewise.
1358         * doc/rtl.texi: Document mode requirement for LABEL_REF.
1359
1360 2005-04-25  Ralf Corsepius  <ralf.corsepius@rtems.org>
1361
1362         * config.gcc (avr-*-*): Remove redundant "case".
1363
1364 2005-04-25  Kazu Hirata  <kazu@cs.umass.edu>
1365
1366         * tree-vect-analyze.c (vect_mark_relevant): Take
1367         VEC(tree,heap) instead of varray_type as an argument.
1368         (vect_mark_stmts_to_be_vectorized): Change the type of
1369         worklist to VEC(tree,heap).  Adjust uses of worklist.
1370
1371 2005-04-24  Devang Patel  <dpatel@apple.com>
1372
1373         *  config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
1374         
1375 2005-04-24  Ian Lance Taylor  <ian@airs.com>
1376
1377         * c-semantics.c (build_stmt): Remove test of specific tree codes
1378         for TREE_SIDE_EFFECTS handling.
1379
1380 2005-04-24  Per Bothner  <per@bothner.com>
1381
1382         * c-opts.c (finish_options):  Make the line-number of the <built-in>
1383         location 0, as assumed elsewhere, rather than 1.
1384
1385 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
1386
1387         * tree-ssa-uncprop.c (equiv_stack): Change the type o
1388         VEC(tree,heap).
1389         (tree_ssa_uncprop, uncprop_finalize_block,
1390         uncprop_initialize_block): Update uses of equiv_stack.
1391
1392 2005-04-24  Richard Henderson  <rth@redhat.com>
1393
1394         PR rtl-opt/21163
1395         * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
1396         for SCALAR_INT_MODE_P instead of not MODE_CC before returning
1397         constm1_rtx.
1398         <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
1399         <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
1400         <DIV, MOD>: Likewise.
1401
1402 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1403
1404         * collect2.c (main): Unlock the stdio streams.
1405         * gcc.c (main): Likewise.
1406         * gcov-dump.c (main): Likewise.
1407         * gcov.c (main): Likewise.
1408         * gen-protos.c (main): Likewise.
1409         * gensupport.c (init_md_reader_args_cb): Likewise.
1410         * protoize.c (main): Likewise.
1411         * toplev.c (general_init): Likewise.
1412
1413 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
1414
1415         PR middle-end/20991
1416         * cgraph.h (cgraph_local_info): Add vtable_method field.
1417         * varasm.c (mark_decl_referenced): If cgraph_global_info_ready
1418         and node is vtable_method, finalized and not reachable, don't do
1419         anything.
1420
1421 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
1422
1423         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
1424         COMPARISON_CLASS_P.
1425         * tree-ssa-pre.c (create_value_expr_from): Use
1426         CONSTANT_CLASS_P and REFERENCE_CLASS_P.
1427         * tree-ssa-propagate.c (stmt_makes_single_load,
1428         stmt_makes_single_store): Use REFERENCE_CLASS_P.
1429         * tree-vect-transform.c (vect_is_simple_cond): Use
1430         COMPARISON_CLASS_P.
1431         * tree-vrp.c (extract_range_from_assert,
1432         build_assert_expr_for, fp_predicate, has_assert_expr): Use
1433         COMPARISON_CLASS_P.
1434
1435         * tree-ssa-live.c (build_tree_conflict_graph): Change the type
1436         of tpa_to_clear to VEC(int,heap).  Update uses of
1437         tpa_to_clear.  Free tpa_to_clear at the end.
1438
1439 2005-04-24  Andrew Pinski  <pinskia@physics.uc.edu>
1440
1441         * tree.h (TREE_THIS_VOLATILE): Document the effect on a
1442         function decl.
1443
1444 2005-04-24  Nathan Sidwell  <nathan@codesourcery.com>
1445
1446         * config/rs6000/rs6000.c (rs6000_override_options): Use gcc_assert
1447         and gcc_unreachable as appropriate.
1448         (num_insns_constant, output_vec_const_move,
1449         build_mask64_2_operands, rs6000_output_dwarf_dtprel,
1450         rs6000_emit_set_const, rs6000_emit_move,
1451         spe_build_register_parallel, function_arg,
1452         rs6000_move_block_from_reg, altivec_expand_predicate_builtin,
1453         spe_expand_predicate_builtin, spe_expand_evsel_builtin,
1454         rs6000_expand_builtin, spe_init_builtins, altivec_init_builtins,
1455         rs6000_common_init_builtins, expand_block_clear,
1456         expand_block_move, validate_condition_mode, ccr_bit, extract_MB,
1457         extract_ME, rs6000_get_some_local_dynamic_name,
1458         rs6000_output_function_entry, print_operand,
1459         print_operand_address, rs6000_generate_compare, rs6000_emit_sCOND,
1460         output_cbranch, output_e500_flip_gt_bit,
1461         rs6000_emit_vector_compare, rs6000_emit_vector_compare,
1462         rs6000_emit_cmove, rs6000_emit_minmax, rs6000_split_multireg_move,
1463         compute_save_world_info, rs6000_stack_info,
1464         rs6000_emit_load_toc_table, rs6000_frame_related,
1465         spe_synthesize_frame_save, rs6000_emit_epilogue,
1466         rs6000_output_function_epilogue, rs6000_hash_constant, output_toc,
1467         output_function_profiler, rs6000_trampoline_size,
1468         rs6000_initialize_trampoline, find_addr_reg,
1469         rs6000_machopic_legitimize_pic_address,
1470         rs6000_initial_elimination_offset,
1471         rs6000_dbx_register_number): Likewise.
1472         * config/rs6000/rs6000.md (*fix_truncdfsi2_internal,
1473         *movdf_hardfloat32, *movdf_softfloat32, *fix_trunctfsi2_internal,
1474         *movti_power, *movti_string, call, call_value, sibcall,
1475         sibcall_value): Likewise.
1476         * config/rs6000/spe.md (*movdf_e500_double,
1477         *movv2si_internal): Likewise.
1478         * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Remove 'abort'
1479         from comment.
1480
1481 2005-04-24  Richard Henderson  <rth@redhat.com>
1482
1483         PR target/21101
1484         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
1485         * config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
1486         Deny modes smaller than 4 bytes.
1487         * config/i386/i386-protos.h: Update.
1488
1489 2005-04-24  Ralf Corsepius  <ralf.corsepius@rtems.org>
1490
1491         * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
1492         Switch h8300-*-rtems* to ELF.
1493
1494 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
1495
1496         * vec.h (VEC_safe_grow): Replace grow with safe_grow.
1497
1498 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1499
1500         * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
1501
1502 2005-04-23  Richard Guenther  <rguenth@gcc.gnu.org>
1503
1504         PR middle-end/21082
1505         * fold-const.c: Fold &a[i]-&a[j] to i-j.
1506
1507 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
1508
1509         * tree-ssa-loop-niter.c (tree_simplify_using_condition): Expand simple
1510         definitions of ssa names in condition.  Split recusive part to ...
1511         (tree_simplify_using_condition_1): New function.
1512         (expand_simple_operations): New function.
1513
1514 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
1515
1516         * tree-ssa-loop-ivopts.c (struct cost_pair): Add value field.
1517         (find_interesting_uses_cond): Do not use integer_zerop and
1518         integer_nonzerop to check for integer constants.
1519         (set_use_iv_cost): Record the value field.
1520         (determine_use_iv_cost_generic, determine_use_iv_cost_address,
1521         determine_use_iv_cost_outer): Set the value field of the cost pair.
1522         (may_eliminate_iv): Do not return the comparison code.
1523         (iv_elimination_compare): New function.
1524         (determine_use_iv_cost_condition): Set the value field.  Record
1525         noneliminable invariants correctly.
1526         (rewrite_use_compare, rewrite_use_outer): Use the value field.
1527
1528 2005-04-23  DJ Delorie  <dj@redhat.com>
1529
1530         * diagnostic.c (warning): Accept parameter to classify warning option.
1531         (warning0): New, for when a pointer to an error() like function is needed.
1532         * errors.c (warning): Likewise.
1533         * errors.h (warning, warning0): Adjust prototypes.
1534         * toplev.h (warning, warning0): Likewise.
1535
1536         * attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
1537         c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
1538         c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
1539         fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
1540         genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
1541         reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
1542         tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
1543         tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
1544
1545         * config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
1546         config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
1547         config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
1548         config/darwin.c, config/darwin.h, config/h8300/h8300.c,
1549         config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
1550         config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
1551         config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
1552         config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
1553         config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
1554         config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
1555         config/rs6000/aix52.h, config/rs6000/darwin.h,
1556         config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
1557         config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
1558         config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
1559         config/stormy16/stormy16.c, config/v850/v850-c.c,
1560         config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
1561         callers.
1562         
1563 2005-04-23  Richard Henderson  <rth@redhat.com>
1564
1565         PR rtl-opt/21102
1566         * simplify-rtx.c (simplify_binary_operation): Fix mode check before
1567         performing some integral scalar simplifications.
1568
1569 2005-04-23  Richard Henderson  <rth@redhat.com>
1570
1571         PR target/21099
1572         * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
1573         simplifying CONST_VECTOR.
1574
1575 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1576
1577         * tree-ssa-live.c (live_worklist): Take a stack allocated on
1578         heap as an argument.  Update uses of stack.
1579         (calculate_live_on_entry): Allocate stack on heap.
1580
1581         * tree-ssa-live.c (build_tree_conflict_graph): Allocate
1582         partition_link and tpa_nodes on heap.
1583
1584         * tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
1585         (mark_stmt_necessary, propagate_necessity,
1586         mark_really_necessary_kill_operand_phis): Update uses of
1587         worklist.
1588         (tree_dce_init): Allocate worklist using VEC_alloc.
1589         (tree_dce_done): Free worklist using VEC_free.
1590
1591 2005-04-23  Mike Stump  <mrs@apple.com>
1592
1593         * config/darwin.c (machopic_indirection_name): Don't use
1594         quotes needlessly.
1595         (darwin_emit_unwind_label): Use user_label_prefix instead of
1596         "_".
1597
1598 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1599
1600         * final.c, ipa-inline.c, varasm.c: Fix comment typos.
1601
1602 2005-04-23  Hans-Peter Nilsson  <hp@axis.com>
1603
1604         * config.gcc <cris-*>: Specify .opt files.
1605         * config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt,
1606         config/cris/linux.opt: New files.
1607         * config/cris/aout.h (CRIS_SUBTARGET_SWITCHES)
1608         (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
1609         (TARGET_ELF): Override to 0.
1610         (CRIS_SUBTARGET_HANDLE_OPTION): Override to handle -melinux and
1611         -melinux-stacksize=N.
1612         * config/cris/cris.c: (cris_handle_option): New function.
1613         (TARGET_DEFAULT_TARGET_FLAGS): Override.
1614         (TARGET_HANDLE_OPTION): Override to cris_handle_option.
1615         (cris_override_options): Use MASK_*, not TARGET_MASK_*.
1616         * config/cris/cris.h (TARGET_MASK_SVINTO, TARGET_SVINTO,
1617         (TARGET_MASK_CCINIT, TARGET_CCINIT, TARGET_MASK_PDEBUG)
1618         (TARGET_PDEBUG, TARGET_MASK_SIDE_EFFECT_PREFIXES)
1619         (TARGET_SIDE_EFFECT_PREFIXES, TARGET_MASK_EXPAND_MUL)
1620         (TARGET_EXPAND_MUL, TARGET_MASK_STACK_ALIGN, TARGET_STACK_ALIGN)
1621         (TARGET_MASK_CONST_ALIGN, TARGET_CONST_ALIGN)
1622         (TARGET_MASK_DATA_ALIGN, TARGET_DATA_ALIGN)
1623         (TARGET_MASK_PROLOGUE_EPILOGUE, TARGET_PROLOGUE_EPILOGUE)
1624         (TARGET_MASK_ETRAX4_ADD, TARGET_ETRAX4_ADD)
1625         (TARGET_MASK_ALIGN_BY_32, TARGET_ALIGN_BY_32, TARGET_MASK_ELF)
1626         (TARGET_ELF, TARGET_MASK_LINUX, TARGET_LINUX)
1627         (TARGET_MASK_AVOID_GOTPLT, TARGET_AVOID_GOTPLT)
1628         (TARGET_MASK_MUL_BUG, TARGET_MUL_BUG, TARGET_SWITCHES)
1629         (CRIS_SUBTARGET_SWITCHES, TARGET_OPTIONS)
1630         (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
1631         (TARGET_LINUX): Define 0.
1632         (TARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
1633         (CRIS_SUBTARGET_DEFAULT): Define to 0, not TARGET_MASK_ELF.
1634         (CRIS_SUBTARGET_DEFAULT): New empty default macro.
1635         * config/cris/linux.h (CRIS_SUBTARGET_SWITCHES): Don't define.
1636         (TARGET_LINUX): Override to 1.
1637         (CRIS_SUBTARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
1638
1639 2005-04-23  Nathan Sidwell  <nathan@codesourcery.com>
1640
1641         * haifa-sched.c (schedule_block): Fix thinko in previous
1642         assertification patch.
1643
1644 2005-04-23  Richard Sandiford  <rsandifo@redhat.com>
1645
1646         * config.gcc (hppa[12]*-*-hpux10*): Add pa/pa-hpux.opt to
1647         $extra_options.  Also add pa/pa-hpux1010.opt for hpux10.[1-9]*.
1648         (hppa*64*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file.  Add
1649         pa/pa-hpux.opt, pa/pa-hpux1010.opt and pa/pa64-hpux.opt to
1650         $extra_options.  Also add pa/pa-hpux1111.opt for hpux11.[1-9]*.
1651         (hppa[12]*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file.  Add
1652         pa/pa-hpux.opt to $extra_options.  Also add pa/pa-hpux1111.opt
1653         for hpux11.[1-9]*.
1654         * config/pa/pa.h (architecture_type, rtx_def, pa_arch_string, pa_arch)
1655         (pa_fixed_range_string, pa_cpu_string, pa_unix_string, target_flags)
1656         (MASK_PA_11, MASK_DISABLE_FPREGS, TARGET_DISABLE_FPREGS)
1657         (MASK_NO_SPACE_REGS, TARGET_NO_SPACE_REGS, MASK_JUMP_IN_DELAY)
1658         (TARGET_JUMP_IN_DELAY, MASK_DISABLE_INDEXING, TARGET_DISABLE_INDEXING)
1659         (MASK_PORTABLE_RUNTIME, TARGET_PORTABLE_RUNTIME, MASK_GAS, TARGET_GAS)
1660         (MASK_SOFT_FLOAT, TARGET_SOFT_FLOAT, MASK_LONG_LOAD_STORE)
1661         (TARGET_LONG_LOAD_STORE, MASK_FAST_INDIRECT_CALLS)
1662         (TARGET_FAST_INDIRECT_CALLS, MASK_BIG_SWITCH, TARGET_BIG_SWITCH)
1663         (MASK_PA_20, MASK_SIO, TARGET_SIO, MASK_GNU_LD, TARGET_GNU_LD)
1664         (MASK_LONG_CALLS, TARGET_LONG_CALLS, TARGET_PA_11, TARGET_PA_20)
1665         (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS)
1666         (SUBTARGET_OPTIONS): Delete.
1667         (TARGET_PA_10): Redefine in terms of TARGET_PA_11 and TARGET_PA_20.
1668         (TARGET_SCHED_DEFAULT): Define to a PROCESSOR_* enum (PROCESSOR_8000)
1669         instead of a string.
1670         * config/pa/pa.c (pa_arch, pa_arch_string, pa_fixed_range_string)
1671         (pa_cpu_string, pa_unix_string): Delete.
1672         (pa_cpu): Initialize to TARGET_SCHED_DEFAULT.
1673         (flag_pa_unix): Initialize based on TARGET_HPUX_11_11 and
1674         TARGET_HPUX_10_10.
1675         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1676         (pa_handle_option): New function.
1677         (override_options): Remove handling of -march=, -mfixed-range=,
1678         -mschedule= and -munix=.
1679         * config/pa/pa-hpux.h (SUBTARGET_SWITCHES): Delete.
1680         * config/pa/pa-hpux1010.h (SUBTARGET_OPTIONS): Delete.
1681         * config/pa/pa-hpux10.h (SUBTARGET_OPTIONS): Delete.
1682         * config/pa/pa-hpux1111.h (SUBTARGET_OPTIONS): Delete.
1683         * config/pa/pa-hpux11.h (SUBTARGET_OPTIONS): Delete.
1684         * config/pa/pa64-hpux.h (SUBTARGET_SWITCHES): Delete.
1685         * config/pa/pa64-start.h (TARGET_PA_11, TARGET_PA_20): #undef before
1686         redefining.
1687         * config/pa/pa.opt: New file.
1688         * config/pa/pa-hpux.opt: New file.
1689         * config/pa/pa-hpux1010.opt: New file.
1690         * config/pa/pa-hpux1111.opt: New file.
1691         * config/pa/pa64-hpux.opt: New file.
1692
1693 2005-04-22  David S. Miller  <davem@davemloft.net>
1694
1695         * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
1696         integer when it's mode is VOIDmode not DImode.
1697
1698 2005-04-22  Geoffrey Keating  <geoffk@apple.com>
1699
1700         * config/rs6000/rs6000.md (sync_add<mode>_internal,
1701         sync_addshort_internal, sync_sub<mode>_internal, sync_andsi_internal,
1702         sync_anddi_internal, sync_boolsi_internal, sync_booldi_internal,
1703         sync_boolc<mode>_internal, sync_boolc<mode>_internal2,
1704         sync_boolcc<mode>_internal, sync_lock_test_and_set<mode>): Use
1705         "bne- $-xxx" rather than local labels.
1706         (sync_lock_release<mode>): Add second operand.
1707         (lwsync): Use .long rather than a more meaningful opcode.
1708         * doc/md.texi (Standard Names): Add description of second
1709         parameter to sync_lock_test_and_set.
1710
1711 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
1712
1713         PR tree-optimization/21088
1714         * fold-const.c (fold_unary, fold_binary, fold_ternary):
1715         Export.
1716         * tree-vrp.c (compare_values): Use fold_binary to compare
1717         pointers.  Use boolean_type_node as the type of a comparison
1718         expression being folded.
1719         * tree.h: Add prototypes for fold_unary, fold_binary,
1720         fold_ternary.
1721
1722         * tree-ssa-dom.c: Fix formatting.
1723
1724 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
1725
1726         * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
1727         * lambda-code.c (perfect_nestify): Mark virtual operands in
1728         the moved statement for renaming.
1729         * params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
1730         (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
1731         * params.h (MIN_VIRTUAL_MAPPINGS): Define.
1732         (VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
1733         * tree-flow.h (struct var_ann_d): Update comments.
1734         (rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
1735         allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
1736         debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
1737         debug_tree_ssa_stats, rewrite_ssa_into_ssa,
1738         dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
1739         debug_names_replaced_by): Remove declarations.
1740         (delete_update_ssa, get_current_def, set_current_def): Declare.
1741         (rewrite_into_loop_closed_ssa): Add new argument.  Update
1742         all callers.
1743         * tree-into-ssa.c: Include params.h.
1744         (old_virtual_ssa_names): Remove.  Update all users.
1745         (need_to_replace_names_p): Remove.  Update all users.
1746         (struct update_ssa_stats_d): Declare.
1747         (update_ssa_stats): New local.
1748         (dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
1749         dump_tree_ssa_stats, debug_tree_ssa_stats,
1750         dump_update_ssa, debug_update_ssa,
1751         dump_names_replaced_by, debug_names_replaced_by): Declare.
1752         (get_current_def, set current_def): Make extern.
1753         (is_old_name, is_new_name): Protect against references
1754         past the end of the sets.
1755         (add_new_name_mapping): Assert that OLD and NEW are
1756         different SSA names for the same symbol.
1757         When adding a virtual mapping, update stats for virtual
1758         mapping heuristic.
1759         (insert_phi_nodes_for): If UPDATE_P is true, create the
1760         LHS of the new PHI by duplicating SSA name VAR.
1761         (insert_phi_nodes_1): Remove.  Update all users.
1762         (insert_phi_nodes): Remove second argument.  Update all
1763         users.
1764         (maybe_replace_use, maybe_replace_def): New.
1765         (rewrite_update_stmt): Call them.
1766         (mark_def_interesting): Remove calls to is_gimple_reg.
1767         (prepare_phi_args_for_update): Remove.  Update all users.
1768         (prepare_block_for_update): Only process virtual operands
1769         and GIMPLE registers in normal form.
1770         (prepare_use_sites_for): New.
1771         (prepare_names_to_update): Rename from prepare_def_sites.
1772         Call prepare_use_sites_for.
1773         (dump_update_ssa): Rename from dump_repl_tbl.
1774         Update all users.
1775         Show statistics for virtual mapping heuristic.
1776         (debug_update_ssa): Rename from debug_debug_repl_tbl.
1777         (init_update_ssa): Initialize UPDATE_SSA_STATS.
1778         (delete_update_ssa): Make extern.
1779         (mark_set_for_renaming): If the set is empty, do nothing.
1780         (release_ssa_name_after_update_ssa): Update comment.
1781         (insert_updated_phi_nodes_for): Do not remove existing
1782         PHI nodes for symbols.
1783         (switch_virtuals_to_full_rewrite_p): New.
1784         (switch_virtuals_to_full_rewrite): New.
1785         (update_ssa): Call them.
1786         Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
1787         for every statement before updating.
1788         If all the names in NEW_SSA_NAMES have been marked for
1789         removal, do nothing.
1790         Only start at the top of the CFG if there are symbols in
1791         SYMS_TO_RENAME.
1792         (ssa_rewrite_finalize_block): Remove.
1793         (ssa_register_new_def): Remove.
1794         (ssa_rewrite_stmt): Remove.
1795         (ssa_rewrite_phi_arguments): Remove.
1796         (ssa_rewrite_initialize_block): Remove.
1797         (ssa_mark_def_sites): Remove.
1798         (ssa_mark_def_sites_initialize_block): Remove.
1799         (ssa_mark_phi_uses): Remove.
1800         (rewrite_ssa_into_ssa): Remove.
1801         * tree-phinodes.c (find_phi_node_for): Remove.
1802         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
1803         Call update_ssa.
1804         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
1805         Remove calls to verify_dominators and
1806         verify_loop_structure.
1807         (tree_unswitch_single_loop): Call update_ssa.
1808         * tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
1809         returns false.
1810         Call verify_stmts.
1811         (delete_tree_ssa): Assert that need_ssa_update_p returns
1812         false.
1813         * tree-vect-transform.c (vect_transform_loop): Call update_ssa.
1814         * tree-vectorizer.c (allocate_new_names, rename_def_op,
1815         free_new_names): Remove.  Update all users.
1816         (rename_use_op): Call get_current_def.
1817         (rename_variables_in_bb): Do not handle any real or
1818         virtual definition.
1819         (slpeel_update_phis_for_duplicate_loop): Call
1820         get_current_def and set_current_def instead of using
1821         SSA_NAME_AUX.
1822         (slpeel_update_phi_nodes_for_guard2): Reformat comments.
1823         (slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
1824         ssa_names_to_replace and delete_update_ssa.
1825         * doc/invoke.texi: Document --param min-virtual-mappings
1826         and --param virtual-mappings-ratio.
1827
1828 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
1829
1830         * tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
1831         for newly created PHI nodes.
1832         Call create_new_def_for for every new V_MAY_DEF and
1833         V_MUST_DEF on the copied statement.
1834         (struct ssa_name_map_entry): Remove.
1835         (ssa_name_map_entry_hash): Remove.
1836         (ssa_name_map_entry_eq): Remove.
1837         (allocate_ssa_names): Remove.
1838         (rewrite_to_new_ssa_names_def): Remove.
1839         (rewrite_to_new_ssa_names_use): Remove.
1840         (rewrite_to_new_ssa_names_bb): Remove.
1841         (rewrite_to_new_ssa_names): Remove.
1842         (tree_duplicate_sese_region): Remove variables ver,
1843         definitions, phi, ssa_name_map and bi.
1844         Call need_ssa_update_p instead of any_marked_for_rewrite_p.
1845         Call update_ssa.
1846         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
1847         update_ssa instead of rewrite_ssa_into_ssa.
1848         * tree-ssa-loop-manip.c (add_exit_phis_edge): Call
1849         create_new_def_for.
1850         (find_uses_to_rename_use): Add argument 'need_phis'.
1851         (find_uses_to_rename_stmt): Do not scan virtual operands.
1852         (find_uses_to_rename): Only scan PHI nodes for
1853         non-virtual names.
1854         (rewrite_into_loop_closed_ssa): Call update_ssa.
1855         (check_loop_closed_ssa_use): Ignore virtual operands.
1856         (check_loop_closed_ssa_stmt): Likewise.
1857         (verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
1858         NULL.
1859         (rename_variables, set_phi_def_stmts): Remove.
1860         (tree_duplicate_loop_to_header_edge): Reformat comment.
1861         Remove variables BB, I and DEFINITIONS.
1862         Call need_ssa_update_p.
1863         Call update_ssa.
1864         (lv_adjust_loop_header_phi): Reformat comment.
1865         * tree-ssanames.c (ssa_names_to_rewrite): Remove.
1866         (marked_for_rewrite_p, any_marked_for_rewrite_p,
1867         mark_for_rewrite, unmark_all_for_rewrite,
1868         marked_ssa_names): Remove.  Update all users.
1869         (release_ssa_name): If VAR has been registered for SSA
1870         updating, do nothing.
1871         * tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
1872         (build_assert_expr_for): Call register_new_name_mapping.
1873         (insert_range_assertions): Update call to update_ssa.
1874         * tree.h (mark_for_rewrite, unmark_all_for_rewrite,
1875         marked_for_rewrite_p, any_marked_for_rewrite_p,
1876         marked_ssa_names): Remove.
1877
1878 2005-04-22  Jeff Law  <law@redhat.com>
1879
1880         * tree-ssa-dom.c (block_defs_stack): Remove, no longer needed.
1881         (restore_currdefs_to_original_value): Likewise.
1882         (register_definitions_for_stmt): Likewise.
1883         (tree_ssa_dominator_optimize): No longer initialize CURRENT_DEF
1884         for each variable.  Do not allocate/free block_defs_stack either.
1885         Do not iterate if we just thread jumps.  Only iterate if the
1886         tree_cleanup_cfg does useful work (temporary).
1887         (dom_opt_initialize_block): No longer push a marker on
1888         BLOCK_DEFS_STACK.
1889         (dom_opt_finalize_block): Removal call to restore currdefs.
1890         Relax restrictions for recording edge equivalences.
1891         (record_equivalences_from_phis): No longer need to track
1892         CURRENT_DEF.
1893         (optimize_stmt): Similarly.
1894         (thread_across_edge): Simplify by removing the requirement that
1895         statements in the block we are threading through must be nops.
1896         (initialize_hash_element): Handle GOTO_EXPR.
1897
1898 2005-04-22  David S. Miller  <davem@davemloft.net>
1899
1900         * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
1901         CONST_DOUBLE_HIGH.
1902         * config/sparc/sparc.c (sparc_rtx_costs): Likewise, and
1903         fix check on CONST_DOUBLE mode.  It should be VOIDmode
1904         when it is representing an integer.
1905
1906 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1907
1908         * builtins.c (gimplify_va_arg_expr): Reword comments to avoid
1909         'abort'. Use gcc_assert and gcc_unreachable as appropriate.
1910         * c-format.c (get_constant, decode_format_attr, get_flag_spec, 
1911         find_char_info_specifier_index,
1912         find_length_info_modifier_index): Likewise.
1913         * c-typeck.c (composite_type, pop_init_level): Likewise.
1914         * combine.c (cant_combine_insn_p, try_combine): Likewise.
1915         * cse.c (cse_insn): Likewise
1916         * dominance.c (calc_dfs_tree): Likewise
1917         dwarf2out.c (loc_descriptor_from_tree_1,
1918         add_abstract_origin_attribute, force_decl_die,
1919         force_type_die): Likewise
1920         emit-rtl.c (operand_subword_force): Likewise
1921         explow.c (hard_function_value): Likewise
1922         expmed.c (store_bit_field, expand_divmod,
1923         emit_store_flag_force): Likewise
1924         expr.c (emit_move_multi_word, store_expr,
1925         expand_expr_real_1): Likewise
1926         final.c (this_is_asm_operands, shorten_branches, final_scan_insn,
1927         output_operand): Likewise
1928         flow.c (recompute_reg_usage): Likewise
1929         * function.c (assign_stack_temp_for_type, assign_temp, 
1930         handle_epilogue_set): Likewise
1931         * genextract.c (main): Likewise
1932         * gimplify.c (mostly_copy_tree_r, gimplify_return_expr,
1933         gimplify_modify_expr_rhs, gimplify_expr): Likewise
1934         * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element,
1935         ready_remove, rm_line_notes, rm_other_notes,
1936         schedule_block): Likewise
1937         mips-tfile.c (copy_object, out_of_bounds): Likewise
1938
1939 2005-04-22 David Edelsohn  <edelsohn@gnu.org>
1940
1941         PR target/20813
1942         * config/rs6000/default64.h (TARGET_DEFAULT): Add MASK_PPC_GFXOPT.
1943         * config/rs6000/rs6000.c (processor_target_table): Rename rs64a to
1944         rs64.  Add MASK_PPC_GFXOPT to powerpc64 and rs64.
1945         (rs6000_init_libfuncs): Set TFmode optabs to xlq names if
1946         TARGET_XL_COMPAT.
1947         * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
1948
1949 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1950
1951         * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
1952         (gcc_tree_to_linear_expression): Convert to heap allocated
1953         vectors.
1954         (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
1955         lbv_to_gcc_expression, lle_to_gcc_expression,
1956         lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest, 
1957         perfect_nestify): Likewise.
1958         lambda.h (gcc_loopnest_to_lambda_loopnest,
1959         lambda_loopnest_to_gcc_loopnest): Likewise.
1960         tree-loop-linear.c (linear_transform_loops): Likewise.
1961
1962 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1963
1964         * config/sparc/predicates.md (arith_double_operand): Use
1965         trunc_int_for_mode if HOST_BITS_PER_WIDE_INT >=64.
1966         * config/sparc/sparc.md (movqi, movhi, movsi, movqi): Use gen_int_mode.
1967         (DImode, DFmode constant splitters): Likewise.  Remove code for
1968         TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT < 64.
1969         (logical constant splitters): Use const_int_operand predicate.
1970         (lshrsi3_extend): Remove code for TARGET_ARCH64 &&
1971         HOST_BITS_PER_WIDE_INT < 64.
1972
1973 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
1974
1975         * config/pa/pa.c (legitimize_pic_address): Use gcc_assert and
1976         gcc_unreachable as appropriate.
1977         (force_mode, emit_move_sequence, singlemove_string,
1978         output_move_double, output_fp_move_double, find_addr_reg,
1979         output_block_move, output_block_clear, output_and,
1980         output_64bit_and, output_ior, output_64bit_ior, store_reg_modify,
1981         pa_adjust_cost, pa_issue_rate, print_operand,
1982         output_global_address, output_arg_descriptor, output_cbranch,
1983         output_lbranch, output_bb, output_bvb, output_dbra, output_movb,
1984         output_call): Likewise.
1985         * config/pa/pa.md (call, call_value, sibcall, sibcall_value,
1986         prefetch, prefetch_cc, prefetch_nocc): Likewise.
1987
1988 2005-04-22  Zdenek Dvorak  <dvorakz@suse.cz>
1989
1990         * Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
1991         _gcov_pow2_profiler and _gcov_one_value_profiler.
1992         (tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
1993         (GTFILES): Add $(srcdir)/tree-profile.c.
1994         * gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
1995         __gcov_one_value_profiler): Declare.
1996         * gimplify.c (force_gimple_operand): Check whether the statements
1997         should be produced in ssa form.
1998         (force_gimple_operand_bsi): New function.
1999         * libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
2000         __gcov_one_value_profiler): New functions.
2001         * rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
2002         the profiled value is a power of two or not.
2003         * tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
2004         * tree-flow.h (in_ssa_p): Declare.
2005         (force_gimple_operand_bsi): Declare.
2006         * tree-into-ssa.c (in_ssa_p): New variable.
2007         (rewrite_into_ssa): Set in_ssa_p.
2008         * tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
2009         * tree-profile.c: Include ggc.h and gt-tree-profile.h.
2010         (gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
2011         tree_one_value_profiler_fn): New variables.
2012         (tree_init_edge_profiler): Initialize the profiler function decls.
2013         (tree_gen_edge_profiler): Use global gcov_type_node.
2014         (prepare_instrumented_value): New function.
2015         (tree_gen_interval_profiler, tree_gen_interval_profiler,
2016         tree_gen_one_value_profiler): Call the library functions instead of
2017         creating instrumentation code.
2018         * tree.c (build_fn_decl): New function.
2019         * tree.h (build_fn_decl): Declare.
2020         * value-prof.c (rtl_divmod_values_to_profile,
2021         rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
2022         tree_mod_pow2_value_transform, tree_find_values_to_profile):
2023         Do not handle may_be_other and precise values of exponents at pow2
2024         profiler.
2025         (tree_mod_subtract_transform): Reflect that value field of
2026         histogram has changed meaning.
2027         (tree_divmod_values_to_profile): Record the values correctly.
2028         (tree_values_to_profile): Update comment.
2029         * value-prof.h (struct histogram_value_t): Remove pow2 data.
2030
2031 2005-04-22  Joseph S. Myers  <joseph@codesourcery.com>
2032
2033         * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
2034         (decl).
2035
2036 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
2037
2038         * config/i386/i386.md (length_immediate): Use gcc_assert or
2039         gcc_unreachable, as appropriate.
2040         (*movsi_1, *movqi_1, reload_outqi, *movdi_1_rex64, *pushsf,
2041         *pushsf_rex64, *truncxfsf2_mixed, *truncxfsf2_i387,
2042         *truncxfdf2_mixed, *truncxfdf2_i387, *adddi_1_rex64,
2043         *adddi_2_rex64, *adddi_3_rex64, *adddi_4_rex64, *adddi_5_rex64,
2044         *addsi_1, addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
2045         *addsi_3_zext, *addsi_4, *addsi_5, *addhi_1_lea, *addhi_1,
2046         *addhi_2, *addhi_3, *addhi_4, *addhi_5, *addqi_1_lea, *addqi_1,
2047         *addqi_1_slp, *addqi_2, *addqi_3, *addqi_4, *addqi_5, addqi_ext_1,
2048         *addqi_ext_1_rex64, *anddi_1_rex64, *andsi_1, *andhi_1,
2049         *ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashlsi3_1, *ashlsi3_1_zext,
2050         *ashlsi3_cmp, *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1,
2051         *ashlhi3_cmp, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
2052         pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64,
2053         pro_epilogue_adjust_stack_rex64_2, prefetch, *prefetch_sse,
2054         *prefetch_sse_rex): Likewise.
2055         * config/i386/predicates.md (x86_64_immediate_operand,
2056         x86_64_zext_immediate_operand, symbolic_operand,
2057         no_seg_address_operand, aligned_operand,
2058         memory_displacement_operand): Likewise.
2059         * config/i386/sse.md (*mov<mode>_internal,
2060         *movv2df_internal): Likewise.
2061
2062 2005-04-22  Jan Hubicka  <jh@suse.cz>
2063
2064         * Makefile.in (ipa.o, ipa-inline.o): New files.
2065         * cgraph.h (cgraph_remove_unreachable_nodes, cgraph_postorder,
2066         cgraph_decide_inlining_incrementally, cgraph_clone_inlined_nodes,
2067         cgraph_mark_inline_edge, cgraph_default_inline_p): Declare.
2068         * cgraphunit.c (cgraph_default_inline_p,
2069         cgraph_decide_inlining_incrementally,  ncalls_inlined,
2070         nfunctions_inlined, initial_insns, overall_insns, 
2071         cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
2072         cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
2073         cgraph_mark_inline, cgraph_check_inline_limits,
2074         cgraph_default_inline_p, cgraph_recursive_inlining_p,
2075         update_callee_keys, lookup_recursive_calls,
2076         cgraph_decide_recursive_inlining, cgraph_set_inline_failed,
2077         cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining,
2078         cgraph_decide_inlining_incrementally, cgraph_gate_inlining,
2079         pass_ipa_inline): Move to ipa-inline.c
2080         (cgraph_postorder, cgraph_remove_unreachable_nodes): Move to ipa.c
2081         * ipa.c: New file.
2082         * ipa-inline.c: New file.
2083
2084 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
2085
2086         * doc/invoke.texi (SPARC options): Document that -mapp-regs
2087         is turned off by default on Solaris.
2088
2089 2005-04-21  Roger Sayle  <roger@eyesopen.com>
2090
2091         * c-common.h (objc_build_method_signature): Update prototype.
2092         * stub-objc.c (objc_build_method_signature): Update the stub
2093         implementation to accept and ignore additional parameter.
2094         * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass
2095         the value of ellipsis to objc_build_method_signature instead
2096         of setting TREE_OVERFLOW on the parms TREE_LIST node.
2097
2098 2005-04-21  Geoffrey Keating  <geoffk@apple.com>
2099
2100         * config/rs6000/rs6000-protos.h (rs6000_emit_sync): New.
2101         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Use
2102         gen_rtx_* not gen_rtx_fmt_*.
2103         (rs6000_emit_vector_select): Likewise.
2104         (rs6000_emit_sync): New.
2105         * config/rs6000/rs6000.md (GPR, INT, INT1): New mode macros.
2106         (larx, stcx, cmp): New mode substitutions.
2107         (UNSPEC_SYNC, UNSPEC_SYNC_OP, UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC,
2108         UNSPEC_ISYNC): New constants.
2109         (rlwinm): Give name.
2110         (memory_barrier, isync, lwsync): New insns.
2111         (sync_compare_and_swap<mode>, sync_lock_test_and_set<mode>): New insn.
2112         (sync_lock_release<mode>): New expander.
2113         (sync_add<mode>, sync_sub<mode>, sync_ior<mode>, sync_and<mode>,
2114         sync_xor<mode>, sync_nand<mode>, sync_old_add<mode>,
2115         sync_old_sub<mode>, sync_old_ior<mode>, sync_old_and<mode>,
2116         sync_old_xor<mode>, sync_old_nand<mode>, sync_new_add<mode>,
2117         sync_new_sub<mode>, sync_new_ior<mode>, sync_new_and<mode>,
2118         sync_new_xor<mode>, sync_new_nand<mode>): New expanders.
2119         (sync_add<mode>_internal, sync_addshort_internal,
2120         sync_sub<mode>_internal, sync_andsi_internal, sync_anddi_internal,
2121         sync_boolsi_internal, sync_booldi_internal, sync_boolc<mode>_internal,
2122         sync_boolc<mode>_internal2, sync_boolcc<mode>_internal): New insns.
2123
2124         * doc/md.texi (Standard Names): sync_compare_and_swap's operand 0
2125         is the memory before, not after, the operation.  Clarify
2126         barrier requirements.
2127
2128 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
2129
2130         * cfghooks.h (struct cfg_hooks): Reword comments to avoid 'abort'.
2131         * lambda.h (lambda_vector_min_nz): Likewise.
2132         * langhooks.h (struct lang_hooks_for_types,
2133         struct lang_hooks): Likewise.
2134         * output.h (assemble_integer, this_is_asm_operands): Likewise.
2135         * tree.h: Likewise.
2136         * vec.h: Likewise.
2137         * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
2138         
2139         * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
2140         comments to avoid 'abort'.  Use gcc_assert as necessary.
2141         * opts.c (common_handle_option): Likewise.
2142         * pretty-print.c (pp_base_format_text): Likewise.
2143         * print-rtl.c (print_rtx): Likewise.
2144         * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
2145         * regmove.c (try_auto_increment): Likewise.
2146         * reload.c (find_valid_class, find_reloads_toplev,
2147         find_equiv_reg): Likewise.
2148         * reload1.c (reload, forget_old_reloads_1, function_invariant_p, 
2149         merge_assigned_reloads): Likewise.
2150         * tree-inline.c (inline_forbidden_p_1,
2151         estimate_num_insns_1): Likewise.
2152         * tree-optimize.c (execute_todo): Likewise.
2153         * tree-outof-ssa.c (eliminate_phi): Likewise.
2154         * tree-ssa-alias.c (add_pointed_to_expr): Likewise.
2155         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
2156         * tree-ssa-operands.c (parse_ssa_operands,
2157         get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
2158         * tree-ssa-pre.c (find_or_generate_expression): Likewise.
2159         * tree-ssanames.c (release_ssa_name): Likewise.
2160         * tree.c (int_bit_position, int_byte_position, tree_low_cst, 
2161         walk_tree): Likewise.
2162
2163         * tree-ssa-operands.c (verify_abort): Fold into ..
2164         (verify_imm_links): ... here.
2165
2166 2005-04-21  Richard Henderson  <rth@redhat.com>
2167
2168         * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
2169         on non-memory operand for previous inversion.
2170
2171 2005-04-21  Devang Patel  <dpatel@apple.com>
2172
2173         PR optimization/20994
2174         * tree-if-conv.c (find_phi_replacement_condition): Avoid generating
2175         x = !(a == b) : p , q;.
2176         (pass_if_conversion): Verify stmts and flow.
2177         
2178 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
2179
2180         * optabs.c (gen_conditional_trap): Restore #define.
2181
2182         * alias.c (true_dependence): Remove 'abort' from comments. Use
2183         gcc_assert and gcc_unreachable as appropriate.
2184         (canon_true_dependence): Likewise.
2185         * bb-reorder.c (connect_traces): Likewise.
2186         * c-common.c (c_add_case_label): Likewise.
2187         * c-decl.c (finish_function): Likewise.
2188         * caller-save.c (insert_restore, insert_save): Likewise.
2189         * cfg.c (update_bb_profile_for_threading): Likewise.
2190         * cfganal.c (flow_active_insn_p): Likewise.
2191         * cfgexpand.c (add_reg_br_prob_note): Likewise.
2192         * cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
2193         cfg_layout_merge_blocks): Likewise.
2194         * ifcvt.c (cond_exec_process_insns, merge_if_block,
2195         find_if_block): Likewise.
2196         * integrate.c (allocate_initial_values): Likewise.
2197         * jump.c (reverse_condition, reverse_condition_maybe_unordered,
2198         swap_condition, unsigned_condition, signed_condition,
2199         mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
2200         reg_or_subregno): Likewise.
2201         * lambda-code.c (lambda_compute_auxillary_space,
2202         lambda_transform_legal_p): Likewise.
2203         * lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
2204         * langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
2205         lhd_incomplete_type_error, lhd_expand_expr,
2206         lhd_types_compatible_p, lhd_tree_size): Likewise.
2207         * lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
2208         * local-alloc.c (update_equiv_regs): Likewise.
2209         * loop-unroll.c (peel_loop_completely
2210         unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
2211         peel_loop_simple, unroll_loop_stupid,
2212         analyze_iv_to_split_insn): Likewise.
2213         * loop.c (gen_prefetch, find_and_verify_loops,
2214         basic_induction_var): Likewise.
2215         * modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
2216         * value-prof.c (tree_find_values_to_profile): Likewise.
2217         * varasm.c (named_section, default_assemble_integer,
2218         decode_addr_const): Likewise.
2219
2220 2005-04-21 Alan Modra  <amodra@bigpond.net.au>
2221            Fariborz Jahanian <fjahanian@apple.com>
2222
2223         * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Fix size of
2224         portion of argument passed in fpr.
2225         * expr.c (emit_push_insn): Fix computation of 'offset' used to
2226         decide on partial argument save on stack.
2227
2228 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
2229
2230         * config/sparc/predicates.md, config/sparc/sparc.md: Fix
2231         comment typos.
2232
2233 2005-04-21  Jan Hubicka  <jh@suse.cz>
2234
2235         * cgraphunit.c: Include tree-pass.h
2236         (cgraph_decide_recursive_inlining,
2237         cgraph_decide_inlining_of_small_function, cgraph_set_inline_failed,
2238         cgraph_decide_inlining): Dump goes to dump_file.
2239         (cgraph_optimize): Call ipa passes instead of inliner.
2240         (cgraph_gate_inlining, pass_ipa_inline): New.
2241         * tree-optimize.c (all_ipa_passes): New static variable.
2242         (register_one_dump_file): Dead with IPA passes.
2243         (register_dump_files): Likewise.
2244         (init_tree_optimization_passes): Initialize IPA passes.
2245         (execute_todo): Do cgraph dump when asked to, do not dump function body
2246         for IPA pass.
2247         * tree-pass.h (TODO_dump_cgraph): New macro.
2248         (ipa_passes): Declare.
2249         * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
2250
2251 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
2252
2253         * config/i386/i386.c (type_natural_mode): Use gcc_unreachable and
2254         gcc_assert instead of abort.
2255         (classify_argument, examine_argument, construct_container,
2256         contains_128bit_aligned_vector_p, ix86_check_movabs,
2257         standard_80387_constant_opcode, standard_80387_constant_rtx,
2258         ix86_initial_elimination_offset, ix86_compute_frame_layout,
2259         pro_epilogue_adjust_stack, ix86_expand_epilogue,
2260         ix86_address_cost, legitimate_address_p, legitimize_pic_address,
2261         legitimize_tls_address, output_pic_addr_const,
2262         i386_output_dwarf_dtprel, put_condition_code, print_reg,
2263         get_some_local_dynamic_name, print_operand, print_operand_address,
2264         output_387_binary_op, emit_i387_cw_initialization,
2265         output_fix_trunc, output_fp_compare, ix86_output_addr_vec_elt,
2266         ix86_expand_clear, ix86_expand_binary_operator,
2267         ix86_expand_unary_operator, ix86_match_ccmode, ix86_cc_mode,
2268         ix86_cc_modes_compatible, ix86_fp_comparison_codes,
2269         ix86_fp_comparison_arithmetics_cost, ix86_expand_fp_compare,
2270         ix86_expand_branch, ix86_expand_setcc,
2271         ix86_expand_carry_flag_compare, ix86_expand_fp_movcc,
2272         ix86_expand_int_addcc, ix86_split_to_parts, ix86_split_long_move,
2273         ix86_expand_movmem, ix86_expand_call, assign_386_stack_local,
2274         memory_address_length, ix86_attr_length_immediate_default,
2275         ix86_attr_length_address_default, ix86_agi_dependant,
2276         x86_initialize_trampoline, ix86_init_mmx_sse_builtins,
2277         ix86_expand_binop_builtin, ix86_force_to_memory,
2278         ix86_secondary_memory_needed, ix86_avoid_jump_misspredicts,
2279         x86_emit_floatuns): Likewise.
2280         * config/i386/netware.c (gen_regparm_prefix,
2281         i386_nlm_strip_name_encoding): Likewise.
2282         * config/i386/winnt.c (i386_pe_mark_dllexport): Likewise.
2283
2284 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
2285
2286         * optabs.c (gen_condiational_trap): Remove #define.
2287         (add_equal_note): Assertify. Remove explicit indirection from
2288         call via function pointer.
2289         (expand_ternary_op, expand_simple_binop, expand_binop,
2290         expand_twoval_unop, expand_twoval_binop,
2291         expand_twoval_binop_libfunc, expand_simple_unop expand_unop,
2292         emit_unop_insn,  emit_no_conflict_block,  prepare_cmp_insn,
2293         prepare_operand emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
2294         prepare_float_lib_cmp, emit_conditional_move,
2295         emit_conditional_add, gen_add2_insn, gen_add3_insn,
2296         have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn,
2297         expand_float, expand_fix, debug_optab_libfuncs, gen_cond_trap,
2298         vector_compare_rtx, expand_vec_cond_expr): Likewise.
2299
2300 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
2301
2302         * vec.h: Update API to separate allocation mechanism from type.
2303         (VEC_safe_grow): New.
2304         * vec.c (calculate_allocation): New.
2305         (vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
2306         (vec_gc_free, vec_heap_free): Remove.
2307         * gengtype-lex.l (DEF_VEC_): Process mult-argument macros.  Adjust.
2308         (VEC): Likewise.
2309         (mangle_macro_name): New.
2310         (struct macro_def): New.
2311         (struct macro): Add multiple argument values.
2312         (macro_expans_end): New.
2313         (push_macro_expansion):  Chain on new macro. Process multiple
2314         args, create follow on expansion. Return follow on argument.
2315         (macro_input): Deal with multiple arguments.
2316         
2317         * tree.h: Define VEC(tree,heap) and VEC(tree,gc).
2318         (struct tree_binfo): Adjust.
2319         * basic-block.h: Define VEC(edge,gc).
2320         (struct edge_def): Adjust.
2321         (struct basic_block_def, struct edge_iterator): Likewise.
2322         (ei_container, ei_start_1, ei_last_1): Likewise.
2323         * cfg.c (connect_src, connect_dest): Likewise.
2324         * cfgrtl.c (force_nonfallthru_and_redirect)
2325         * dbxout.c (dbxout_type)
2326         * dwarf2out.c (gen_member_die)
2327         * lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
2328         (gcc_tree_to_linear_expression): Adjust.
2329         (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
2330         lbv_to_gcc_expression, lle_to_gcc_expression,
2331         lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
2332         perfect_nestify): Likewise.
2333         * lambda.h (gcc_loopnest_to_lambda_loopnest,
2334         lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
2335         * profile.c (instrument_values): Adjust.
2336         * tree-cfg.c (modified_noreturn_calls): Adjust.
2337         (remove_fallthru_edge): Likewise.
2338         * tree-dump.c (dequeue_and_dump): Adjust.
2339         * tree-flow-inline.h (mark_stmt_modified): Adjust.
2340         * tree-flow.h (modified_noreturn_calls): Adjust.
2341         (tree_on_heap): Remove. (yay!)
2342         (register_new_def): Adjust.
2343         * tree-into-ssa.c: Define VEC(int,heap).
2344         (block_defs_stack): Adjust.
2345         (find_idf, insert_phi_nodes, register_new_def,
2346         rewrite_initialize_block, rewrite_finalize_block,
2347         register_new_update_single, rewrite_update_init_block,
2348         rewrite_update_fini_block, rewrite_blocks,
2349         ssa_rewrite_finalize_block, ssa_register_new_def,
2350         ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
2351         * tree-loop-linear.c (linear_transform_loops): Adjust.
2352         * tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
2353         (push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
2354         * tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
2355         stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
2356         vrp_variables_stack): Adjust declarations.
2357         (tree_ssa_dominator_optimize): Adjust.
2358         (dom_opt_initialize_block, remove_local_expressions_from_table,
2359         restore_nonzero_vars_to_original_value,
2360         restore_vars_to_original_value,
2361         restore_currdefs_to_original_value, dom_opt_finalize_block,
2362         record_var_is_nonzero, record_cond, record_const_or_copy_1,
2363         optimize_stmt, update_rhs_and_lookup_avail_expr,
2364         lookup_avail_expr, record_range): Likewise.
2365         * tree-ssa-pre.c: Define VEC(basic_block,heap).
2366         (compute_antic_aux): Adjust.
2367         (inserted_exprs, create_expression_by_pieces, 
2368         insert_into_preds_of_block, eliminate, mark_operand_necessary, 
2369         remove_dead_inserted_code, fini_pre): Likewise.
2370         * tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
2371         (varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist. 
2372         ssa_prop_init): Likewise.
2373         * tree-ssa.c: Define VEC(bitmap,heap).
2374         (verify_name_tags): Adjust.
2375         * value-prof.c (rtl_divmod_values_to_profile): Adjust.
2376         (insn_prefetch_values_to_profile, rtl_find_values_to_profile,
2377         tree_divmod_values_to_profile, tree_find_values_to_profile,
2378         value_profile_transformations): Likewise.
2379         * value-prof.h: Define VEC(histogram_value,heap).
2380         * varasm.c: Remove alias_pair pointer typedef, define
2381         VEC(alias_pair,gc).
2382         (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
2383         
2384         * config/pa/pa.c (typedef extern_symbol): Typedef the structure,
2385         not a pointer to it.  Create an object vector.
2386         (extern_symbols): Turn into an object vector.
2387         (pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
2388
2389 2005-04-21  Sebastian Pop  <pop@cri.ensmp.fr>
2390
2391         PR/20742
2392         * Makefile.in (tree-chrec.o): Depend on params.h.
2393         * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
2394         default value 20.
2395         * tree-chrec.c: Depend on params.h.  Replace build with buildN,
2396         and fold build with fold_buildN.
2397         (chrec_fold_plus_1): Fail with a chrec_don_know when the size of
2398         the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
2399         (tree_contains_chrecs): Compute an estimation of the size of the
2400         given expression.
2401         * tree-chrec.h (tree_contains_chrecs): Modify its declaration.
2402         (tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
2403         * tree-scalar-evolution.c (simple_iv): Ditto.
2404         * doc/invoke.texi (scev-max-expr-size): Documented.
2405
2406 2005-04-21  Richard Sandiford  <rsandifo@redhat.com>
2407
2408         * config.gcc (*-*-darwin*): Add darwin.opt to $extra_options.
2409         (i[34567]86-pc-msdosdjgpp*): Likewise i386/djgpp.opt.
2410         (i[34567]86-*-lynxos*, powerpc-*-lynxos*): Likewise lynx.opt.
2411         (i[34567]86-*-sco3.2v5*): Likewise i386/sco5.opt.
2412         (i[34567]86-*-pe, i[34567]86-*-cygwin*, i[34567]86-*-mingw32*)
2413         (i[34567]86-*-uwin*): Likewise i386/cygming.opt.
2414         * config/darwin.h (darwin_one_byte_bool, darwin_fix_and_continue)
2415         (darwin_fix_and_continue_switch, SUBTARGET_OPTIONS): Delete.
2416         * config/darwin.c (darwin_one_byte_bool, darwin_fix_and_continue)
2417         (darwin_fix_and_continue_switch): Delete.
2418         * config/lynx.h (SUBTARGET_OS_LYNX_SWITCHES): Delete.
2419         (SUBTARGET_SWITCHES): Delete.
2420         * config/i386/i386.h (target_flags, MASK_80387, MASK_RTD)
2421         (MASK_ALIGN_DOUBLE, MASK_SVR3_SHLIB, MASK_IEEE_FP, MASK_FLOAT_RETURNS)
2422         (MASK_NO_FANCY_MATH_387, MASK_OMIT_LEAF_FRAME_POINTER)
2423         (MASK_STACK_PROBE, MASK_NO_ALIGN_STROPS, MASK_INLINE_ALL_STROPS)
2424         (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS, MASK_MMX)
2425         (MASK_SSE, MASK_SSE2, MASK_SSE3, MASK_3DNOW, MASK_3DNOW_A)
2426         (MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT)
2427         (MASK_TLS_DIRECT_SEG_REFS, MASK_NO_RED_ZONE, TARGET_80387)
2428         (TARGET_RTD, TARGET_ALIGN_DOUBLE, TARGET_PUSH_ARGS)
2429         (TARGET_ACCUMULATE_OUTGOING_ARGS, TARGET_SVR3_SHLIB, TARGET_IEEE_FP)
2430         (TARGET_128BIT_LONG_DOUBLE, TARGET_NO_FANCY_MATH_387)
2431         (TARGET_USE_FANCY_MATH_387, TARGET_OMIT_LEAF_FRAME_POINTER)
2432         (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Delete.
2433         (TARGET_FLOAT_RETURNS_IN_80387): Make an alias of TARGET_FLOAT_RETURNS.
2434         (TARGET_64BIT): Undef before redefining.
2435         (TARGET_TLS_DIRECT_SEG_REFS, TARGET_STACK_PROBE)
2436         (TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS, TARGET_SSE)
2437         (TARGET_SSE2, TARGET_SSE3, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A)
2438         (TARGET_RED_ZONE, TARGET_USE_MS_BITFIELD_LAYOUT, TARGET_SWITCHES)
2439         (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS)
2440         (ix86_fpmath_string, ix86_tls_dialect_string, ix86_cmodel_string)
2441         (ix86_asm_string, ix86_regparm, ix86_regparm_string)
2442         (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
2443         (ix86_debug_arg_string, ix86_debug_addr_string)
2444         (ix86_align_loops_string, ix86_align_jumps_string)
2445         (ix86_align_funcs_string): Delete.
2446         * config/i386/cygming.h (MASK_NOP_FUN_DLLIMPORT)
2447         (TARGET_NOP_FUN_DLLIMPORT, SUBTARGET_SWITCHES): Delete.
2448         * config/i386/djgpp.h (MASK_BNU210, SUBTARGET_SWITCHES): Delete.
2449         (SUBTARGET_OVERRIDE_OPTIONS): Check TARGET_BNU210.
2450         * config/i386/lynx.h (SUBTARGET_SWITCHES): Delete.
2451         * config/i386/sco5.h (MASK_COFF, TARGET_ELF)
2452         (SUBTARGET_SWITCHES): Delete.
2453         * config/i386/i386.c (ix86_debug_arg_string): Delete.
2454         (ix86_debug_addr_string): Delete.
2455         (ix86_cmodel_string, ix86_asm_string, ix86_tls_dialect_string)
2456         (ix86_fpmath_string, ix86_regparm_string, ix86_regparm)
2457         (ix86_align_loops_string, ix86_align_jumps_string)
2458         (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
2459         (ix86_align_funcs_string): Make static.
2460         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2461         (ix86_handle_option): New function.
2462         (TARGET_USE_MS_BITFIELD_LAYOUT): Delete.
2463         (ix86_ms_bitfield_layout_p): Check TARGET_MS_BITFIELD_LAYOUT.
2464         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove handling
2465         of darwin_fix_and_continue_switch.
2466         (darwin_one_byte_bool): Delete.
2467         * config/rs6000/lynx.h (EXTRA_SUBTARGET_SWITCHES): Delete.
2468         * config/rs6000/rs6000.c (rs6000_override_options): Update assignment
2469         to darwin_one_byte_bool.
2470         * config/darwin.opt, config/lynx.opt, config/i386/cygming.opt,
2471         * config/i386/djgpp.opt, config/i386/i386.opt,
2472         * config/i386/sco5.opt: New files.
2473
2474 2005-04-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
2475
2476         * config/sparc/sparc.c (reg_or_0_operand, const1_operand,
2477         fp_zero_operand, fp_register_operand, intreg_operand,
2478         fcc_reg_operand, fcc0_reg_operand, icc_or_fcc_reg_operand,
2479         call_operand, call_operand_address, tgd_symbolic_operand,
2480         tld_symbolic_operand, tie_symbolic_operand, tle_symbolic_operand,
2481         symbolic_operand, symbolic_memory_operand, label_ref_operand,
2482         sp64_medium_pic_operand, data_segment_operand,
2483         text_segment_operand, splittable_symbolic_memory_operand,
2484         reg_or_nonsymb_mem_operand, splittable_immediate_memory_operand,
2485         eq_or_neq, normal_comp_operator, noov_compare_op,
2486         noov_compare64_op, v9_regcmp_op, extend_op, cc_arithop,
2487         cc_arithopn, arith_operand, arith_4096_operand, arith_add_operand,
2488         const64_operand, const64_high_operand, arith11_operand,
2489         arith10_operand, arith_double_operand, arith_double_4096_operand,
2490         arith_double_add_operand, arith11_double_operand,
2491         arith10_double_operand, small_int, small_int_or_double,
2492         uns_small_int, uns_arith_operand, clobbered_register,
2493         input_operand, compare_operand): Delete.
2494         (sparc_emit_set_const32): Use predicates in assertion.  Remove special
2495         code for TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT != 64.
2496         (sparc_emit_set_const64): Call gcc_unreachable if H_B_P_W_I == 32.
2497         (GEN_HIGHINT64, GEN_INT64): Delete.
2498         (sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
2499         gen_safe_XOR64): Adjust for above deletion.
2500         (sparc_emit_set_const64): Support only H_B_P_W_I == 64 and CONST_INTs.
2501         Use 'unsigned HOST_WIDE_INT' instead of 'long' for bitmask.
2502         (legitimate_constant_p): Use const_zero_operand instead.
2503         (sparc_extra_constraint_check): Likewise.
2504         * config/sparc/sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'O'.
2505         (PREFERRED_RELOAD_CLASS): Use const_zero_operand.
2506         (PREDICATE_CODES): Delete.
2507         * config/sparc/sparc.md: Include predicates.md.
2508         (All patterns): Adjust for new predicate names.
2509         (cmpdi, cmpdi_sp64): Use arith_operand predicate.
2510         (movhi_const64_special, movsi_const64_special): Add 'K' constraint.
2511         (movdi): Use general_operand predicate.
2512         (movdi_sp64_dbl): Delete.
2513         (movdi_const64_special): Add 'N' constraint.
2514         (movdicc): Use arith10_operand predicate.
2515         (movdi_cc_sp64, movdi_cc_sp64_trunc): Use arith11_operand predicate.
2516         (movdi_cc_reg_sp64): Use arith10_operand predicate.
2517         (movdi_cc_reg_sp64_trunc): Delete.
2518         (cmp_zero_extract, cmp_zero_extract_sp64): Use small_int_operand.
2519         (adddi3_sp64, cmp_ccx_plus, cmp_ccx_plus_set): Use arith_operand.
2520         (subdi3_sp32): Delete.
2521         (subdi3_insn_sp32): Change to define_insn_and_split.
2522         (subdi3_sp64, cmp_minus_ccx, cmp_minus_ccx_set): Use arith_operand.
2523         (muldi3, muldi3_sp64, muldi3_v8plus): Likewise.
2524         (smulsi3_highpart_v8plus, const_smulsi3_highpart_v8plus,
2525         umulsi3_highpart_v8plus, const_umulsi3_highpart_v8plus): Use
2526         small_int_operand predicate.
2527         (divdi3, udivdi3): Use arith_operand predicate.
2528         (udivsi3, udivsi3_sp32, udivsi3_sp64): Use nonimmediate_operand.
2529         (and<V64I>3_sp64, ior<V64I>3_sp64, xor<V64I:mode>3_sp64,
2530         xor_not_<V64I:mode>_sp64) : Use arith_operand predicate.
2531         (xordi3_sp64_dbl): Delete.
2532         (cmp_ccx_arith_op, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
2533         cmp_ccx_xor_not_set, cmp_ccx_arith_op_not, cmp_ccx_arith_op_not_set,
2534         cmp_ccx_neg, cmp_ccx_set_neg, one_cmpl<V64I>2_sp64, cmp_ccx_not,
2535         cmp_ccx_set_not): Use arith_operand predicate.
2536         (ashrsi3_extend2, lshrsi3_extend2 et al.): Use small_int_operand.
2537         * config/sparc/predicates.md: New file.
2538
2539 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
2540
2541         PR tree-optimization/14846
2542         * fold-const.c (fold_single_bit_test_into_sign_test): New,
2543         split out from ...
2544         (fold_single_bit_test): ... here.
2545         (fold_binary): Call fold_single_bit_test_into_sign_test
2546         instead of fold_single_bit_test.
2547
2548 2005-04-20  James E Wilson  <wilson@specifixinc.com>
2549
2550         PR c++/20805
2551         * dwarf2out.c (gen_variable_die): Don't emit a specification if this
2552         is another declaration.
2553
2554 2005-04-21  Hans-Peter Nilsson  <hp@axis.com>
2555
2556         * config/cris/predicates.md: New file.
2557         * config/cris/cris-protos.h (cris_store_multiple_op_p)
2558         (cris_movem_load_rest_p): Declare.
2559         * config/cris/cris.c (cris_store_multiple_op): Return bool, not int.
2560         (cris_movem_load_rest_p): Ditto.  Globalize.
2561         (cris_bdap_operand, cris_bdap_biap_operand,
2562         cris_orthogonal_operator, cris_commutative_orth_op,
2563         cris_operand_extend_operator,
2564         cris_additive_operand_extend_operator, cris_extend_operator,
2565         cris_plus_or_bound_operator, cris_mem_op,
2566         cris_general_operand_or_symbol,
2567         cris_general_operand_or_gotless_symbol,
2568         cris_general_operand_or_plt_symbol, cris_mem_call_operand,
2569         cris_load_multiple_op): Remove predicate functions.
2570         (cris_symbol, cris_gotless_symbol) <case UNSPEC>: Return 0, don't
2571         abort, for UNSPECs other than CRIS_UNSPEC_PLT.
2572         * config/cris/cris.h (PREDICATE_CODES): Don't define.
2573         * config/cris/cris.md: Include predicates.md.
2574         ("call", "call_value"): Generate CONSTs of Pmode, not VOIDmode.
2575
2576 2005-04-20  Ian Lance Taylor  <ian@airs.com>
2577
2578         * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
2579         * c-common.h (STMT_EXPR_STMT): Don't define.
2580         (STMT_EXPR_NO_SCOPE): Don't define.
2581         * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
2582         * c-pretty-print.c (pp_c_primary_expression): Likewise.
2583         (pp_c_expression): Likewise.
2584
2585 2005-04-20  Richard Henderson  <rth@redhat.com>
2586
2587         PR target/21100
2588         * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
2589
2590 2005-04-20  Jeff Law  <law@redhat.com>
2591
2592         * reload1.c (reload): Ignore equivalences between pseudos and
2593         read only memory.
2594
2595 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
2596
2597         PR c/12913
2598         * c-tree.h (struct c_label_list): Update comment.
2599         (struct c_label_context): Rename to struct c_label_context_se.
2600         (label_context_stack): Rename to label_context_stack_se.
2601         (C_DECL_UNJUMPABLE_VM, C_DECL_UNDEFINABLE_VM, struct
2602         c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
2603         c_end_vm_scope): New.
2604         (C_DECL_DECLARED_BUILTIN, C_DECL_USED): Use FUNCTION_DECL_CHECK.
2605         * c-decl.c (pop_scope): Call c_end_vm_scope.
2606         (pushdecl): Call c_begin_vm_scope for variably modified
2607         declarations.
2608         (define_label): Check for jumping into scope of identifier with
2609         variably modified type.  Push label on stack for those defined at
2610         current context of identifiers with variably modified type.
2611         (start_function): Create stack level for context of identifiers
2612         with variably modified type.
2613         (finish_function): Pop stack level for context of identifiers with
2614         variably modified type.
2615         * c-typeck.c (label_context_stack): Rename to
2616         label_context_stack_se.
2617         (label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
2618         (c_finish_goto_label): Check for jumping into scope of identifier
2619         with variably modified type.  Push label on stack for those jumped
2620         to from current context of identifiers with variably modified
2621         type.
2622         (struct c_switch): Add blocked_vm.
2623         (c_start_case): Initialize blocked_vm.
2624         (do_case): Check blocked_vm.
2625         (c_finish_case): Add comment.
2626         (c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
2627         variable label_context_stack.
2628
2629 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
2630
2631         * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
2632         conditional_replacement, value_replacement, abs_replacement,
2633         minmax_replacement.
2634         (replace_phi_edge_with_variable): Remove argument BB.
2635         (conditional_replacement, value_replacement,
2636         minmax_replacement, abs_replacement): Remove argument PHI_BB.
2637         Update a call to replace_phi_edge_with_variable.
2638
2639         * tree-ssa-phiopt.c: Fix comments.
2640
2641 2005-04-20  Michael Matz  <matz@suse.de>
2642
2643         PR20973
2644         * reload.c (push_reload, find_dummy_reload): Check for uninitialized
2645         pseudos.
2646
2647 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
2648
2649         * tree-ssa-phiopt.c: Fix comment typos.
2650
2651         PR tree-optimization/21116
2652         * tree-ssa-phiopt.c: Fix a typo.
2653
2654 2005-04-19  Richard Henderson  <rth@redhat.com>
2655
2656         * builtins.c (expand_builtin_sync_operation): Revert last change.
2657         * optabs.c (expand_bool_compare_and_swap): Compare vs old value,
2658         not vs new value.
2659         (expand_compare_and_swap_loop): Likewise.
2660         (expand_sync_operation): Remove fallback from NAND to AND; invert
2661         memory operand when expanding from cmpxchg.
2662         (expand_sync_fetch_operation): Likewise.
2663         * doc/extend.texi (Atomic Builtins): Fix docs for nand and
2664         compare-and-swap.
2665
2666         * config/alpha/alpha.c (alpha_split_atomic_op): Invert memory operand
2667         when implementing NAND.  Fix double-add for AFTER.
2668         * config/alpha/sync.md (sync_nand<I48MODE>): Invert memory operand.
2669         (sync_old_nand<I48MODE>, sync_new_nand<I48MODE>): Likewise.
2670         (sync_compare_and_swap<I48MODE>): Fix compare vs zero.  Return old
2671         memory value.
2672         (sync_lock_test_and_set<I48MODE>): Remove extra label and last
2673         memory barrier.
2674
2675         * config/i386/sync.md (sync_compare_and_swap<IMODE>): Fix pattern
2676         to return old memory value.
2677         (sync_compare_and_swap_cc<IMODE>): Likewise.
2678
2679         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Early
2680         return pre-reload.  Don't consider output or anti dependencies.
2681         * config/ia64/sync.md (IMODE): New.
2682         (modesuffix): Add QI and HI.
2683         (memory_barrier): Simplify expansion.
2684         (sync_compare_and_swap<IMODE>): Use IMODE, not I48MODE.
2685         (cmpxchg_acq_<IMODE>): Likewise.
2686         (sync_lock_test_and_set<IMODE>): Likewise.
2687         (sync_lock_release<IMODE>): Likewise.
2688
2689 2005-04-19  James A. Morrison  <phython@gcc.gnu.org>
2690
2691         * fold-const.c (fold_binary): Fold ~(X ^ Y) to ~X ^ Y or X ^ ~Y if
2692         ~X or ~Y simplify.
2693
2694 2005-04-19  James A. Morrison  <phython@gcc.gnu.org>
2695
2696         * fold-const (fold_binary):  Fold ~X ^ ~ Y to X ^ Y.
2697
2698 2005-04-20  Michael Pogue  <michael.pogue@sun.com>
2699             Joseph S. Myers  <joseph@codesourcery.com>
2700
2701         * c.opt (Wint-to-pointer-cast, Wpointer-to-int-cast): New options.
2702         * c-typeck.c (build_c_cast): Check these options.
2703         * doc/invoke.texi: Document these options.
2704
2705 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
2706
2707         * tree-ssa-phiopt.c: Update a comment about the pass.
2708
2709 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
2710
2711         * tree-ssa-phiopt.c, config/arm/arm.c, config/fr30/fr30.md,
2712         config/mcore/mcore.c: Fix comment typos.
2713
2714 2005-04-19  Daniel Jacobowitz  <dan@codesourcery.com>
2715
2716         * Makefile.in (libgcc.mk): Pass GCC_FOR_TARGET.
2717         * mklibgcc.in: Use $GCC_FOR_TARGET instead of ./xgcc.
2718
2719 2005-04-19  Paul Brook  <paul@codesourcery.com>
2720
2721         * config/arm/arm.c (arm_init_libfuncs): Clear mod optabs. 
2722
2723 2005-04-19  Andrew Haley  <aph@redhat.com>
2724
2725         PR java/21022
2726         * dbxout.c (dbxout_type_fields): Check DECL_IGNORED_P before
2727         looking at a field's bitpos.
2728
2729 2005-04-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2730
2731         * system.h (fopen, fdopen, freopen): Define these to the unlocked
2732         libiberty functions.
2733
2734 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
2735
2736         PR tree-optimization/21096
2737         * tree-ssa-copy.c (fini_copy_prop): Free cached_last_copy_of.
2738
2739 2005-04-19  Alan Modra  <amodra@bigpond.net.au>
2740
2741         PR target/21098
2742         * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
2743         * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.
2744
2745 2005-04-19  Alexandre Oliva  <aoliva@redhat.com>
2746
2747         * tree-cfg.c (dump_function_to_file): Use cfun info only if it
2748         refers to the function being dumped.
2749
2750 2005-04-18  Daniel Jacobowitz  <dan@codesourcery.com>
2751
2752         * varasm.c (assemble_start_function): Remove reset of in_section.
2753
2754 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
2755
2756         PR tree-optimization/21085
2757         * fold-const (fold_binary): Don't change X % -C to X % C if C has
2758         overflowed.
2759
2760 2005-04-19  Ben Elliston  <bje@au.ibm.com>
2761
2762         * doc/invoke.texi (Optimize Options): Refer to the correct
2763         optimisation flag -ftree-dominator-opts, not -ftree-dom.
2764
2765 2005-04-18  Christopher Jaillet <christophe.jaillet@wanadoo.fr>
2766
2767         * config/rs6000/rs6000.c (machopic_output_stub):  Increase
2768         alloca argument to be big enough.
2769
2770 2005-04-18  Alexandre Oliva  <aoliva@redhat.com>
2771
2772         PR middle-end/21049
2773         * tree-cfg.c (dump_function_to_file): Do not crash if cfun or
2774         cfun->cfg are NULL.
2775
2776 2005-04-18  Tom Tromey  <tromey@redhat.com>
2777
2778         * cgraphunit.c (cgraph_finalize_compilation_unit): Fix a comment
2779         typo.
2780
2781 2005-04-18  Richard Henderson  <rth@redhat.com>
2782
2783         * config/alpha/alpha.c (alpha_split_atomic_op): New.
2784         (alphaev5_insn_pipe): Add LD_L, ST_C, MB types.
2785         (alphaev4_insn_pipe): Likewise.  Correct IST and LDSYM pipes.
2786         * config/alpha/alpha-protos.h: Update.
2787         * config/alpha/alpha.md (UNSPECV_MB, UNSPECV_LL, UNSPECV_SC): New.
2788         (UNSPECV_ATOMIC, UNSPECV_CMPXCHG, UNSPECV_XCHG): New.
2789         (attr type): Add ld_l, st_c, mb.
2790         (andsi_internal, andnotsi3, iorsi_internal, one_cmplsi_internal,
2791         iornotsi3, xorsi_internal, xornotsi3): New.
2792         * config/alpha/ev4.md (ev4_ld): Add ld_l.
2793         (ev4_ist_c, ev4_mb): New.
2794         * config/alpha/ev5.md (ev5_st): Add st_c, mb.
2795         (ev5_ld_l): New.
2796         * config/alpha/ev6.md (ev6_ild): Add ld_l.
2797         (ev6_ist): Add st_c.
2798         (ev6_mb): New.
2799         * config/alpha/sync.md: New file.
2800
2801 2005-04-18  Richard Henderson  <rth@redhat.com>
2802
2803         * builtins.c (expand_builtin_sync_operation): Fold nand to and
2804         for constants.
2805
2806         * optabs.c (expand_sync_operation): Fix typo expanding nand to and.
2807
2808 2005-04-18  Devang Patel  <dpatel@apple.com>
2809
2810         * config/rs6000/atlivec.md (mulv4si3): New pattern.
2811         
2812 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
2813
2814         PR tree-optimization/20922
2815         * fold-const.c (fold_binary): Fold X - c > X and X + c < X to false.
2816         Fold X + c >= X and fold X - c <= X to true.
2817
2818 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
2819
2820         * config/ia64/unwind-ia64.c (emergency_reg_state_free): Make an
2821         unsigned int.
2822         (emergency_labeled_state_free): Likewise.
2823
2824 2005-04-18  Nick Clifton  <nickc@redhat.com>
2825
2826         * config/h8300/h8300.md (jump): Remove prescan parameter from
2827         calls to final_scan_insn.
2828
2829         * config/arc/arc.c (arc_output_function_epilogue): Remove prescan
2830         parameter from calls to final_scan_insn.
2831
2832         * config.gcc (m68hc12): Use the m68hc11.opt file for target
2833         specific options.
2834         (v850e, v850e1): Use the v850.opt file for target specific
2835         options.
2836
2837 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
2838
2839         PR tree-optimization/21001
2840         * tree-optimize.c (init_tree_optimization_passes): Move the
2841         first pass_forwprop immediately before pass_vrp.
2842
2843 2005-04-17  Ian Lance Taylor  <ian@airs.com>
2844
2845         * c-common.def (SIZEOF_EXPR, ARROW_EXPR, ALIGNOF_EXPR): Remove.
2846         * c-common.c (c_sizeof_or_alignof_type): Change second parameter
2847         from enum tree_code op to bool is_sizeof.
2848         * c-common.h (c_sizeof_or_alignof_type): Update declaration.
2849         (c_sizeof, c_alignof): Update calls to c_sizeof_or_alignof_type.
2850         * c-pretty-print.c (pp_c_postfix_expression): Remove ARROW_EXPR
2851         case.
2852         (pp_c_unary_expression): Remove SIZEOF_EXPR and ALIGNOF_EXPR
2853         cases.
2854         (pp_c_expression): Remove ARROW_EXPR, SIZEOF_EXPR, and
2855         ALIGNOF_EXPR cases.
2856
2857 2005-04-17  Ian Lance Taylor  <ian@airs.com>
2858
2859         * system.h: Poison DONT_ACCESS_GBLS_AFTER_EPILOGUE.
2860
2861 2005-04-17  Richard Henderson  <rth@redhat.com>
2862
2863         * config/alpha/alpha.c (va_list_skip_additions): Only define if
2864         TARGET_ABI_OSF.
2865         (TARGET_STDARG_OPTIMIZE_HOOK): Likewise.
2866         (alpha_stdarg_optimize_hook): Likewise.  Allow for one more round
2867         of indirection through ssa names while looking for the gpr counter
2868         field.
2869         (alpha_setup_incoming_varargs) <TARGET_ABI_OSF>: Make use of the
2870         saved va_list_gpr_size and va_list_fpr_size.
2871
2872 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
2873
2874         * tree-vrp.c (compare_values): Check that VAL1 and VAL2 are
2875         both pointers or both integers.
2876
2877         * tree-vrp.c (maybe_add_assert_expr): Don't assert
2878         ASSERT_EXPRs for single-use variable.
2879
2880         * tree-into-ssa.c: Fix a comment typo.
2881
2882 2005-04-17  Richard Sandiford  <rsandifo@redhat.com>
2883
2884         * config/mips/iris6.h (DRIVER_SELF_SPECS): Check -march as well as
2885         -mipsN before forcing a default of -mips2.
2886
2887 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
2888
2889         * predict.h (IS_TAKEN): Remove.
2890         * rtl.h (NOTE_PREDICTION): Likewise.
2891
2892         * modulo-sched.c (CFG_HOOKS): Remove.
2893
2894         * c-parser.c (N_C_TTYPES): Remove.
2895
2896         * tree-flow-inline.h (get_stmt_operands): Remove.
2897         * lambda-code.c, tree-ssa-loop-unswitch.c,
2898         tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa-propagate.c,
2899         tree-ssa-sink.c, tree-ssa.c, tree-tailcall.c,
2900         tree-vect-transform.c, tree-vectorizer.c, tree-vrp.c): Remove
2901         calls to get_stmt_operands.
2902         * doc/tree-ssa.texi: Don't mention get_stmt_operands.
2903
2904 2005-04-17  Richard Henderson  <rth@redhat.com>
2905
2906         PR target/20375
2907         * config/alpha/alpha.c (alpha_setup_incoming_varargs): Advance a copy
2908         of CUMULATIVE_ARGS past the last named argument.
2909         (alpha_va_start): Expect pretend_args_size only if strictly less than
2910         6 named arguments.
2911
2912 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
2913
2914         PR middle-end/21024
2915         * builtins.c (expand_builtin_strcat): Convert the result of
2916         strlen to the right type.
2917         * fold-const.c (fold_binary) <PLUS_EXPR>: Use fold_convert to
2918         avoid creating type mismatches.
2919         <GE_EXPR>: Pass op0 and op1 to fold_build2 to avoid creating
2920         type mismatches.
2921
2922         * c-lex.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Remove.
2923
2924 2005-04-16  Richard Henderson  <rth@redhat.com>
2925
2926         PR target/21051
2927         * builtins.c (expand_builtin) <BUILT_IN_BOOL_COMPARE_AND_SWAP_*>:
2928         Use the mode of boolean_type_node when the user doesn't provide one.
2929         * config/ia64/sync.md (sync_lock_release<I48MODE>): Use operand 1.
2930
2931 2005-04-16  Alexandre Oliva  <aoliva@redhat.com>
2932
2933         PR target/20126
2934         * loop.c (loop_givs_rescan): Handle non-replaceable (plus (reg)
2935         (const)).
2936
2937         * tree-scalar-evolution.c (interpret_rhs_modify_expr): Fix typo in
2938         comment.
2939
2940 2005-04-16  Roger Sayle  <roger@eyesopen.com>
2941             Steven Bosscher  <stevenb@suse.de>
2942
2943         * fold-const.c (fold_binary_to_constant): Delete obsolete comment.
2944         (fold_unary_to_constant): Likewise.
2945
2946 2005-04-16  Kazu Hirata  <kazu@cs.umass.edu>
2947
2948         * basic-block.h: Adjust the value of PROP_SCAN_DEAD_STORES,
2949         PROP_ASM_SCAN.
2950
2951 2005-04-16  Gerald Pfeifer  <gerald@pfeifer.com>
2952
2953         * doc/install.texi (Specific): Avoid using asterisks in @anchor
2954         names related to target triplets.
2955         Remove i?86-*-esix from platform directory.
2956         Remove powerpc-*-eabiaix from platform directory.
2957
2958 2005-04-16  Joseph S. Myers  <joseph@codesourcery.com>
2959
2960         PR middle-end/20491
2961         * config/ia64/ia64.c (rtx_needs_barrier): Recurse instead of
2962         falling through from SUBREG case to REG.
2963
2964 2005-04-15  Roger Sayle  <roger@eyesopen.com>
2965
2966         * fold-const.c (fold_relational_hi_lo): Delete function and prototype.
2967         (fold_binary): Update comment mentioning fold_relational_hi_lo.
2968         (fold_binary_to_constant): Simplify using fold_binary.
2969         (fold_unary_to_constant): Likewise, simplify using fold_unary.
2970
2971 2005-04-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2972
2973         * gthr-posix.c (pthread_cancel): Define.
2974         (pthread_mutexattr_init): Likewise.
2975         (pthread_mutexattr_settype): Likewise.
2976         (pthread_mutexattr_destroy): Likewise.
2977
2978 2005-04-15  David S. Miller  <davem@davemloft.net>
2979
2980         PR target/20673
2981         * config/sparc/sparc.h (sparc_hard_reg_printed): Mark as GTY(()).
2982
2983 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
2984
2985         PR tree-optimization/21031
2986         * tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): New.
2987         (forward_propagate_into_cond_1): Call it.  Forward propagate
2988         integer-integer casts into COND_EXPRs.
2989
2990 2005-04-15  Dave Korn  <dave.korn@artimi.com>
2991
2992         * gcc.c (default_compilers): Clarify obscure error message when
2993         reading from standard input.
2994
2995 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
2996
2997         * basic-block.h (PROP_EQUAL_NOTES): Remove.
2998         * flow.c (propagate_one_insn): Don't use PROP_EQUAL_NOTES.
2999
3000         * tree-ssa-alias.c (init_alias_info): Remove a call to
3001         get_stmt_operands.
3002
3003 2005-04-15  Andrew MacLeod  <amacleod@redhat.com>
3004
3005         * tree-vect-analyze.c (vect_stmt_relevant_p): Process immediate uses
3006         of non-virtual PHI nodes like we use to.
3007
3008 2005-05-15  Paolo Bonzini  <bonzini@gnu.org>
3009
3010         * genattrtab.c (ATTR_EQ_ATTR_P): Remove.
3011         (attr_copy_rtx): Do not use it.
3012
3013 2005-04-15  Andrew Macleod  <amacleod@redhat.com>
3014
3015         * doc/tree-ssa.texi: Grammer/abbreviation updates.
3016
3017 2005-04-15  Diego Novillo  <dnovillo@redhat.com>
3018
3019         * tree-vect-transform.c (vectorizable_store): Mark necessary
3020         objects in the vectorized store needing renaming.  Update the
3021         SSA graph for V_MAY_DEF operands in the original store.
3022
3023 2005-04-14  Daniel Berlin <dberlin@dberlin.org>
3024
3025         * tree-ssa-pre.c (compute_avail): It's okay to have
3026         TREE_INVARIANT's here, and value number the resulting expressions.
3027         (create_expression_by_pieces): Make sure operands that were
3028         min_invariant when we started, stay that way.
3029
3030 2005-04-15  David Edelsohn  <edelsohn@gnu.org>
3031
3032         * doc/install.texi (*-ibm-aix*): Add comment about system limits.
3033
3034 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
3035
3036         PR tree-optimization/20936.
3037         * tree-ssa-ccp.c (visit_assignment): Fix a typo.
3038
3039 2005-04-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3040
3041         * doc/invoke.texi: Fix typos.
3042         * doc/md.texi: Likewise.
3043         * doc/rtl.texi: Likewise.
3044         * doc/sourcebuild.texi: Likewise.
3045         * doc/tm.texi: Likewise.
3046
3047 2005-04-15  Uros Bizjak  <uros@kss-loka.si>
3048
3049         PR tree-optimization/21004
3050         * convert.c (convert_to_integer): Convert ceilf, ceill, floorf
3051         and floorl in c99 mode only.
3052         * builtins.c (expand_builtin_int_roundingfn): Assert that
3053         fallback_fndecl is not NULL_TREE.
3054
3055 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
3056
3057         * cfgrtl.c (purge_all_dead_edge): Remove an unused argument.
3058         * basic-block.h: Update the prototype for
3059         purge_all_dead_edges.
3060         * cfgexpand.c (tree_expand_cfg): Update a call to
3061         purge_all_dead_edges.
3062         * combine.c (combine_instructions): Likewise.
3063         * passes.c (rest_of_handle_old_regalloc, rest_of_handle_cse,
3064         rest_of_handle_cse2, rest_of_handle_gcse,
3065         rest_of_handle_postreload): likewise.
3066
3067 2005-04-15  Alexandre Oliva  <aoliva@redhat.com>
3068
3069         PR middle-end/20739
3070         * gimplify.c (gimplify_addr_expr): Compensate for removal of
3071         e.g. cv-qualification conversions.
3072
3073 2005-04-14  Mike Stump  <mrs@apple.com>
3074
3075         * config/darwin-c.c (framework_construct_pathname): We must
3076         find all headers of a framework in the first instance of it
3077         found in the seach path.
3078
3079 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
3080
3081         PR tree-optimization/21021
3082         * tree-vrp.c (compare_values): Work around a bug in the front
3083         end that produces a comparison of mismatched types.
3084
3085 2004-04-14  Richard Henderson  <rth@redhat.com>
3086
3087         * config/ia64/ia64.h (enum fetchop_code): Remove.
3088         (enum ia64_builtins): Move ...
3089         * config/ia64/ia64.c (enum ia64_builtins): ... here.  Remove all
3090         members except BSP and FLUSHRS.
3091         (ia64_init_builtins): Remove __sync builtins.
3092         (ia64_expand_builtin): Likewise.
3093         (ia64_expand_fetch_and_op, ia64_expand_op_and_fetch): Remove.
3094         (ia64_expand_compare_and_swap, ia64_expand_lock_test_and_set): Remove.
3095         (ia64_expand_lock_release): Remove.
3096         * config/ia64/ia64.md (mf): Move to sync.md.
3097         (mf_internal, fetchadd_acq_si, fetchadd_acq_di, cmpxchg_acq_si,
3098         cmpxchg_acq_di, xchgsi, xchgdi): Likewise.
3099         * config/ia64/sync.md: New file.
3100         (memory_barrier): Rename from mf.
3101         (fetchadd_acq_<I48MODE>): Macroize from _si/_di patterns.
3102         (cmpxchg_acq_<I48MODE>): Likewise.
3103         (sync_lock_test_and_set<I48MODE>): Likewise.
3104
3105         * config/ia64/ia64intrin.h: Define nothing for C; limit #defines
3106         to c++.  Remove __sync* declarations.  s/_si/_4/.  s/_di/_8/.
3107
3108 2004-04-14  Richard Henderson  <rth@redhat.com>
3109
3110         * config/i386/i386.c (x86_cmpxchg, x86_xadd): New.
3111         (ix86_compare_emitted): New.
3112         (ix86_expand_compare): Use ix86_compare_emitted if set.
3113         (ix86_expand_setcc): Only emit REG_EQUAL if both ix86_compare_op0
3114         and ix86_compare_op0 are set.
3115         * config/i386/i386.h (x86_cmpxchg, x86_xadd): Declare.
3116         (TARGET_CMPXCHG, TARGET_XADD): New.
3117         (ix86_compare_emitted): Declare.
3118         * config/i386/i386.md: Include sync.md
3119         (UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2): New.
3120         (UNSPECV_XCHG, UNSPECV_LOCK): New.
3121         * config/i386/sync.md: New file.
3122
3123 2004-04-14  Richard Henderson  <rth@redhat.com>
3124
3125         PR middle-end/14311
3126         * builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2,
3127         BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2,
3128         BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1,
3129         BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8,
3130         BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4,
3131         BT_FN_I8_VPTR_I8_I8): New.
3132         * builtins.def (DEF_SYNC_BUILTIN): New.
3133         (BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1,
3134         BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4,
3135         BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N,
3136         BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2,
3137         BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8,
3138         BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1,
3139         BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4,
3140         BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N,
3141         BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2,
3142         BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8,
3143         BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1,
3144         BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4,
3145         BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N,
3146         BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2,
3147         BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8,
3148         BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1,
3149         BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4,
3150         BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N,
3151         BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2,
3152         BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8,
3153         BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1,
3154         BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4,
3155         BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N,
3156         BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2,
3157         BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8,
3158         BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1,
3159         BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4,
3160         BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N,
3161         BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2,
3162         BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8,
3163         BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
3164         BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
3165         BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N,
3166         BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2,
3167         BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8,
3168         BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1,
3169         BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4,
3170         BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N,
3171         BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2,
3172         BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8,
3173         BUILT_IN_SYNCHRONIZE: New.
3174         * builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN
3175         as a function.  Accept __sync_ as a prefix as well.
3176         (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
3177         expand_builtin_lock_test_and_set, expand_builtin_synchronize,
3178         expand_builtin_lock_release): New.
3179         (expand_builtin): Call them.
3180         * c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if
3181         neither BOTH_P nor FALLBACK_P are defined.
3182         (builtin_type_for_size): New.
3183         (sync_resolve_size, sync_resolve_params, sync_resolve_return): New.
3184         (resolve_overloaded_builtin): New.
3185         * c-common.h (resolve_overloaded_builtin): Declare.
3186         (builtin_type_for_size): Declare.
3187         * c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin.
3188         * expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab,
3189         sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab,
3190         sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab,
3191         sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab,
3192         sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab,
3193         sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap,
3194         sync_compare_and_swap_cc, sync_lock_test_and_set,
3195         sync_lock_release): New.
3196         * optabs.h: Declare them.
3197         * expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap,
3198         expand_sync_operation, expand_sync_fetch_operation,
3199         expand_sync_lock_test_and_set): Declare.
3200         * genopinit.c (optabs): Add sync optabs.
3201         * optabs.c (init_optabs): Initialize sync optabs.
3202         (expand_val_compare_and_swap_1, expand_val_compare_and_swap,
3203         expand_bool_compare_and_swap, expand_compare_and_swap_loop,
3204         expand_sync_operation, expand_sync_fetch_operation,
3205         expand_sync_lock_test_and_set): New.
3206         * doc/extend.texi (Atomic Builtins): New section
3207         * doc/md.texi (Standard Names): Add sync patterns.
3208
3209 2005-04-14  Alexandre Oliva  <aoliva@redhat.com>
3210
3211         * tree-eh.c (lower_try_finally_copy): Generate new code in
3212         response to goto_queue entries as if the queue was sorted by
3213         index, not pointers.
3214         (lower_try_finally_switch): Likewise.
3215
3216 2005-04-14  Richard Henderson  <rth@redhat.com>
3217
3218         * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ...
3219         (ix86_expand_sse_movcc): ... here.  Take cmp as a pre-computed
3220         register.
3221         (ix86_expand_fp_movcc): Update to match.
3222         (ix86_expand_fp_vcond, ix86_expand_int_vcond): New.
3223         * config/i386/i386-protos.h: Update.
3224         * config/i386/sse.md (vcondv4sf, vcondv2df): New.
3225         (vcond<SSEMODE124>, vcondu<SSEMODE12>): New.
3226
3227 2005-04-14  Joseph S. Myers  <joseph@codesourcery.com>
3228
3229         * doc/cpp.texi, doc/install.texi: Change references to GCC 3.5 to
3230         refer to 4.0.
3231
3232 2005-04-14  Julian Brown  <julian@codesourcery.com>
3233
3234         * Revert elfos.h part of my patch from 2005-04-13 for causing libstdc++
3235         link failures on ppc64 Linux.
3236
3237 2005-04-14  Andreas Krebbel  <krebbel1@de.ibm.com>
3238
3239         * config.gcc: Set cpu_type for s390.
3240
3241 2005-04-14  Daniel Berlin  <dberlin@dberlin.org>
3242
3243         Fix PR tree-optimization/20963
3244         * tree-ssa-pre.c (compute_avail): Remove special case for
3245         TREE_INVARIANT.
3246         (create_expression_by_pieces): Add value numbers for forced out
3247         statements.
3248
3249 2005-04-14  Hans-Peter Nilsson  <hp@axis.com>
3250
3251         * config/cris/cris.md: Replace references to (reg:SI 16) with
3252         (reg:SI CRIS_SRP_REGNUM).
3253
3254 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
3255
3256         PR tree-optimization/20657
3257         * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to
3258         create an appropriate range from it.
3259
3260 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
3261
3262         * reg-stack.c (subst_stack_regs_pat): Handle <UNSPEC_FIST_FLOOR> and
3263         <UNSPEC_FIST_CEIL> case.
3264
3265         * config/i386/i386.md (UNSPEC_FIST_FLOOR, UNSPEC_FIST_CEIL): New.
3266         (*fist<mode>2_floor_1, fistdi2_floor, fistdi2_floor_with_temp)
3267         (fist<mode>2_floor, fist<mode>2_floor_with_temp): New isns patterns
3268         to implement lfloor and llfloor built-ins as x87 intrinsic function.
3269         (fistdi2_floor, fist<mode>2_floor splitters): New splitters.
3270         (lfloor<mode>2): New expanders.
3271         (*fist<mode>2_ceil_1, fistdi2_ceil, fistdi2_ceil_with_temp)
3272         (fist<mode>2_ceil, fist<mode>2_ceil_with_temp): New isns patterns
3273         to implement lceil and llceil built-ins as x87 intrinsic function.
3274         (fistdi2_ceil, fist<mode>2_ceil splitters): New splitters.
3275         (lceil<mode>2): New expanders.
3276
3277 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
3278
3279         * convert.c (convert_to_integer): Convert (long int)trunc{,f,l},
3280         and (long long int)ceil{,f,l} into FIX_TRUNC_EXPR.
3281
3282 2005-04-14  Ulrich Weigand  <uweigand@de.ibm.com>
3283
3284         PR target/20927
3285         * config/s390/s390-modes.def: Define TFmode.
3286
3287 2005-04-13  Richard Sandiford  <rsandifo@redhat.com>
3288
3289         * config/mips/mips.h (ASM_OUTPUT_CASE_LABEL): Delete.
3290         (JUMP_TABLES_IN_TEXT_SECTION): Define.
3291         * config/mips/mips.c (mips16_insn_length): Remove reference to
3292         JUMP_TABLES_IN_TEXT_SECTION.
3293
3294 2005-04-13 Fariborz Jahanian <fjahanian@apple.com>
3295
3296         * simplify-rtx.c (simplify_binary_operation_1): Return
3297         scalar or vector of constant 0, depending on the xor's
3298         mode.
3299
3300 2005-04-13  Dale Johannesen  <dalej@apple.com>
3301
3302         * objc/Make-lang.in (objc-lang.o):  Depend on tree-gimple.h.
3303         (objc-act.o):  Ditto.
3304         * objc/objc-act.c (objc_gimplify_expr):  New.
3305         (objc_get_callee_fndecl):  New.
3306         * objc/objc-act.h:  Include tree-gimple.h.  Declare new functions.
3307         * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR):  Define.
3308         (LANG_HOOKS_GET_CALLEE_FNDECL):  Define.
3309
3310 2005-04-13  Devang Patel  <dpatel@apple.com>
3311
3312         * tree-if-conv.c (tree_if_convert_cond_expr): Do not create extra
3313         temp variables.
3314
3315 2005-04-13  Hans-Peter Nilsson  <hp@axis.com>
3316
3317         CRIS prologue as RTL.
3318         * config/cris/cris-protos.h (cris_emit_movem_store)
3319         (cris_expand_prologue): Prototype.
3320         * config/cris/cris.c (struct machine_function): New member
3321         stdarg_regs.
3322         (cfa_label_num, cris_target_asm_function_prologue): Remove.
3323         (TARGET_ASM_FUNCTION_PROLOGUE): Don't override.
3324         (cris_general_operand_or_gotless_symbol): Accept CRIS_UNSPEC_GOT.
3325         (cris_load_multiple_op, cris_return_address_on_stack)
3326         (cris_return_address_on_stack_for_return): ISO-Cify.
3327         (cris_store_multiple_op): New predicate function.
3328         (cris_expand_prologue, cris_emit_movem_store): New functions.
3329         (cris_print_operand) <case 'O'>: Handle modifications other than
3330         post-increment.
3331         (cris_symbol, cris_got_symbol): Return 0 for CRIS_UNSPEC_GOT.
3332         (cris_gotless_symbol): Return 1 for CRIS_UNSPEC_GOT.
3333         (cris_gen_movem_load): Rearrange slightly to make local variable
3334         src a parameter, removing osrc.
3335         (cris_setup_incoming_varargs): Set machine_function member
3336         stdarg_regs to correspond to the number of registers that need to
3337         be saved.
3338         * config/cris/cris.h (EXTRA_CONSTRAINT_S): Accept
3339         CRIS_UNSPEC_GOT.
3340         (PREDICATE_CODES): Add cris_store_multiple_op.  Make
3341         cris_general_operand_or_gotless_symbol accept UNSPEC.
3342         * config/cris/cris.md (CRIS_UNSPEC_GOT): New constant.
3343         ("*movsi_internal") <alternative 8>: Handle CRIS_UNSPEC_GOT.
3344         ("*cris_store_multiple"): New pattern.  Tweak common comment above
3345         this and "*cris_load_multiple".
3346         ("prologue"): New define_expand.
3347
3348         * config/cris/cris.md ("epilogue"): Conditionalize on
3349         TARGET_PROLOGUE_EPILOGUE.
3350
3351 2005-04-13  Steve Ellcey  <sje@cup.hp.com>
3352
3353         PR target/20924
3354         * config/ia64/ia64.md (divsf3_internal_lat): Generate frcpa with
3355         fpsr 0 instead of fpsr 1.
3356         (divsf3_internal_thr): Ditto.
3357         (divdf3_internal_lat): Ditto.
3358         (divdf3_internal_thr): Ditto.
3359         (divxf3_internal_lat): Ditto.
3360         (divxf3_internal_thr): Ditto.
3361
3362 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
3363
3364         PR tree-optimization/20913
3365         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.
3366
3367         PR tree-optimization/20702
3368         * tree-vrp.c (maybe_add_assert_expr): Recurse into
3369         dominator children that haven't been walked into.
3370
3371 2005-04-13  Julian Brown  <julian@codesourcery.com>
3372
3373         * config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK from
3374         being used for symbols with vague linkage when HAVE_GAS_COMDAT_GROUP
3375         is true.
3376
3377 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
3378
3379         * basic-block.h, tree-ssa-uncprop.c, varasm.c,