OSDN Git Service

368698a40b8a08066f4f291bae8bb01c15e0cf30
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2
3         * config/ia64/ia64.c (ia64_encode_addr_area): Use gcc_assert and
4         gcc_unreachable as appropriate.
5         (ia64_expand_load_address, ia64_expand_tls_address,
6         ia64_split_tmode, ia64_split_tmode_move, ia64_expand_compare,
7         ia64_expand_vecint_compare, ia64_expand_vecint_minmax,
8         next_scratch_gr_reg, ia64_initial_elimination_offset,
9         ia64_expand_prologue, ia64_expand_epilogue,
10         ia64_output_dwarf_dtprel, ia64_print_operand,
11         ia64_register_move_cost, first_instruction, rws_access_regno,
12         update_set_flags, rtx_needs_barrier, group_barrier_needed_p,
13         ia64_sched_init, ia64_variable_issue,
14         ia64_first_cycle_multipass_dfs_lookahead_guard,
15         ia64_dfa_new_cycle, issue_nops_and_insn, get_template, bundling,
16         ia64_st_address_bypass_p, ia64_ld_address_bypass_p, process_set,
17         process_for_unwind_directive, ia64_hpux_file_end): Likewise.
18         * config/ia64/ia64.h (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
19         * config/ia64/ia64.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
20         * config/ia64/predicates.md (got_symbolic_operand,
21         sdata_symbolic_operand): Likewise.
22         * config/ia64/vect.md (vcondv2sf): Likewise.
23
24 2005-04-27  Matt Thomas <matt@3am-software.com>
25
26         * config/vax/vax.c (legitimate_constant_address_p): New.  Formerly
27         CONSTANT_ADDRESS_P in config/vax/vax.h
28         (legitimate_constant_p): Added.  Formerly CONSTANT_P in vax.h. 
29         (INDEX_REGISTER_P): New.
30         (BASE_REGISTER_P): New.
31         (indirectable_constant_address_p): New.  Adapted from
32         INDIRECTABLE_CONSTANT_ADDRESS_P in vax.h. Use SYMBOL_REF_LOCAL_P.
33         (indirectable_address_p): New.  Adapted from
34         INDIRECTABLE_ADDRESS_P in vax.h.
35         (nonindexed_address_p): New.  Adapted from
36         GO_IF_NONINDEXED_ADDRESS in vax.h.
37         (index_temp_p): New.  Adapted from INDEX_TERM_P in vax.h.
38         (reg_plus_index_p): New.  Adapted from GO_IF_REG_PLUS_INDEX in vax.h.
39         (legitimate_address_p): New.  Adapted from
40         GO_IF_LEGITIMATE_ADDRESS in vax.h.
41         (vax_mode_dependent_address_p): New.  Adapted from
42         GO_IF_MODE_DEPENDENT_ADDRESS in vax.h.
43         * config/vax/vax.h (CONSTANT_ADDRESS_P): Use
44         legitimate_constant_address_p.
45         (CONSTANT_P): Use legitimate_constant_p.
46         (INDIRECTABLE_CONSTANT_ADDRESS_P): Removed.
47         (INDIRECTABLE_ADDRESS_P): Removed.
48         (GO_IF_NONINDEXED_ADDRESS): Removed.
49         (INDEX_TEMP_P): Removed.
50         (GO_IF_REG_PLUS_INDEX): Removed.
51         (GO_IF_LEGITIMATE_ADDRESS): Use legitimate_address_p. Two
52         definitions, depending on whether REG_OK_STRICT is defined.
53         (GO_IF_MODE_DEPENDENT_ADDRESS): Use vax_mode_dependent_address_p.
54         Two definitions, depending on whether REG_OK_STRICT is defined.
55         * config/vax/vax-protos.h (legitimate_constant_address_p): Prototype
56         added.
57         (legitimate_constant_p): Prototype added.
58         (legitimate_address_p): Prototype added.
59         (vax_mode_dependent_address_p): Prototype added.
60
61 2005-04-27  Kazu Hirata  <kazu@cs.umass.edu>
62
63         * tree.h (phi_arg_d): Expand a comment in phi_arg_d.
64
65 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
66
67         PR c/21213
68         * c-decl.c (finish_struct): Don't dereference NULL TYPE_FIELDS of
69         transparent union.
70
71 2005-04-27  Joseph S. Myers  <joseph@codesourcery.com>
72
73         PR c/20740
74         * c-format.c (init_dynamic_asm_fprintf_info): Give errors, not
75         assertion failures, if __gcc_host_wide_int__ is not properly
76         defined.
77         (init_dynamic_diag_info): Give errors, not assertion failures, if
78         location_t, tree or __gcc_host_wide_int__ are not properly
79         defined.
80
81 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
82
83         * tree-ssa-loop-ivopts.c (ivopts_data, decl_rtl_to_reset,
84         n_iv_uses, iv_use, n_iv_cands, iv_cand,
85         tree_ssa_iv_optimize_init, record_use, add_candidate_1,
86         prepare_decl_rtl, free_loop_data,
87         tree_ssa_iv_optimize_finalize): Use the VEC API instead of
88         VARRAY.
89
90         * tree.h (tree_phi_node): Add a comment about the order of PHI
91         arguments.
92
93 2005-04-26  Paul Brook  <paul@codesourcery.com>
94
95         * config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.
96
97 2005-04-26  Nathan Sidwell  <nathan@codesourcery.com>
98
99         * config/mips.mips.c (mips_legitimize_tls_address): Use
100         gcc_unreachable.
101
102         * config/mmix/mmix.c (mmix_assemble_integer): Use gcc_assert.
103         * config/mmix/crti.asm (_init): Reword comment to avoid 'abort'.
104         * config/mmix/mmix.md (nonlocal_goto_receiver): Likewise.
105
106         * config/sparc/sparc.h (enum reg_class): Reword comment to avoid
107         'abort'.
108
109 2005-04-26  Jeff Law  <law@redhat.com>
110
111         * tree-flow-inline.h (op_iter_next_must_and_may_def): New.
112         (op_iter_init_must_and_may_def): Likewise.
113         (unmodifiable_var_p): Move to a later point in the file.
114         * tree-ssa-operands.h (FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): New.
115         * tree-ssa-dse.c (need_imm_uses_for): Remove, no longer needed.
116         (dse_record_phis): Directly check for virtual operands rather than
117         using need_imm_uses_for.
118         (dse_optimize_stmt): Handle V_MUST_DEF operands.  Handle case where
119         store has multiple V_{MAY,MUST}_DEF operands.
120
121 2005-04-26  Andrew MacLeod  <amacleod@redhat.com>
122
123         * tree-cfg.c (bsi_replace): Delink immediate uses for the original
124         stmt.
125
126 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
127
128         * tree-cfg.c (lv_adjust_loop_header_phi): Speed up moving a
129         call to find_edge outside a loop to go through a PHI chain.
130
131 2004-04-26  Richard Guenther  <rguenth@gcc.gnu.org>
132
133         PR tree-optimization/17598
134         * fold-const.c (fold_binary): Fold comparisons of addresses
135         of COMPONENT_REFs which reference the same field to
136         comparisons of the addresses of the base objects.
137
138 2005-04-26  Julian Brown  <julian@codesourcery.com>
139
140         * config/arm/arm.c (arm_return_in_msb): New function.
141         (arm_must_pass_in_stack): New function.
142         (TARGET_RETURN_IN_MSB): Define target hook.
143         (TARGET_MUST_PASS_IN_STACK): Define target hook.
144         (arm_function_value): Pad small aggregate return.
145         (arm_pad_arg_upward): New function.
146         (arm_pad_reg_upward): New function.
147         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Include complex values.
148         (FUNCTION_ARG_PADDING): Define macro.
149         (BLOCK_REG_PADDING): Define macro.
150         (PAD_VARARGS_DOWN): Correct padding for AAPCS.
151         * config/arm/arm-protos.h (arm_pad_arg_upward): Declare function.
152         (arm_pad_reg_upward): Declare function.
153
154 2005-04-26  Kazu Hirata  <kazu@cs.umass.edu>
155
156         * basic-block.h (ei_cond): New.
157         (FOR_EACH_EDGE): Call ei_cond.
158
159         PR tree-optimization/21047
160         * fold-const.c (fold_binary): Abort on ASSERT_EXPR.
161         (fold): Don't handle ASSERT_EXPR.
162
163 2005-04-25  Roger Sayle  <roger@eyesopen.com>
164
165         * sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat
166         all writes to any stack register as a read/write dependency on
167         FIRST_STACK_REG.
168         (sched_analyze_2): Likewise, for reads from any stack register.
169
170 2005-04-25  Richard Henderson  <rth@redhat.com>
171
172         * final.c (output_addr_const): Revert 2005-04-09 change.
173
174 2005-04-25  Mike Stump  <mrs@apple.com>
175
176         * config/darwin.c (darwin_encode_section_info): Always set
177         MACHO_SYMBOL_STATIC for all ! TREE_PUBLIC symbols.
178
179 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
180
181         * collect2.c, gcc.c, gcov-dump.c, gcov.c, gen-protos.c,
182         gensupport.c, protoize.c, toplev.c: Replace calls to
183         `unlock_stream' with `unlock_std_streams'.
184
185 2005-04-25  Devang Patel <dpatel@apple.com>
186
187         * dbxout.c (dbxout_type): Emit attribute vector.
188         
189 2005-04-05  Paul Brook  <julian@codesourcery.com>
190
191         * target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define.
192         * target.h (struct gcc_target): Add cxx.use_aeabi_atexit.
193         * config/arm/arm.c (arm_cxx_atexit_name): New function.
194         (TARGET_CXX_USE_AEABI_ATEXIT): New macro.
195         * cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit.
196         (register_dtor_fn): Likewise.
197         * doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT.
198
199 2005-04-25  Ian Lance Taylor  <ian@airs.com>
200
201         * c-common.def (EXPR_STMT): Remove, moved to C++ frontend.
202         * c-common.h (EXPR_STMT_EXPR): Don't define.
203         (c_common_stmt_codes): Don't define.
204         * c-dump.c (c_dump_tree): Remove EXPR_STMT case.
205         * c-gimplify.c (gimplify_expr_stmt): Remove.
206         (c_gimplify_expr): Remove EXPR_STMT case.
207         * c-objc-common.c (c_objc_common_init): Remove stmt_codes and call
208         to INIT_STATEMENT_CODES.
209         * c-pretty-print.c (pp_c_statement): Just call dump_generic_node.
210
211 2005-04-25  Jan Hubicka  <jh@suse.cz>
212
213         * tree-cfg.c (tree_duplicate_bb): Duplicate EH region too.
214
215         * except.c: Include diagnostic.h
216         (dump_eh_tree, verify_eh_tree): New functions.
217         * except.h (verify_eh_tree, dump_eh_tree, verify_eh_edges): Declare.
218         * tree-cfg.c (tree_verify_flow_info): verify eh edges.
219         (dump_function_to_file): dump eh tree.
220         * tree-eh.c (mark_eh_edge): New function.
221         (mark_eh_edge_found_error): New static variable.
222         (verify_eh_edges): New function.
223
224 2005-04-25  Nathan Sidwell  <nathan@codesourcery.com>
225
226         * tree-ssa-alias.c (fieldoff_t): Remove.
227         (fieldoff_s): typedef the structure itself.  Create a vector of
228         objects.
229         (push_fields_onto_fieldstack): Return count of fields pushed.
230         Remove peeling of first field.  Adjust.
231         (fieldoff_compare): Adjust.
232         (create_overlap_variables_for): Adjust.
233
234 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
235
236         * doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.
237
238 2005-04-25  Joseph S. Myers  <joseph@codesourcery.com>
239
240         PR bootstrap/21215
241         * doc/install.texi: Document correct assembler and linker to use
242         on i?86-*-solaris2.10.
243
244 2005-04-25  Steven Bosscher  <stevenb@suse.de>
245
246         Fix PR tree-optimization/21173
247
248         * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
249         Unshare expression we pass to force_gimple_operand.
250
251 2005-04-25  J"orn Rennecke <joern.rennecke@st.com>
252             Stephen Clarke <stevec@superh.com>
253             Roger Sayle <roger@eyesopen.com>
254
255         PR rtl-optimization/20413
256         * cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
257         VOIDmode for LABEL_REF.
258         * final.c (shorten_branches): Likewise.
259         * jump.c (mark_all_labels, redirect_exp_1): Likewise.
260         * loop.c (reg_dead_after_loop): Likewise.
261         * varasm.c (decode_addr_const): Likewise.
262         * doc/rtl.texi: Document mode requirement for LABEL_REF.
263
264 2005-04-25  Ralf Corsepius  <ralf.corsepius@rtems.org>
265
266         * config.gcc (avr-*-*): Remove redundant "case".
267
268 2005-04-25  Kazu Hirata  <kazu@cs.umass.edu>
269
270         * tree-vect-analyze.c (vect_mark_relevant): Take
271         VEC(tree,heap) instead of varray_type as an argument.
272         (vect_mark_stmts_to_be_vectorized): Change the type of
273         worklist to VEC(tree,heap).  Adjust uses of worklist.
274
275 2005-04-24  Devang Patel  <dpatel@apple.com>
276
277         *  config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
278         
279 2005-04-24  Ian Lance Taylor  <ian@airs.com>
280
281         * c-semantics.c (build_stmt): Remove test of specific tree codes
282         for TREE_SIDE_EFFECTS handling.
283
284 2005-04-24  Per Bothner  <per@bothner.com>
285
286         * c-opts.c (finish_options):  Make the line-number of the <built-in>
287         location 0, as assumed elsewhere, rather than 1.
288
289 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
290
291         * tree-ssa-uncprop.c (equiv_stack): Change the type o
292         VEC(tree,heap).
293         (tree_ssa_uncprop, uncprop_finalize_block,
294         uncprop_initialize_block): Update uses of equiv_stack.
295
296 2005-04-24  Richard Henderson  <rth@redhat.com>
297
298         PR rtl-opt/21163
299         * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
300         for SCALAR_INT_MODE_P instead of not MODE_CC before returning
301         constm1_rtx.
302         <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
303         <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
304         <DIV, MOD>: Likewise.
305
306 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
307
308         * collect2.c (main): Unlock the stdio streams.
309         * gcc.c (main): Likewise.
310         * gcov-dump.c (main): Likewise.
311         * gcov.c (main): Likewise.
312         * gen-protos.c (main): Likewise.
313         * gensupport.c (init_md_reader_args_cb): Likewise.
314         * protoize.c (main): Likewise.
315         * toplev.c (general_init): Likewise.
316
317 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
318
319         PR middle-end/20991
320         * cgraph.h (cgraph_local_info): Add vtable_method field.
321         * varasm.c (mark_decl_referenced): If cgraph_global_info_ready
322         and node is vtable_method, finalized and not reachable, don't do
323         anything.
324
325 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
326
327         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
328         COMPARISON_CLASS_P.
329         * tree-ssa-pre.c (create_value_expr_from): Use
330         CONSTANT_CLASS_P and REFERENCE_CLASS_P.
331         * tree-ssa-propagate.c (stmt_makes_single_load,
332         stmt_makes_single_store): Use REFERENCE_CLASS_P.
333         * tree-vect-transform.c (vect_is_simple_cond): Use
334         COMPARISON_CLASS_P.
335         * tree-vrp.c (extract_range_from_assert,
336         build_assert_expr_for, fp_predicate, has_assert_expr): Use
337         COMPARISON_CLASS_P.
338
339         * tree-ssa-live.c (build_tree_conflict_graph): Change the type
340         of tpa_to_clear to VEC(int,heap).  Update uses of
341         tpa_to_clear.  Free tpa_to_clear at the end.
342
343 2005-04-24  Andrew Pinski  <pinskia@physics.uc.edu>
344
345         * tree.h (TREE_THIS_VOLATILE): Document the effect on a
346         function decl.
347
348 2005-04-24  Nathan Sidwell  <nathan@codesourcery.com>
349
350         * config/rs6000/rs6000.c (rs6000_override_options): Use gcc_assert
351         and gcc_unreachable as appropriate.
352         (num_insns_constant, output_vec_const_move,
353         build_mask64_2_operands, rs6000_output_dwarf_dtprel,
354         rs6000_emit_set_const, rs6000_emit_move,
355         spe_build_register_parallel, function_arg,
356         rs6000_move_block_from_reg, altivec_expand_predicate_builtin,
357         spe_expand_predicate_builtin, spe_expand_evsel_builtin,
358         rs6000_expand_builtin, spe_init_builtins, altivec_init_builtins,
359         rs6000_common_init_builtins, expand_block_clear,
360         expand_block_move, validate_condition_mode, ccr_bit, extract_MB,
361         extract_ME, rs6000_get_some_local_dynamic_name,
362         rs6000_output_function_entry, print_operand,
363         print_operand_address, rs6000_generate_compare, rs6000_emit_sCOND,
364         output_cbranch, output_e500_flip_gt_bit,
365         rs6000_emit_vector_compare, rs6000_emit_vector_compare,
366         rs6000_emit_cmove, rs6000_emit_minmax, rs6000_split_multireg_move,
367         compute_save_world_info, rs6000_stack_info,
368         rs6000_emit_load_toc_table, rs6000_frame_related,
369         spe_synthesize_frame_save, rs6000_emit_epilogue,
370         rs6000_output_function_epilogue, rs6000_hash_constant, output_toc,
371         output_function_profiler, rs6000_trampoline_size,
372         rs6000_initialize_trampoline, find_addr_reg,
373         rs6000_machopic_legitimize_pic_address,
374         rs6000_initial_elimination_offset,
375         rs6000_dbx_register_number): Likewise.
376         * config/rs6000/rs6000.md (*fix_truncdfsi2_internal,
377         *movdf_hardfloat32, *movdf_softfloat32, *fix_trunctfsi2_internal,
378         *movti_power, *movti_string, call, call_value, sibcall,
379         sibcall_value): Likewise.
380         * config/rs6000/spe.md (*movdf_e500_double,
381         *movv2si_internal): Likewise.
382         * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Remove 'abort'
383         from comment.
384
385 2005-04-24  Richard Henderson  <rth@redhat.com>
386
387         PR target/21101
388         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
389         * config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
390         Deny modes smaller than 4 bytes.
391         * config/i386/i386-protos.h: Update.
392
393 2005-04-24  Ralf Corsepius  <ralf.corsepius@rtems.org>
394
395         * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
396         Switch h8300-*-rtems* to ELF.
397
398 2005-04-24  Kazu Hirata  <kazu@cs.umass.edu>
399
400         * vec.h (VEC_safe_grow): Replace grow with safe_grow.
401
402 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
403
404         * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
405
406 2005-04-23  Richard Guenther  <rguenth@gcc.gnu.org>
407
408         PR middle-end/21082
409         * fold-const.c: Fold &a[i]-&a[j] to i-j.
410
411 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
412
413         * tree-ssa-loop-niter.c (tree_simplify_using_condition): Expand simple
414         definitions of ssa names in condition.  Split recusive part to ...
415         (tree_simplify_using_condition_1): New function.
416         (expand_simple_operations): New function.
417
418 2005-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
419
420         * tree-ssa-loop-ivopts.c (struct cost_pair): Add value field.
421         (find_interesting_uses_cond): Do not use integer_zerop and
422         integer_nonzerop to check for integer constants.
423         (set_use_iv_cost): Record the value field.
424         (determine_use_iv_cost_generic, determine_use_iv_cost_address,
425         determine_use_iv_cost_outer): Set the value field of the cost pair.
426         (may_eliminate_iv): Do not return the comparison code.
427         (iv_elimination_compare): New function.
428         (determine_use_iv_cost_condition): Set the value field.  Record
429         noneliminable invariants correctly.
430         (rewrite_use_compare, rewrite_use_outer): Use the value field.
431
432 2005-04-23  DJ Delorie  <dj@redhat.com>
433
434         * diagnostic.c (warning): Accept parameter to classify warning option.
435         (warning0): New, for when a pointer to an error() like function is needed.
436         * errors.c (warning): Likewise.
437         * errors.h (warning, warning0): Adjust prototypes.
438         * toplev.h (warning, warning0): Likewise.
439
440         * attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
441         c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
442         c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
443         fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
444         genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
445         reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
446         tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
447         tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
448
449         * config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
450         config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
451         config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
452         config/darwin.c, config/darwin.h, config/h8300/h8300.c,
453         config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
454         config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
455         config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
456         config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
457         config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
458         config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
459         config/rs6000/aix52.h, config/rs6000/darwin.h,
460         config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
461         config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
462         config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
463         config/stormy16/stormy16.c, config/v850/v850-c.c,
464         config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
465         callers.
466         
467 2005-04-23  Richard Henderson  <rth@redhat.com>
468
469         PR rtl-opt/21102
470         * simplify-rtx.c (simplify_binary_operation): Fix mode check before
471         performing some integral scalar simplifications.
472
473 2005-04-23  Richard Henderson  <rth@redhat.com>
474
475         PR target/21099
476         * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
477         simplifying CONST_VECTOR.
478
479 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
480
481         * tree-ssa-live.c (live_worklist): Take a stack allocated on
482         heap as an argument.  Update uses of stack.
483         (calculate_live_on_entry): Allocate stack on heap.
484
485         * tree-ssa-live.c (build_tree_conflict_graph): Allocate
486         partition_link and tpa_nodes on heap.
487
488         * tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
489         (mark_stmt_necessary, propagate_necessity,
490         mark_really_necessary_kill_operand_phis): Update uses of
491         worklist.
492         (tree_dce_init): Allocate worklist using VEC_alloc.
493         (tree_dce_done): Free worklist using VEC_free.
494
495 2005-04-23  Mike Stump  <mrs@apple.com>
496
497         * config/darwin.c (machopic_indirection_name): Don't use
498         quotes needlessly.
499         (darwin_emit_unwind_label): Use user_label_prefix instead of
500         "_".
501
502 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
503
504         * final.c, ipa-inline.c, varasm.c: Fix comment typos.
505
506 2005-04-23  Hans-Peter Nilsson  <hp@axis.com>
507
508         * config.gcc <cris-*>: Specify .opt files.
509         * config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt,
510         config/cris/linux.opt: New files.
511         * config/cris/aout.h (CRIS_SUBTARGET_SWITCHES)
512         (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
513         (TARGET_ELF): Override to 0.
514         (CRIS_SUBTARGET_HANDLE_OPTION): Override to handle -melinux and
515         -melinux-stacksize=N.
516         * config/cris/cris.c: (cris_handle_option): New function.
517         (TARGET_DEFAULT_TARGET_FLAGS): Override.
518         (TARGET_HANDLE_OPTION): Override to cris_handle_option.
519         (cris_override_options): Use MASK_*, not TARGET_MASK_*.
520         * config/cris/cris.h (TARGET_MASK_SVINTO, TARGET_SVINTO,
521         (TARGET_MASK_CCINIT, TARGET_CCINIT, TARGET_MASK_PDEBUG)
522         (TARGET_PDEBUG, TARGET_MASK_SIDE_EFFECT_PREFIXES)
523         (TARGET_SIDE_EFFECT_PREFIXES, TARGET_MASK_EXPAND_MUL)
524         (TARGET_EXPAND_MUL, TARGET_MASK_STACK_ALIGN, TARGET_STACK_ALIGN)
525         (TARGET_MASK_CONST_ALIGN, TARGET_CONST_ALIGN)
526         (TARGET_MASK_DATA_ALIGN, TARGET_DATA_ALIGN)
527         (TARGET_MASK_PROLOGUE_EPILOGUE, TARGET_PROLOGUE_EPILOGUE)
528         (TARGET_MASK_ETRAX4_ADD, TARGET_ETRAX4_ADD)
529         (TARGET_MASK_ALIGN_BY_32, TARGET_ALIGN_BY_32, TARGET_MASK_ELF)
530         (TARGET_ELF, TARGET_MASK_LINUX, TARGET_LINUX)
531         (TARGET_MASK_AVOID_GOTPLT, TARGET_AVOID_GOTPLT)
532         (TARGET_MASK_MUL_BUG, TARGET_MUL_BUG, TARGET_SWITCHES)
533         (CRIS_SUBTARGET_SWITCHES, TARGET_OPTIONS)
534         (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
535         (TARGET_LINUX): Define 0.
536         (TARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
537         (CRIS_SUBTARGET_DEFAULT): Define to 0, not TARGET_MASK_ELF.
538         (CRIS_SUBTARGET_DEFAULT): New empty default macro.
539         * config/cris/linux.h (CRIS_SUBTARGET_SWITCHES): Don't define.
540         (TARGET_LINUX): Override to 1.
541         (CRIS_SUBTARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
542
543 2005-04-23  Nathan Sidwell  <nathan@codesourcery.com>
544
545         * haifa-sched.c (schedule_block): Fix thinko in previous
546         assertification patch.
547
548 2005-04-23  Richard Sandiford  <rsandifo@redhat.com>
549
550         * config.gcc (hppa[12]*-*-hpux10*): Add pa/pa-hpux.opt to
551         $extra_options.  Also add pa/pa-hpux1010.opt for hpux10.[1-9]*.
552         (hppa*64*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file.  Add
553         pa/pa-hpux.opt, pa/pa-hpux1010.opt and pa/pa64-hpux.opt to
554         $extra_options.  Also add pa/pa-hpux1111.opt for hpux11.[1-9]*.
555         (hppa[12]*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file.  Add
556         pa/pa-hpux.opt to $extra_options.  Also add pa/pa-hpux1111.opt
557         for hpux11.[1-9]*.
558         * config/pa/pa.h (architecture_type, rtx_def, pa_arch_string, pa_arch)
559         (pa_fixed_range_string, pa_cpu_string, pa_unix_string, target_flags)
560         (MASK_PA_11, MASK_DISABLE_FPREGS, TARGET_DISABLE_FPREGS)
561         (MASK_NO_SPACE_REGS, TARGET_NO_SPACE_REGS, MASK_JUMP_IN_DELAY)
562         (TARGET_JUMP_IN_DELAY, MASK_DISABLE_INDEXING, TARGET_DISABLE_INDEXING)
563         (MASK_PORTABLE_RUNTIME, TARGET_PORTABLE_RUNTIME, MASK_GAS, TARGET_GAS)
564         (MASK_SOFT_FLOAT, TARGET_SOFT_FLOAT, MASK_LONG_LOAD_STORE)
565         (TARGET_LONG_LOAD_STORE, MASK_FAST_INDIRECT_CALLS)
566         (TARGET_FAST_INDIRECT_CALLS, MASK_BIG_SWITCH, TARGET_BIG_SWITCH)
567         (MASK_PA_20, MASK_SIO, TARGET_SIO, MASK_GNU_LD, TARGET_GNU_LD)
568         (MASK_LONG_CALLS, TARGET_LONG_CALLS, TARGET_PA_11, TARGET_PA_20)
569         (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS)
570         (SUBTARGET_OPTIONS): Delete.
571         (TARGET_PA_10): Redefine in terms of TARGET_PA_11 and TARGET_PA_20.
572         (TARGET_SCHED_DEFAULT): Define to a PROCESSOR_* enum (PROCESSOR_8000)
573         instead of a string.
574         * config/pa/pa.c (pa_arch, pa_arch_string, pa_fixed_range_string)
575         (pa_cpu_string, pa_unix_string): Delete.
576         (pa_cpu): Initialize to TARGET_SCHED_DEFAULT.
577         (flag_pa_unix): Initialize based on TARGET_HPUX_11_11 and
578         TARGET_HPUX_10_10.
579         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
580         (pa_handle_option): New function.
581         (override_options): Remove handling of -march=, -mfixed-range=,
582         -mschedule= and -munix=.
583         * config/pa/pa-hpux.h (SUBTARGET_SWITCHES): Delete.
584         * config/pa/pa-hpux1010.h (SUBTARGET_OPTIONS): Delete.
585         * config/pa/pa-hpux10.h (SUBTARGET_OPTIONS): Delete.
586         * config/pa/pa-hpux1111.h (SUBTARGET_OPTIONS): Delete.
587         * config/pa/pa-hpux11.h (SUBTARGET_OPTIONS): Delete.
588         * config/pa/pa64-hpux.h (SUBTARGET_SWITCHES): Delete.
589         * config/pa/pa64-start.h (TARGET_PA_11, TARGET_PA_20): #undef before
590         redefining.
591         * config/pa/pa.opt: New file.
592         * config/pa/pa-hpux.opt: New file.
593         * config/pa/pa-hpux1010.opt: New file.
594         * config/pa/pa-hpux1111.opt: New file.
595         * config/pa/pa64-hpux.opt: New file.
596
597 2005-04-22  David S. Miller  <davem@davemloft.net>
598
599         * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
600         integer when it's mode is VOIDmode not DImode.
601
602 2005-04-22  Geoffrey Keating  <geoffk@apple.com>
603
604         * config/rs6000/rs6000.md (sync_add<mode>_internal,
605         sync_addshort_internal, sync_sub<mode>_internal, sync_andsi_internal,
606         sync_anddi_internal, sync_boolsi_internal, sync_booldi_internal,
607         sync_boolc<mode>_internal, sync_boolc<mode>_internal2,
608         sync_boolcc<mode>_internal, sync_lock_test_and_set<mode>): Use
609         "bne- $-xxx" rather than local labels.
610         (sync_lock_release<mode>): Add second operand.
611         (lwsync): Use .long rather than a more meaningful opcode.
612         * doc/md.texi (Standard Names): Add description of second
613         parameter to sync_lock_test_and_set.
614
615 2005-04-23  Kazu Hirata  <kazu@cs.umass.edu>
616
617         PR tree-optimization/21088
618         * fold-const.c (fold_unary, fold_binary, fold_ternary):
619         Export.
620         * tree-vrp.c (compare_values): Use fold_binary to compare
621         pointers.  Use boolean_type_node as the type of a comparison
622         expression being folded.
623         * tree.h: Add prototypes for fold_unary, fold_binary,
624         fold_ternary.
625
626         * tree-ssa-dom.c: Fix formatting.
627
628 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
629
630         * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
631         * lambda-code.c (perfect_nestify): Mark virtual operands in
632         the moved statement for renaming.
633         * params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
634         (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
635         * params.h (MIN_VIRTUAL_MAPPINGS): Define.
636         (VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
637         * tree-flow.h (struct var_ann_d): Update comments.
638         (rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
639         allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
640         debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
641         debug_tree_ssa_stats, rewrite_ssa_into_ssa,
642         dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
643         debug_names_replaced_by): Remove declarations.
644         (delete_update_ssa, get_current_def, set_current_def): Declare.
645         (rewrite_into_loop_closed_ssa): Add new argument.  Update
646         all callers.
647         * tree-into-ssa.c: Include params.h.
648         (old_virtual_ssa_names): Remove.  Update all users.
649         (need_to_replace_names_p): Remove.  Update all users.
650         (struct update_ssa_stats_d): Declare.
651         (update_ssa_stats): New local.
652         (dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
653         dump_tree_ssa_stats, debug_tree_ssa_stats,
654         dump_update_ssa, debug_update_ssa,
655         dump_names_replaced_by, debug_names_replaced_by): Declare.
656         (get_current_def, set current_def): Make extern.
657         (is_old_name, is_new_name): Protect against references
658         past the end of the sets.
659         (add_new_name_mapping): Assert that OLD and NEW are
660         different SSA names for the same symbol.
661         When adding a virtual mapping, update stats for virtual
662         mapping heuristic.
663         (insert_phi_nodes_for): If UPDATE_P is true, create the
664         LHS of the new PHI by duplicating SSA name VAR.
665         (insert_phi_nodes_1): Remove.  Update all users.
666         (insert_phi_nodes): Remove second argument.  Update all
667         users.
668         (maybe_replace_use, maybe_replace_def): New.
669         (rewrite_update_stmt): Call them.
670         (mark_def_interesting): Remove calls to is_gimple_reg.
671         (prepare_phi_args_for_update): Remove.  Update all users.
672         (prepare_block_for_update): Only process virtual operands
673         and GIMPLE registers in normal form.
674         (prepare_use_sites_for): New.
675         (prepare_names_to_update): Rename from prepare_def_sites.
676         Call prepare_use_sites_for.
677         (dump_update_ssa): Rename from dump_repl_tbl.
678         Update all users.
679         Show statistics for virtual mapping heuristic.
680         (debug_update_ssa): Rename from debug_debug_repl_tbl.
681         (init_update_ssa): Initialize UPDATE_SSA_STATS.
682         (delete_update_ssa): Make extern.
683         (mark_set_for_renaming): If the set is empty, do nothing.
684         (release_ssa_name_after_update_ssa): Update comment.
685         (insert_updated_phi_nodes_for): Do not remove existing
686         PHI nodes for symbols.
687         (switch_virtuals_to_full_rewrite_p): New.
688         (switch_virtuals_to_full_rewrite): New.
689         (update_ssa): Call them.
690         Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
691         for every statement before updating.
692         If all the names in NEW_SSA_NAMES have been marked for
693         removal, do nothing.
694         Only start at the top of the CFG if there are symbols in
695         SYMS_TO_RENAME.
696         (ssa_rewrite_finalize_block): Remove.
697         (ssa_register_new_def): Remove.
698         (ssa_rewrite_stmt): Remove.
699         (ssa_rewrite_phi_arguments): Remove.
700         (ssa_rewrite_initialize_block): Remove.
701         (ssa_mark_def_sites): Remove.
702         (ssa_mark_def_sites_initialize_block): Remove.
703         (ssa_mark_phi_uses): Remove.
704         (rewrite_ssa_into_ssa): Remove.
705         * tree-phinodes.c (find_phi_node_for): Remove.
706         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
707         Call update_ssa.
708         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
709         Remove calls to verify_dominators and
710         verify_loop_structure.
711         (tree_unswitch_single_loop): Call update_ssa.
712         * tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
713         returns false.
714         Call verify_stmts.
715         (delete_tree_ssa): Assert that need_ssa_update_p returns
716         false.
717         * tree-vect-transform.c (vect_transform_loop): Call update_ssa.
718         * tree-vectorizer.c (allocate_new_names, rename_def_op,
719         free_new_names): Remove.  Update all users.
720         (rename_use_op): Call get_current_def.
721         (rename_variables_in_bb): Do not handle any real or
722         virtual definition.
723         (slpeel_update_phis_for_duplicate_loop): Call
724         get_current_def and set_current_def instead of using
725         SSA_NAME_AUX.
726         (slpeel_update_phi_nodes_for_guard2): Reformat comments.
727         (slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
728         ssa_names_to_replace and delete_update_ssa.
729         * doc/invoke.texi: Document --param min-virtual-mappings
730         and --param virtual-mappings-ratio.
731
732 2005-04-22  Diego Novillo  <dnovillo@redhat.com>
733
734         * tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
735         for newly created PHI nodes.
736         Call create_new_def_for for every new V_MAY_DEF and
737         V_MUST_DEF on the copied statement.
738         (struct ssa_name_map_entry): Remove.
739         (ssa_name_map_entry_hash): Remove.
740         (ssa_name_map_entry_eq): Remove.
741         (allocate_ssa_names): Remove.
742         (rewrite_to_new_ssa_names_def): Remove.
743         (rewrite_to_new_ssa_names_use): Remove.
744         (rewrite_to_new_ssa_names_bb): Remove.
745         (rewrite_to_new_ssa_names): Remove.
746         (tree_duplicate_sese_region): Remove variables ver,
747         definitions, phi, ssa_name_map and bi.
748         Call need_ssa_update_p instead of any_marked_for_rewrite_p.
749         Call update_ssa.
750         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
751         update_ssa instead of rewrite_ssa_into_ssa.
752         * tree-ssa-loop-manip.c (add_exit_phis_edge): Call
753         create_new_def_for.
754         (find_uses_to_rename_use): Add argument 'need_phis'.
755         (find_uses_to_rename_stmt): Do not scan virtual operands.
756         (find_uses_to_rename): Only scan PHI nodes for
757         non-virtual names.
758         (rewrite_into_loop_closed_ssa): Call update_ssa.
759         (check_loop_closed_ssa_use): Ignore virtual operands.
760         (check_loop_closed_ssa_stmt): Likewise.
761         (verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
762         NULL.
763         (rename_variables, set_phi_def_stmts): Remove.
764         (tree_duplicate_loop_to_header_edge): Reformat comment.
765         Remove variables BB, I and DEFINITIONS.
766         Call need_ssa_update_p.
767         Call update_ssa.
768         (lv_adjust_loop_header_phi): Reformat comment.
769         * tree-ssanames.c (ssa_names_to_rewrite): Remove.
770         (marked_for_rewrite_p, any_marked_for_rewrite_p,
771         mark_for_rewrite, unmark_all_for_rewrite,
772         marked_ssa_names): Remove.  Update all users.
773         (release_ssa_name): If VAR has been registered for SSA
774         updating, do nothing.
775         * tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
776         (build_assert_expr_for): Call register_new_name_mapping.
777         (insert_range_assertions): Update call to update_ssa.
778         * tree.h (mark_for_rewrite, unmark_all_for_rewrite,
779         marked_for_rewrite_p, any_marked_for_rewrite_p,
780         marked_ssa_names): Remove.
781
782 2005-04-22  Jeff Law  <law@redhat.com>
783
784         * tree-ssa-dom.c (block_defs_stack): Remove, no longer needed.
785         (restore_currdefs_to_original_value): Likewise.
786         (register_definitions_for_stmt): Likewise.
787         (tree_ssa_dominator_optimize): No longer initialize CURRENT_DEF
788         for each variable.  Do not allocate/free block_defs_stack either.
789         Do not iterate if we just thread jumps.  Only iterate if the
790         tree_cleanup_cfg does useful work (temporary).
791         (dom_opt_initialize_block): No longer push a marker on
792         BLOCK_DEFS_STACK.
793         (dom_opt_finalize_block): Removal call to restore currdefs.
794         Relax restrictions for recording edge equivalences.
795         (record_equivalences_from_phis): No longer need to track
796         CURRENT_DEF.
797         (optimize_stmt): Similarly.
798         (thread_across_edge): Simplify by removing the requirement that
799         statements in the block we are threading through must be nops.
800         (initialize_hash_element): Handle GOTO_EXPR.
801
802 2005-04-22  David S. Miller  <davem@davemloft.net>
803
804         * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
805         CONST_DOUBLE_HIGH.
806         * config/sparc/sparc.c (sparc_rtx_costs): Likewise, and
807         fix check on CONST_DOUBLE mode.  It should be VOIDmode
808         when it is representing an integer.
809
810 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
811
812         * builtins.c (gimplify_va_arg_expr): Reword comments to avoid
813         'abort'. Use gcc_assert and gcc_unreachable as appropriate.
814         * c-format.c (get_constant, decode_format_attr, get_flag_spec, 
815         find_char_info_specifier_index,
816         find_length_info_modifier_index): Likewise.
817         * c-typeck.c (composite_type, pop_init_level): Likewise.
818         * combine.c (cant_combine_insn_p, try_combine): Likewise.
819         * cse.c (cse_insn): Likewise
820         * dominance.c (calc_dfs_tree): Likewise
821         dwarf2out.c (loc_descriptor_from_tree_1,
822         add_abstract_origin_attribute, force_decl_die,
823         force_type_die): Likewise
824         emit-rtl.c (operand_subword_force): Likewise
825         explow.c (hard_function_value): Likewise
826         expmed.c (store_bit_field, expand_divmod,
827         emit_store_flag_force): Likewise
828         expr.c (emit_move_multi_word, store_expr,
829         expand_expr_real_1): Likewise
830         final.c (this_is_asm_operands, shorten_branches, final_scan_insn,
831         output_operand): Likewise
832         flow.c (recompute_reg_usage): Likewise
833         * function.c (assign_stack_temp_for_type, assign_temp, 
834         handle_epilogue_set): Likewise
835         * genextract.c (main): Likewise
836         * gimplify.c (mostly_copy_tree_r, gimplify_return_expr,
837         gimplify_modify_expr_rhs, gimplify_expr): Likewise
838         * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element,
839         ready_remove, rm_line_notes, rm_other_notes,
840         schedule_block): Likewise
841         mips-tfile.c (copy_object, out_of_bounds): Likewise
842
843 2005-04-22 David Edelsohn  <edelsohn@gnu.org>
844
845         PR target/20813
846         * config/rs6000/default64.h (TARGET_DEFAULT): Add MASK_PPC_GFXOPT.
847         * config/rs6000/rs6000.c (processor_target_table): Rename rs64a to
848         rs64.  Add MASK_PPC_GFXOPT to powerpc64 and rs64.
849         (rs6000_init_libfuncs): Set TFmode optabs to xlq names if
850         TARGET_XL_COMPAT.
851         * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
852
853 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
854
855         * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
856         (gcc_tree_to_linear_expression): Convert to heap allocated
857         vectors.
858         (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
859         lbv_to_gcc_expression, lle_to_gcc_expression,
860         lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest, 
861         perfect_nestify): Likewise.
862         lambda.h (gcc_loopnest_to_lambda_loopnest,
863         lambda_loopnest_to_gcc_loopnest): Likewise.
864         tree-loop-linear.c (linear_transform_loops): Likewise.
865
866 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
867
868         * config/sparc/predicates.md (arith_double_operand): Use
869         trunc_int_for_mode if HOST_BITS_PER_WIDE_INT >=64.
870         * config/sparc/sparc.md (movqi, movhi, movsi, movqi): Use gen_int_mode.
871         (DImode, DFmode constant splitters): Likewise.  Remove code for
872         TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT < 64.
873         (logical constant splitters): Use const_int_operand predicate.
874         (lshrsi3_extend): Remove code for TARGET_ARCH64 &&
875         HOST_BITS_PER_WIDE_INT < 64.
876
877 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
878
879         * config/pa/pa.c (legitimize_pic_address): Use gcc_assert and
880         gcc_unreachable as appropriate.
881         (force_mode, emit_move_sequence, singlemove_string,
882         output_move_double, output_fp_move_double, find_addr_reg,
883         output_block_move, output_block_clear, output_and,
884         output_64bit_and, output_ior, output_64bit_ior, store_reg_modify,
885         pa_adjust_cost, pa_issue_rate, print_operand,
886         output_global_address, output_arg_descriptor, output_cbranch,
887         output_lbranch, output_bb, output_bvb, output_dbra, output_movb,
888         output_call): Likewise.
889         * config/pa/pa.md (call, call_value, sibcall, sibcall_value,
890         prefetch, prefetch_cc, prefetch_nocc): Likewise.
891
892 2005-04-22  Zdenek Dvorak  <dvorakz@suse.cz>
893
894         * Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
895         _gcov_pow2_profiler and _gcov_one_value_profiler.
896         (tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
897         (GTFILES): Add $(srcdir)/tree-profile.c.
898         * gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
899         __gcov_one_value_profiler): Declare.
900         * gimplify.c (force_gimple_operand): Check whether the statements
901         should be produced in ssa form.
902         (force_gimple_operand_bsi): New function.
903         * libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
904         __gcov_one_value_profiler): New functions.
905         * rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
906         the profiled value is a power of two or not.
907         * tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
908         * tree-flow.h (in_ssa_p): Declare.
909         (force_gimple_operand_bsi): Declare.
910         * tree-into-ssa.c (in_ssa_p): New variable.
911         (rewrite_into_ssa): Set in_ssa_p.
912         * tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
913         * tree-profile.c: Include ggc.h and gt-tree-profile.h.
914         (gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
915         tree_one_value_profiler_fn): New variables.
916         (tree_init_edge_profiler): Initialize the profiler function decls.
917         (tree_gen_edge_profiler): Use global gcov_type_node.
918         (prepare_instrumented_value): New function.
919         (tree_gen_interval_profiler, tree_gen_interval_profiler,
920         tree_gen_one_value_profiler): Call the library functions instead of
921         creating instrumentation code.
922         * tree.c (build_fn_decl): New function.
923         * tree.h (build_fn_decl): Declare.
924         * value-prof.c (rtl_divmod_values_to_profile,
925         rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
926         tree_mod_pow2_value_transform, tree_find_values_to_profile):
927         Do not handle may_be_other and precise values of exponents at pow2
928         profiler.
929         (tree_mod_subtract_transform): Reflect that value field of
930         histogram has changed meaning.
931         (tree_divmod_values_to_profile): Record the values correctly.
932         (tree_values_to_profile): Update comment.
933         * value-prof.h (struct histogram_value_t): Remove pow2 data.
934
935 2005-04-22  Joseph S. Myers  <joseph@codesourcery.com>
936
937         * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
938         (decl).
939
940 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
941
942         * config/i386/i386.md (length_immediate): Use gcc_assert or
943         gcc_unreachable, as appropriate.
944         (*movsi_1, *movqi_1, reload_outqi, *movdi_1_rex64, *pushsf,
945         *pushsf_rex64, *truncxfsf2_mixed, *truncxfsf2_i387,
946         *truncxfdf2_mixed, *truncxfdf2_i387, *adddi_1_rex64,
947         *adddi_2_rex64, *adddi_3_rex64, *adddi_4_rex64, *adddi_5_rex64,
948         *addsi_1, addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
949         *addsi_3_zext, *addsi_4, *addsi_5, *addhi_1_lea, *addhi_1,
950         *addhi_2, *addhi_3, *addhi_4, *addhi_5, *addqi_1_lea, *addqi_1,
951         *addqi_1_slp, *addqi_2, *addqi_3, *addqi_4, *addqi_5, addqi_ext_1,
952         *addqi_ext_1_rex64, *anddi_1_rex64, *andsi_1, *andhi_1,
953         *ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashlsi3_1, *ashlsi3_1_zext,
954         *ashlsi3_cmp, *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1,
955         *ashlhi3_cmp, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
956         pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64,
957         pro_epilogue_adjust_stack_rex64_2, prefetch, *prefetch_sse,
958         *prefetch_sse_rex): Likewise.
959         * config/i386/predicates.md (x86_64_immediate_operand,
960         x86_64_zext_immediate_operand, symbolic_operand,
961         no_seg_address_operand, aligned_operand,
962         memory_displacement_operand): Likewise.
963         * config/i386/sse.md (*mov<mode>_internal,
964         *movv2df_internal): Likewise.
965
966 2005-04-22  Jan Hubicka  <jh@suse.cz>
967
968         * Makefile.in (ipa.o, ipa-inline.o): New files.
969         * cgraph.h (cgraph_remove_unreachable_nodes, cgraph_postorder,
970         cgraph_decide_inlining_incrementally, cgraph_clone_inlined_nodes,
971         cgraph_mark_inline_edge, cgraph_default_inline_p): Declare.
972         * cgraphunit.c (cgraph_default_inline_p,
973         cgraph_decide_inlining_incrementally,  ncalls_inlined,
974         nfunctions_inlined, initial_insns, overall_insns, 
975         cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
976         cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
977         cgraph_mark_inline, cgraph_check_inline_limits,
978         cgraph_default_inline_p, cgraph_recursive_inlining_p,
979         update_callee_keys, lookup_recursive_calls,
980         cgraph_decide_recursive_inlining, cgraph_set_inline_failed,
981         cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining,
982         cgraph_decide_inlining_incrementally, cgraph_gate_inlining,
983         pass_ipa_inline): Move to ipa-inline.c
984         (cgraph_postorder, cgraph_remove_unreachable_nodes): Move to ipa.c
985         * ipa.c: New file.
986         * ipa-inline.c: New file.
987
988 2005-04-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
989
990         * doc/invoke.texi (SPARC options): Document that -mapp-regs
991         is turned off by default on Solaris.
992
993 2005-04-21  Roger Sayle  <roger@eyesopen.com>
994
995         * c-common.h (objc_build_method_signature): Update prototype.
996         * stub-objc.c (objc_build_method_signature): Update the stub
997         implementation to accept and ignore additional parameter.
998         * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass
999         the value of ellipsis to objc_build_method_signature instead
1000         of setting TREE_OVERFLOW on the parms TREE_LIST node.
1001
1002 2005-04-21  Geoffrey Keating  <geoffk@apple.com>
1003
1004         * config/rs6000/rs6000-protos.h (rs6000_emit_sync): New.
1005         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Use
1006         gen_rtx_* not gen_rtx_fmt_*.
1007         (rs6000_emit_vector_select): Likewise.
1008         (rs6000_emit_sync): New.
1009         * config/rs6000/rs6000.md (GPR, INT, INT1): New mode macros.
1010         (larx, stcx, cmp): New mode substitutions.
1011         (UNSPEC_SYNC, UNSPEC_SYNC_OP, UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC,
1012         UNSPEC_ISYNC): New constants.
1013         (rlwinm): Give name.
1014         (memory_barrier, isync, lwsync): New insns.
1015         (sync_compare_and_swap<mode>, sync_lock_test_and_set<mode>): New insn.
1016         (sync_lock_release<mode>): New expander.
1017         (sync_add<mode>, sync_sub<mode>, sync_ior<mode>, sync_and<mode>,
1018         sync_xor<mode>, sync_nand<mode>, sync_old_add<mode>,
1019         sync_old_sub<mode>, sync_old_ior<mode>, sync_old_and<mode>,
1020         sync_old_xor<mode>, sync_old_nand<mode>, sync_new_add<mode>,
1021         sync_new_sub<mode>, sync_new_ior<mode>, sync_new_and<mode>,
1022         sync_new_xor<mode>, sync_new_nand<mode>): New expanders.
1023         (sync_add<mode>_internal, sync_addshort_internal,
1024         sync_sub<mode>_internal, sync_andsi_internal, sync_anddi_internal,
1025         sync_boolsi_internal, sync_booldi_internal, sync_boolc<mode>_internal,
1026         sync_boolc<mode>_internal2, sync_boolcc<mode>_internal): New insns.
1027
1028         * doc/md.texi (Standard Names): sync_compare_and_swap's operand 0
1029         is the memory before, not after, the operation.  Clarify
1030         barrier requirements.
1031
1032 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1033
1034         * cfghooks.h (struct cfg_hooks): Reword comments to avoid 'abort'.
1035         * lambda.h (lambda_vector_min_nz): Likewise.
1036         * langhooks.h (struct lang_hooks_for_types,
1037         struct lang_hooks): Likewise.
1038         * output.h (assemble_integer, this_is_asm_operands): Likewise.
1039         * tree.h: Likewise.
1040         * vec.h: Likewise.
1041         * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
1042         
1043         * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
1044         comments to avoid 'abort'.  Use gcc_assert as necessary.
1045         * opts.c (common_handle_option): Likewise.
1046         * pretty-print.c (pp_base_format_text): Likewise.
1047         * print-rtl.c (print_rtx): Likewise.
1048         * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
1049         * regmove.c (try_auto_increment): Likewise.
1050         * reload.c (find_valid_class, find_reloads_toplev,
1051         find_equiv_reg): Likewise.
1052         * reload1.c (reload, forget_old_reloads_1, function_invariant_p, 
1053         merge_assigned_reloads): Likewise.
1054         * tree-inline.c (inline_forbidden_p_1,
1055         estimate_num_insns_1): Likewise.
1056         * tree-optimize.c (execute_todo): Likewise.
1057         * tree-outof-ssa.c (eliminate_phi): Likewise.
1058         * tree-ssa-alias.c (add_pointed_to_expr): Likewise.
1059         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
1060         * tree-ssa-operands.c (parse_ssa_operands,
1061         get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
1062         * tree-ssa-pre.c (find_or_generate_expression): Likewise.
1063         * tree-ssanames.c (release_ssa_name): Likewise.
1064         * tree.c (int_bit_position, int_byte_position, tree_low_cst, 
1065         walk_tree): Likewise.
1066
1067         * tree-ssa-operands.c (verify_abort): Fold into ..
1068         (verify_imm_links): ... here.
1069
1070 2005-04-21  Richard Henderson  <rth@redhat.com>
1071
1072         * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
1073         on non-memory operand for previous inversion.
1074
1075 2005-04-21  Devang Patel  <dpatel@apple.com>
1076
1077         PR optimization/20994
1078         * tree-if-conv.c (find_phi_replacement_condition): Avoid generating
1079         x = !(a == b) : p , q;.
1080         (pass_if_conversion): Verify stmts and flow.
1081         
1082 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1083
1084         * optabs.c (gen_conditional_trap): Restore #define.
1085
1086         * alias.c (true_dependence): Remove 'abort' from comments. Use
1087         gcc_assert and gcc_unreachable as appropriate.
1088         (canon_true_dependence): Likewise.
1089         * bb-reorder.c (connect_traces): Likewise.
1090         * c-common.c (c_add_case_label): Likewise.
1091         * c-decl.c (finish_function): Likewise.
1092         * caller-save.c (insert_restore, insert_save): Likewise.
1093         * cfg.c (update_bb_profile_for_threading): Likewise.
1094         * cfganal.c (flow_active_insn_p): Likewise.
1095         * cfgexpand.c (add_reg_br_prob_note): Likewise.
1096         * cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
1097         cfg_layout_merge_blocks): Likewise.
1098         * ifcvt.c (cond_exec_process_insns, merge_if_block,
1099         find_if_block): Likewise.
1100         * integrate.c (allocate_initial_values): Likewise.
1101         * jump.c (reverse_condition, reverse_condition_maybe_unordered,
1102         swap_condition, unsigned_condition, signed_condition,
1103         mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
1104         reg_or_subregno): Likewise.
1105         * lambda-code.c (lambda_compute_auxillary_space,
1106         lambda_transform_legal_p): Likewise.
1107         * lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
1108         * langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
1109         lhd_incomplete_type_error, lhd_expand_expr,
1110         lhd_types_compatible_p, lhd_tree_size): Likewise.
1111         * lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
1112         * local-alloc.c (update_equiv_regs): Likewise.
1113         * loop-unroll.c (peel_loop_completely
1114         unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
1115         peel_loop_simple, unroll_loop_stupid,
1116         analyze_iv_to_split_insn): Likewise.
1117         * loop.c (gen_prefetch, find_and_verify_loops,
1118         basic_induction_var): Likewise.
1119         * modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
1120         * value-prof.c (tree_find_values_to_profile): Likewise.
1121         * varasm.c (named_section, default_assemble_integer,
1122         decode_addr_const): Likewise.
1123
1124 2005-04-21 Alan Modra  <amodra@bigpond.net.au>
1125            Fariborz Jahanian <fjahanian@apple.com>
1126
1127         * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Fix size of
1128         portion of argument passed in fpr.
1129         * expr.c (emit_push_insn): Fix computation of 'offset' used to
1130         decide on partial argument save on stack.
1131
1132 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
1133
1134         * config/sparc/predicates.md, config/sparc/sparc.md: Fix
1135         comment typos.
1136
1137 2005-04-21  Jan Hubicka  <jh@suse.cz>
1138
1139         * cgraphunit.c: Include tree-pass.h
1140         (cgraph_decide_recursive_inlining,
1141         cgraph_decide_inlining_of_small_function, cgraph_set_inline_failed,
1142         cgraph_decide_inlining): Dump goes to dump_file.
1143         (cgraph_optimize): Call ipa passes instead of inliner.
1144         (cgraph_gate_inlining, pass_ipa_inline): New.
1145         * tree-optimize.c (all_ipa_passes): New static variable.
1146         (register_one_dump_file): Dead with IPA passes.
1147         (register_dump_files): Likewise.
1148         (init_tree_optimization_passes): Initialize IPA passes.
1149         (execute_todo): Do cgraph dump when asked to, do not dump function body
1150         for IPA pass.
1151         * tree-pass.h (TODO_dump_cgraph): New macro.
1152         (ipa_passes): Declare.
1153         * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
1154
1155 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1156
1157         * config/i386/i386.c (type_natural_mode): Use gcc_unreachable and
1158         gcc_assert instead of abort.
1159         (classify_argument, examine_argument, construct_container,
1160         contains_128bit_aligned_vector_p, ix86_check_movabs,
1161         standard_80387_constant_opcode, standard_80387_constant_rtx,
1162         ix86_initial_elimination_offset, ix86_compute_frame_layout,
1163         pro_epilogue_adjust_stack, ix86_expand_epilogue,
1164         ix86_address_cost, legitimate_address_p, legitimize_pic_address,
1165         legitimize_tls_address, output_pic_addr_const,
1166         i386_output_dwarf_dtprel, put_condition_code, print_reg,
1167         get_some_local_dynamic_name, print_operand, print_operand_address,
1168         output_387_binary_op, emit_i387_cw_initialization,
1169         output_fix_trunc, output_fp_compare, ix86_output_addr_vec_elt,
1170         ix86_expand_clear, ix86_expand_binary_operator,
1171         ix86_expand_unary_operator, ix86_match_ccmode, ix86_cc_mode,
1172         ix86_cc_modes_compatible, ix86_fp_comparison_codes,
1173         ix86_fp_comparison_arithmetics_cost, ix86_expand_fp_compare,
1174         ix86_expand_branch, ix86_expand_setcc,
1175         ix86_expand_carry_flag_compare, ix86_expand_fp_movcc,
1176         ix86_expand_int_addcc, ix86_split_to_parts, ix86_split_long_move,
1177         ix86_expand_movmem, ix86_expand_call, assign_386_stack_local,
1178         memory_address_length, ix86_attr_length_immediate_default,
1179         ix86_attr_length_address_default, ix86_agi_dependant,
1180         x86_initialize_trampoline, ix86_init_mmx_sse_builtins,
1181         ix86_expand_binop_builtin, ix86_force_to_memory,
1182         ix86_secondary_memory_needed, ix86_avoid_jump_misspredicts,
1183         x86_emit_floatuns): Likewise.
1184         * config/i386/netware.c (gen_regparm_prefix,
1185         i386_nlm_strip_name_encoding): Likewise.
1186         * config/i386/winnt.c (i386_pe_mark_dllexport): Likewise.
1187
1188 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1189
1190         * optabs.c (gen_condiational_trap): Remove #define.
1191         (add_equal_note): Assertify. Remove explicit indirection from
1192         call via function pointer.
1193         (expand_ternary_op, expand_simple_binop, expand_binop,
1194         expand_twoval_unop, expand_twoval_binop,
1195         expand_twoval_binop_libfunc, expand_simple_unop expand_unop,
1196         emit_unop_insn,  emit_no_conflict_block,  prepare_cmp_insn,
1197         prepare_operand emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
1198         prepare_float_lib_cmp, emit_conditional_move,
1199         emit_conditional_add, gen_add2_insn, gen_add3_insn,
1200         have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn,
1201         expand_float, expand_fix, debug_optab_libfuncs, gen_cond_trap,
1202         vector_compare_rtx, expand_vec_cond_expr): Likewise.
1203
1204 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
1205
1206         * vec.h: Update API to separate allocation mechanism from type.
1207         (VEC_safe_grow): New.
1208         * vec.c (calculate_allocation): New.
1209         (vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
1210         (vec_gc_free, vec_heap_free): Remove.
1211         * gengtype-lex.l (DEF_VEC_): Process mult-argument macros.  Adjust.
1212         (VEC): Likewise.
1213         (mangle_macro_name): New.
1214         (struct macro_def): New.
1215         (struct macro): Add multiple argument values.
1216         (macro_expans_end): New.
1217         (push_macro_expansion):  Chain on new macro. Process multiple
1218         args, create follow on expansion. Return follow on argument.
1219         (macro_input): Deal with multiple arguments.
1220         
1221         * tree.h: Define VEC(tree,heap) and VEC(tree,gc).
1222         (struct tree_binfo): Adjust.
1223         * basic-block.h: Define VEC(edge,gc).
1224         (struct edge_def): Adjust.
1225         (struct basic_block_def, struct edge_iterator): Likewise.
1226         (ei_container, ei_start_1, ei_last_1): Likewise.
1227         * cfg.c (connect_src, connect_dest): Likewise.
1228         * cfgrtl.c (force_nonfallthru_and_redirect)
1229         * dbxout.c (dbxout_type)
1230         * dwarf2out.c (gen_member_die)
1231         * lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
1232         (gcc_tree_to_linear_expression): Adjust.
1233         (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
1234         lbv_to_gcc_expression, lle_to_gcc_expression,
1235         lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
1236         perfect_nestify): Likewise.
1237         * lambda.h (gcc_loopnest_to_lambda_loopnest,
1238         lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
1239         * profile.c (instrument_values): Adjust.
1240         * tree-cfg.c (modified_noreturn_calls): Adjust.
1241         (remove_fallthru_edge): Likewise.
1242         * tree-dump.c (dequeue_and_dump): Adjust.
1243         * tree-flow-inline.h (mark_stmt_modified): Adjust.
1244         * tree-flow.h (modified_noreturn_calls): Adjust.
1245         (tree_on_heap): Remove. (yay!)
1246         (register_new_def): Adjust.
1247         * tree-into-ssa.c: Define VEC(int,heap).
1248         (block_defs_stack): Adjust.
1249         (find_idf, insert_phi_nodes, register_new_def,
1250         rewrite_initialize_block, rewrite_finalize_block,
1251         register_new_update_single, rewrite_update_init_block,
1252         rewrite_update_fini_block, rewrite_blocks,
1253         ssa_rewrite_finalize_block, ssa_register_new_def,
1254         ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
1255         * tree-loop-linear.c (linear_transform_loops): Adjust.
1256         * tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
1257         (push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
1258         * tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
1259         stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
1260         vrp_variables_stack): Adjust declarations.
1261         (tree_ssa_dominator_optimize): Adjust.
1262         (dom_opt_initialize_block, remove_local_expressions_from_table,
1263         restore_nonzero_vars_to_original_value,
1264         restore_vars_to_original_value,
1265         restore_currdefs_to_original_value, dom_opt_finalize_block,
1266         record_var_is_nonzero, record_cond, record_const_or_copy_1,
1267         optimize_stmt, update_rhs_and_lookup_avail_expr,
1268         lookup_avail_expr, record_range): Likewise.
1269         * tree-ssa-pre.c: Define VEC(basic_block,heap).
1270         (compute_antic_aux): Adjust.
1271         (inserted_exprs, create_expression_by_pieces, 
1272         insert_into_preds_of_block, eliminate, mark_operand_necessary, 
1273         remove_dead_inserted_code, fini_pre): Likewise.
1274         * tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
1275         (varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist. 
1276         ssa_prop_init): Likewise.
1277         * tree-ssa.c: Define VEC(bitmap,heap).
1278         (verify_name_tags): Adjust.
1279         * value-prof.c (rtl_divmod_values_to_profile): Adjust.
1280         (insn_prefetch_values_to_profile, rtl_find_values_to_profile,
1281         tree_divmod_values_to_profile, tree_find_values_to_profile,
1282         value_profile_transformations): Likewise.
1283         * value-prof.h: Define VEC(histogram_value,heap).
1284         * varasm.c: Remove alias_pair pointer typedef, define
1285         VEC(alias_pair,gc).
1286         (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
1287         
1288         * config/pa/pa.c (typedef extern_symbol): Typedef the structure,
1289         not a pointer to it.  Create an object vector.
1290         (extern_symbols): Turn into an object vector.
1291         (pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
1292
1293 2005-04-21  Sebastian Pop  <pop@cri.ensmp.fr>
1294
1295         PR/20742
1296         * Makefile.in (tree-chrec.o): Depend on params.h.
1297         * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
1298         default value 20.
1299         * tree-chrec.c: Depend on params.h.  Replace build with buildN,
1300         and fold build with fold_buildN.
1301         (chrec_fold_plus_1): Fail with a chrec_don_know when the size of
1302         the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
1303         (tree_contains_chrecs): Compute an estimation of the size of the
1304         given expression.
1305         * tree-chrec.h (tree_contains_chrecs): Modify its declaration.
1306         (tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
1307         * tree-scalar-evolution.c (simple_iv): Ditto.
1308         * doc/invoke.texi (scev-max-expr-size): Documented.
1309
1310 2005-04-21  Richard Sandiford  <rsandifo@redhat.com>
1311
1312         * config.gcc (*-*-darwin*): Add darwin.opt to $extra_options.
1313         (i[34567]86-pc-msdosdjgpp*): Likewise i386/djgpp.opt.
1314         (i[34567]86-*-lynxos*, powerpc-*-lynxos*): Likewise lynx.opt.
1315         (i[34567]86-*-sco3.2v5*): Likewise i386/sco5.opt.
1316         (i[34567]86-*-pe, i[34567]86-*-cygwin*, i[34567]86-*-mingw32*)
1317         (i[34567]86-*-uwin*): Likewise i386/cygming.opt.
1318         * config/darwin.h (darwin_one_byte_bool, darwin_fix_and_continue)
1319         (darwin_fix_and_continue_switch, SUBTARGET_OPTIONS): Delete.
1320         * config/darwin.c (darwin_one_byte_bool, darwin_fix_and_continue)
1321         (darwin_fix_and_continue_switch): Delete.
1322         * config/lynx.h (SUBTARGET_OS_LYNX_SWITCHES): Delete.
1323         (SUBTARGET_SWITCHES): Delete.
1324         * config/i386/i386.h (target_flags, MASK_80387, MASK_RTD)
1325         (MASK_ALIGN_DOUBLE, MASK_SVR3_SHLIB, MASK_IEEE_FP, MASK_FLOAT_RETURNS)
1326         (MASK_NO_FANCY_MATH_387, MASK_OMIT_LEAF_FRAME_POINTER)
1327         (MASK_STACK_PROBE, MASK_NO_ALIGN_STROPS, MASK_INLINE_ALL_STROPS)
1328         (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS, MASK_MMX)
1329         (MASK_SSE, MASK_SSE2, MASK_SSE3, MASK_3DNOW, MASK_3DNOW_A)
1330         (MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT)
1331         (MASK_TLS_DIRECT_SEG_REFS, MASK_NO_RED_ZONE, TARGET_80387)
1332         (TARGET_RTD, TARGET_ALIGN_DOUBLE, TARGET_PUSH_ARGS)
1333         (TARGET_ACCUMULATE_OUTGOING_ARGS, TARGET_SVR3_SHLIB, TARGET_IEEE_FP)
1334         (TARGET_128BIT_LONG_DOUBLE, TARGET_NO_FANCY_MATH_387)
1335         (TARGET_USE_FANCY_MATH_387, TARGET_OMIT_LEAF_FRAME_POINTER)
1336         (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Delete.
1337         (TARGET_FLOAT_RETURNS_IN_80387): Make an alias of TARGET_FLOAT_RETURNS.
1338         (TARGET_64BIT): Undef before redefining.
1339         (TARGET_TLS_DIRECT_SEG_REFS, TARGET_STACK_PROBE)
1340         (TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS, TARGET_SSE)
1341         (TARGET_SSE2, TARGET_SSE3, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A)
1342         (TARGET_RED_ZONE, TARGET_USE_MS_BITFIELD_LAYOUT, TARGET_SWITCHES)
1343         (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS)
1344         (ix86_fpmath_string, ix86_tls_dialect_string, ix86_cmodel_string)
1345         (ix86_asm_string, ix86_regparm, ix86_regparm_string)
1346         (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
1347         (ix86_debug_arg_string, ix86_debug_addr_string)
1348         (ix86_align_loops_string, ix86_align_jumps_string)
1349         (ix86_align_funcs_string): Delete.
1350         * config/i386/cygming.h (MASK_NOP_FUN_DLLIMPORT)
1351         (TARGET_NOP_FUN_DLLIMPORT, SUBTARGET_SWITCHES): Delete.
1352         * config/i386/djgpp.h (MASK_BNU210, SUBTARGET_SWITCHES): Delete.
1353         (SUBTARGET_OVERRIDE_OPTIONS): Check TARGET_BNU210.
1354         * config/i386/lynx.h (SUBTARGET_SWITCHES): Delete.
1355         * config/i386/sco5.h (MASK_COFF, TARGET_ELF)
1356         (SUBTARGET_SWITCHES): Delete.
1357         * config/i386/i386.c (ix86_debug_arg_string): Delete.
1358         (ix86_debug_addr_string): Delete.
1359         (ix86_cmodel_string, ix86_asm_string, ix86_tls_dialect_string)
1360         (ix86_fpmath_string, ix86_regparm_string, ix86_regparm)
1361         (ix86_align_loops_string, ix86_align_jumps_string)
1362         (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
1363         (ix86_align_funcs_string): Make static.
1364         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1365         (ix86_handle_option): New function.
1366         (TARGET_USE_MS_BITFIELD_LAYOUT): Delete.
1367         (ix86_ms_bitfield_layout_p): Check TARGET_MS_BITFIELD_LAYOUT.
1368         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove handling
1369         of darwin_fix_and_continue_switch.
1370         (darwin_one_byte_bool): Delete.
1371         * config/rs6000/lynx.h (EXTRA_SUBTARGET_SWITCHES): Delete.
1372         * config/rs6000/rs6000.c (rs6000_override_options): Update assignment
1373         to darwin_one_byte_bool.
1374         * config/darwin.opt, config/lynx.opt, config/i386/cygming.opt,
1375         * config/i386/djgpp.opt, config/i386/i386.opt,
1376         * config/i386/sco5.opt: New files.
1377
1378 2005-04-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
1379
1380         * config/sparc/sparc.c (reg_or_0_operand, const1_operand,
1381         fp_zero_operand, fp_register_operand, intreg_operand,
1382         fcc_reg_operand, fcc0_reg_operand, icc_or_fcc_reg_operand,
1383         call_operand, call_operand_address, tgd_symbolic_operand,
1384         tld_symbolic_operand, tie_symbolic_operand, tle_symbolic_operand,
1385         symbolic_operand, symbolic_memory_operand, label_ref_operand,
1386         sp64_medium_pic_operand, data_segment_operand,
1387         text_segment_operand, splittable_symbolic_memory_operand,
1388         reg_or_nonsymb_mem_operand, splittable_immediate_memory_operand,
1389         eq_or_neq, normal_comp_operator, noov_compare_op,
1390         noov_compare64_op, v9_regcmp_op, extend_op, cc_arithop,
1391         cc_arithopn, arith_operand, arith_4096_operand, arith_add_operand,
1392         const64_operand, const64_high_operand, arith11_operand,
1393         arith10_operand, arith_double_operand, arith_double_4096_operand,
1394         arith_double_add_operand, arith11_double_operand,
1395         arith10_double_operand, small_int, small_int_or_double,
1396         uns_small_int, uns_arith_operand, clobbered_register,
1397         input_operand, compare_operand): Delete.
1398         (sparc_emit_set_const32): Use predicates in assertion.  Remove special
1399         code for TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT != 64.
1400         (sparc_emit_set_const64): Call gcc_unreachable if H_B_P_W_I == 32.
1401         (GEN_HIGHINT64, GEN_INT64): Delete.
1402         (sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
1403         gen_safe_XOR64): Adjust for above deletion.
1404         (sparc_emit_set_const64): Support only H_B_P_W_I == 64 and CONST_INTs.
1405         Use 'unsigned HOST_WIDE_INT' instead of 'long' for bitmask.
1406         (legitimate_constant_p): Use const_zero_operand instead.
1407         (sparc_extra_constraint_check): Likewise.
1408         * config/sparc/sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'O'.
1409         (PREFERRED_RELOAD_CLASS): Use const_zero_operand.
1410         (PREDICATE_CODES): Delete.
1411         * config/sparc/sparc.md: Include predicates.md.
1412         (All patterns): Adjust for new predicate names.
1413         (cmpdi, cmpdi_sp64): Use arith_operand predicate.
1414         (movhi_const64_special, movsi_const64_special): Add 'K' constraint.
1415         (movdi): Use general_operand predicate.
1416         (movdi_sp64_dbl): Delete.
1417         (movdi_const64_special): Add 'N' constraint.
1418         (movdicc): Use arith10_operand predicate.
1419         (movdi_cc_sp64, movdi_cc_sp64_trunc): Use arith11_operand predicate.
1420         (movdi_cc_reg_sp64): Use arith10_operand predicate.
1421         (movdi_cc_reg_sp64_trunc): Delete.
1422         (cmp_zero_extract, cmp_zero_extract_sp64): Use small_int_operand.
1423         (adddi3_sp64, cmp_ccx_plus, cmp_ccx_plus_set): Use arith_operand.
1424         (subdi3_sp32): Delete.
1425         (subdi3_insn_sp32): Change to define_insn_and_split.
1426         (subdi3_sp64, cmp_minus_ccx, cmp_minus_ccx_set): Use arith_operand.
1427         (muldi3, muldi3_sp64, muldi3_v8plus): Likewise.
1428         (smulsi3_highpart_v8plus, const_smulsi3_highpart_v8plus,
1429         umulsi3_highpart_v8plus, const_umulsi3_highpart_v8plus): Use
1430         small_int_operand predicate.
1431         (divdi3, udivdi3): Use arith_operand predicate.
1432         (udivsi3, udivsi3_sp32, udivsi3_sp64): Use nonimmediate_operand.
1433         (and<V64I>3_sp64, ior<V64I>3_sp64, xor<V64I:mode>3_sp64,
1434         xor_not_<V64I:mode>_sp64) : Use arith_operand predicate.
1435         (xordi3_sp64_dbl): Delete.
1436         (cmp_ccx_arith_op, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
1437         cmp_ccx_xor_not_set, cmp_ccx_arith_op_not, cmp_ccx_arith_op_not_set,
1438         cmp_ccx_neg, cmp_ccx_set_neg, one_cmpl<V64I>2_sp64, cmp_ccx_not,
1439         cmp_ccx_set_not): Use arith_operand predicate.
1440         (ashrsi3_extend2, lshrsi3_extend2 et al.): Use small_int_operand.
1441         * config/sparc/predicates.md: New file.
1442
1443 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
1444
1445         PR tree-optimization/14846
1446         * fold-const.c (fold_single_bit_test_into_sign_test): New,
1447         split out from ...
1448         (fold_single_bit_test): ... here.
1449         (fold_binary): Call fold_single_bit_test_into_sign_test
1450         instead of fold_single_bit_test.
1451
1452 2005-04-20  James E Wilson  <wilson@specifixinc.com>
1453
1454         PR c++/20805
1455         * dwarf2out.c (gen_variable_die): Don't emit a specification if this
1456         is another declaration.
1457
1458 2005-04-21  Hans-Peter Nilsson  <hp@axis.com>
1459
1460         * config/cris/predicates.md: New file.
1461         * config/cris/cris-protos.h (cris_store_multiple_op_p)
1462         (cris_movem_load_rest_p): Declare.
1463         * config/cris/cris.c (cris_store_multiple_op): Return bool, not int.
1464         (cris_movem_load_rest_p): Ditto.  Globalize.
1465         (cris_bdap_operand, cris_bdap_biap_operand,
1466         cris_orthogonal_operator, cris_commutative_orth_op,
1467         cris_operand_extend_operator,
1468         cris_additive_operand_extend_operator, cris_extend_operator,
1469         cris_plus_or_bound_operator, cris_mem_op,
1470         cris_general_operand_or_symbol,
1471         cris_general_operand_or_gotless_symbol,
1472         cris_general_operand_or_plt_symbol, cris_mem_call_operand,
1473         cris_load_multiple_op): Remove predicate functions.
1474         (cris_symbol, cris_gotless_symbol) <case UNSPEC>: Return 0, don't
1475         abort, for UNSPECs other than CRIS_UNSPEC_PLT.
1476         * config/cris/cris.h (PREDICATE_CODES): Don't define.
1477         * config/cris/cris.md: Include predicates.md.
1478         ("call", "call_value"): Generate CONSTs of Pmode, not VOIDmode.
1479
1480 2005-04-20  Ian Lance Taylor  <ian@airs.com>
1481
1482         * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
1483         * c-common.h (STMT_EXPR_STMT): Don't define.
1484         (STMT_EXPR_NO_SCOPE): Don't define.
1485         * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
1486         * c-pretty-print.c (pp_c_primary_expression): Likewise.
1487         (pp_c_expression): Likewise.
1488
1489 2005-04-20  Richard Henderson  <rth@redhat.com>
1490
1491         PR target/21100
1492         * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
1493
1494 2005-04-20  Jeff Law  <law@redhat.com>
1495
1496         * reload1.c (reload): Ignore equivalences between pseudos and
1497         read only memory.
1498
1499 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
1500
1501         PR c/12913
1502         * c-tree.h (struct c_label_list): Update comment.
1503         (struct c_label_context): Rename to struct c_label_context_se.
1504         (label_context_stack): Rename to label_context_stack_se.
1505         (C_DECL_UNJUMPABLE_VM, C_DECL_UNDEFINABLE_VM, struct
1506         c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
1507         c_end_vm_scope): New.
1508         (C_DECL_DECLARED_BUILTIN, C_DECL_USED): Use FUNCTION_DECL_CHECK.
1509         * c-decl.c (pop_scope): Call c_end_vm_scope.
1510         (pushdecl): Call c_begin_vm_scope for variably modified
1511         declarations.
1512         (define_label): Check for jumping into scope of identifier with
1513         variably modified type.  Push label on stack for those defined at
1514         current context of identifiers with variably modified type.
1515         (start_function): Create stack level for context of identifiers
1516         with variably modified type.
1517         (finish_function): Pop stack level for context of identifiers with
1518         variably modified type.
1519         * c-typeck.c (label_context_stack): Rename to
1520         label_context_stack_se.
1521         (label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
1522         (c_finish_goto_label): Check for jumping into scope of identifier
1523         with variably modified type.  Push label on stack for those jumped
1524         to from current context of identifiers with variably modified
1525         type.
1526         (struct c_switch): Add blocked_vm.
1527         (c_start_case): Initialize blocked_vm.
1528         (do_case): Check blocked_vm.
1529         (c_finish_case): Add comment.
1530         (c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
1531         variable label_context_stack.
1532
1533 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
1534
1535         * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
1536         conditional_replacement, value_replacement, abs_replacement,
1537         minmax_replacement.
1538         (replace_phi_edge_with_variable): Remove argument BB.
1539         (conditional_replacement, value_replacement,
1540         minmax_replacement, abs_replacement): Remove argument PHI_BB.
1541         Update a call to replace_phi_edge_with_variable.
1542
1543         * tree-ssa-phiopt.c: Fix comments.
1544
1545 2005-04-20  Michael Matz  <matz@suse.de>
1546
1547         PR20973
1548         * reload.c (push_reload, find_dummy_reload): Check for uninitialized
1549         pseudos.
1550
1551 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
1552
1553         * tree-ssa-phiopt.c: Fix comment typos.
1554
1555         PR tree-optimization/21116
1556         * tree-ssa-phiopt.c: Fix a typo.
1557
1558 2005-04-19  Richard Henderson  <rth@redhat.com>
1559
1560         * builtins.c (expand_builtin_sync_operation): Revert last change.
1561         * optabs.c (expand_bool_compare_and_swap): Compare vs old value,
1562         not vs new value.
1563         (expand_compare_and_swap_loop): Likewise.
1564         (expand_sync_operation): Remove fallback from NAND to AND; invert
1565         memory operand when expanding from cmpxchg.
1566         (expand_sync_fetch_operation): Likewise.
1567         * doc/extend.texi (Atomic Builtins): Fix docs for nand and
1568         compare-and-swap.
1569
1570         * config/alpha/alpha.c (alpha_split_atomic_op): Invert memory operand
1571         when implementing NAND.  Fix double-add for AFTER.
1572         * config/alpha/sync.md (sync_nand<I48MODE>): Invert memory operand.
1573         (sync_old_nand<I48MODE>, sync_new_nand<I48MODE>): Likewise.
1574         (sync_compare_and_swap<I48MODE>): Fix compare vs zero.  Return old
1575         memory value.
1576         (sync_lock_test_and_set<I48MODE>): Remove extra label and last
1577         memory barrier.
1578
1579         * config/i386/sync.md (sync_compare_and_swap<IMODE>): Fix pattern
1580         to return old memory value.
1581         (sync_compare_and_swap_cc<IMODE>): Likewise.
1582
1583         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Early
1584         return pre-reload.  Don't consider output or anti dependencies.
1585         * config/ia64/sync.md (IMODE): New.
1586         (modesuffix): Add QI and HI.
1587         (memory_barrier): Simplify expansion.
1588         (sync_compare_and_swap<IMODE>): Use IMODE, not I48MODE.
1589         (cmpxchg_acq_<IMODE>): Likewise.
1590         (sync_lock_test_and_set<IMODE>): Likewise.
1591         (sync_lock_release<IMODE>): Likewise.
1592
1593 2005-04-19  James A. Morrison  <phython@gcc.gnu.org>
1594
1595         * fold-const.c (fold_binary): Fold ~(X ^ Y) to ~X ^ Y or X ^ ~Y if
1596         ~X or ~Y simplify.
1597
1598 2005-04-19  James A. Morrison  <phython@gcc.gnu.org>
1599
1600         * fold-const (fold_binary):  Fold ~X ^ ~ Y to X ^ Y.
1601
1602 2005-04-20  Michael Pogue  <michael.pogue@sun.com>
1603             Joseph S. Myers  <joseph@codesourcery.com>
1604
1605         * c.opt (Wint-to-pointer-cast, Wpointer-to-int-cast): New options.
1606         * c-typeck.c (build_c_cast): Check these options.
1607         * doc/invoke.texi: Document these options.
1608
1609 2005-04-20  Kazu Hirata  <kazu@cs.umass.edu>
1610
1611         * tree-ssa-phiopt.c: Update a comment about the pass.
1612
1613 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
1614
1615         * tree-ssa-phiopt.c, config/arm/arm.c, config/fr30/fr30.md,
1616         config/mcore/mcore.c: Fix comment typos.
1617
1618 2005-04-19  Daniel Jacobowitz  <dan@codesourcery.com>
1619
1620         * Makefile.in (libgcc.mk): Pass GCC_FOR_TARGET.
1621         * mklibgcc.in: Use $GCC_FOR_TARGET instead of ./xgcc.
1622
1623 2005-04-19  Paul Brook  <paul@codesourcery.com>
1624
1625         * config/arm/arm.c (arm_init_libfuncs): Clear mod optabs. 
1626
1627 2005-04-19  Andrew Haley  <aph@redhat.com>
1628
1629         PR java/21022
1630         * dbxout.c (dbxout_type_fields): Check DECL_IGNORED_P before
1631         looking at a field's bitpos.
1632
1633 2005-04-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1634
1635         * system.h (fopen, fdopen, freopen): Define these to the unlocked
1636         libiberty functions.
1637
1638 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
1639
1640         PR tree-optimization/21096
1641         * tree-ssa-copy.c (fini_copy_prop): Free cached_last_copy_of.
1642
1643 2005-04-19  Alan Modra  <amodra@bigpond.net.au>
1644
1645         PR target/21098
1646         * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
1647         * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.
1648
1649 2005-04-19  Alexandre Oliva  <aoliva@redhat.com>
1650
1651         * tree-cfg.c (dump_function_to_file): Use cfun info only if it
1652         refers to the function being dumped.
1653
1654 2005-04-18  Daniel Jacobowitz  <dan@codesourcery.com>
1655
1656         * varasm.c (assemble_start_function): Remove reset of in_section.
1657
1658 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
1659
1660         PR tree-optimization/21085
1661         * fold-const (fold_binary): Don't change X % -C to X % C if C has
1662         overflowed.
1663
1664 2005-04-19  Ben Elliston  <bje@au.ibm.com>
1665
1666         * doc/invoke.texi (Optimize Options): Refer to the correct
1667         optimisation flag -ftree-dominator-opts, not -ftree-dom.
1668
1669 2005-04-18  Christopher Jaillet <christophe.jaillet@wanadoo.fr>
1670
1671         * config/rs6000/rs6000.c (machopic_output_stub):  Increase
1672         alloca argument to be big enough.
1673
1674 2005-04-18  Alexandre Oliva  <aoliva@redhat.com>
1675
1676         PR middle-end/21049
1677         * tree-cfg.c (dump_function_to_file): Do not crash if cfun or
1678         cfun->cfg are NULL.
1679
1680 2005-04-18  Tom Tromey  <tromey@redhat.com>
1681
1682         * cgraphunit.c (cgraph_finalize_compilation_unit): Fix a comment
1683         typo.
1684
1685 2005-04-18  Richard Henderson  <rth@redhat.com>
1686
1687         * config/alpha/alpha.c (alpha_split_atomic_op): New.
1688         (alphaev5_insn_pipe): Add LD_L, ST_C, MB types.
1689         (alphaev4_insn_pipe): Likewise.  Correct IST and LDSYM pipes.
1690         * config/alpha/alpha-protos.h: Update.
1691         * config/alpha/alpha.md (UNSPECV_MB, UNSPECV_LL, UNSPECV_SC): New.
1692         (UNSPECV_ATOMIC, UNSPECV_CMPXCHG, UNSPECV_XCHG): New.
1693         (attr type): Add ld_l, st_c, mb.
1694         (andsi_internal, andnotsi3, iorsi_internal, one_cmplsi_internal,
1695         iornotsi3, xorsi_internal, xornotsi3): New.
1696         * config/alpha/ev4.md (ev4_ld): Add ld_l.
1697         (ev4_ist_c, ev4_mb): New.
1698         * config/alpha/ev5.md (ev5_st): Add st_c, mb.
1699         (ev5_ld_l): New.
1700         * config/alpha/ev6.md (ev6_ild): Add ld_l.
1701         (ev6_ist): Add st_c.
1702         (ev6_mb): New.
1703         * config/alpha/sync.md: New file.
1704
1705 2005-04-18  Richard Henderson  <rth@redhat.com>
1706
1707         * builtins.c (expand_builtin_sync_operation): Fold nand to and
1708         for constants.
1709
1710         * optabs.c (expand_sync_operation): Fix typo expanding nand to and.
1711
1712 2005-04-18  Devang Patel  <dpatel@apple.com>
1713
1714         * config/rs6000/atlivec.md (mulv4si3): New pattern.
1715         
1716 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
1717
1718         PR tree-optimization/20922
1719         * fold-const.c (fold_binary): Fold X - c > X and X + c < X to false.
1720         Fold X + c >= X and fold X - c <= X to true.
1721
1722 2005-04-18  James A. Morrison  <phython@gcc.gnu.org>
1723
1724         * config/ia64/unwind-ia64.c (emergency_reg_state_free): Make an
1725         unsigned int.
1726         (emergency_labeled_state_free): Likewise.
1727
1728 2005-04-18  Nick Clifton  <nickc@redhat.com>
1729
1730         * config/h8300/h8300.md (jump): Remove prescan parameter from
1731         calls to final_scan_insn.
1732
1733         * config/arc/arc.c (arc_output_function_epilogue): Remove prescan
1734         parameter from calls to final_scan_insn.
1735
1736         * config.gcc (m68hc12): Use the m68hc11.opt file for target
1737         specific options.
1738         (v850e, v850e1): Use the v850.opt file for target specific
1739         options.
1740
1741 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
1742
1743         PR tree-optimization/21001
1744         * tree-optimize.c (init_tree_optimization_passes): Move the
1745         first pass_forwprop immediately before pass_vrp.
1746
1747 2005-04-17  Ian Lance Taylor  <ian@airs.com>
1748
1749         * c-common.def (SIZEOF_EXPR, ARROW_EXPR, ALIGNOF_EXPR): Remove.
1750         * c-common.c (c_sizeof_or_alignof_type): Change second parameter
1751         from enum tree_code op to bool is_sizeof.
1752         * c-common.h (c_sizeof_or_alignof_type): Update declaration.
1753         (c_sizeof, c_alignof): Update calls to c_sizeof_or_alignof_type.
1754         * c-pretty-print.c (pp_c_postfix_expression): Remove ARROW_EXPR
1755         case.
1756         (pp_c_unary_expression): Remove SIZEOF_EXPR and ALIGNOF_EXPR
1757         cases.
1758         (pp_c_expression): Remove ARROW_EXPR, SIZEOF_EXPR, and
1759         ALIGNOF_EXPR cases.
1760
1761 2005-04-17  Ian Lance Taylor  <ian@airs.com>
1762
1763         * system.h: Poison DONT_ACCESS_GBLS_AFTER_EPILOGUE.
1764
1765 2005-04-17  Richard Henderson  <rth@redhat.com>
1766
1767         * config/alpha/alpha.c (va_list_skip_additions): Only define if
1768         TARGET_ABI_OSF.
1769         (TARGET_STDARG_OPTIMIZE_HOOK): Likewise.
1770         (alpha_stdarg_optimize_hook): Likewise.  Allow for one more round
1771         of indirection through ssa names while looking for the gpr counter
1772         field.
1773         (alpha_setup_incoming_varargs) <TARGET_ABI_OSF>: Make use of the
1774         saved va_list_gpr_size and va_list_fpr_size.
1775
1776 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
1777
1778         * tree-vrp.c (compare_values): Check that VAL1 and VAL2 are
1779         both pointers or both integers.
1780
1781         * tree-vrp.c (maybe_add_assert_expr): Don't assert
1782         ASSERT_EXPRs for single-use variable.
1783
1784         * tree-into-ssa.c: Fix a comment typo.
1785
1786 2005-04-17  Richard Sandiford  <rsandifo@redhat.com>
1787
1788         * config/mips/iris6.h (DRIVER_SELF_SPECS): Check -march as well as
1789         -mipsN before forcing a default of -mips2.
1790
1791 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
1792
1793         * predict.h (IS_TAKEN): Remove.
1794         * rtl.h (NOTE_PREDICTION): Likewise.
1795
1796         * modulo-sched.c (CFG_HOOKS): Remove.
1797
1798         * c-parser.c (N_C_TTYPES): Remove.
1799
1800         * tree-flow-inline.h (get_stmt_operands): Remove.
1801         * lambda-code.c, tree-ssa-loop-unswitch.c,
1802         tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa-propagate.c,
1803         tree-ssa-sink.c, tree-ssa.c, tree-tailcall.c,
1804         tree-vect-transform.c, tree-vectorizer.c, tree-vrp.c): Remove
1805         calls to get_stmt_operands.
1806         * doc/tree-ssa.texi: Don't mention get_stmt_operands.
1807
1808 2005-04-17  Richard Henderson  <rth@redhat.com>
1809
1810         PR target/20375
1811         * config/alpha/alpha.c (alpha_setup_incoming_varargs): Advance a copy
1812         of CUMULATIVE_ARGS past the last named argument.
1813         (alpha_va_start): Expect pretend_args_size only if strictly less than
1814         6 named arguments.
1815
1816 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
1817
1818         PR middle-end/21024
1819         * builtins.c (expand_builtin_strcat): Convert the result of
1820         strlen to the right type.
1821         * fold-const.c (fold_binary) <PLUS_EXPR>: Use fold_convert to
1822         avoid creating type mismatches.
1823         <GE_EXPR>: Pass op0 and op1 to fold_build2 to avoid creating
1824         type mismatches.
1825
1826         * c-lex.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Remove.
1827
1828 2005-04-16  Richard Henderson  <rth@redhat.com>
1829
1830         PR target/21051
1831         * builtins.c (expand_builtin) <BUILT_IN_BOOL_COMPARE_AND_SWAP_*>:
1832         Use the mode of boolean_type_node when the user doesn't provide one.
1833         * config/ia64/sync.md (sync_lock_release<I48MODE>): Use operand 1.
1834
1835 2005-04-16  Alexandre Oliva  <aoliva@redhat.com>
1836
1837         PR target/20126
1838         * loop.c (loop_givs_rescan): Handle non-replaceable (plus (reg)
1839         (const)).
1840
1841         * tree-scalar-evolution.c (interpret_rhs_modify_expr): Fix typo in
1842         comment.
1843
1844 2005-04-16  Roger Sayle  <roger@eyesopen.com>
1845             Steven Bosscher  <stevenb@suse.de>
1846
1847         * fold-const.c (fold_binary_to_constant): Delete obsolete comment.
1848         (fold_unary_to_constant): Likewise.
1849
1850 2005-04-16  Kazu Hirata  <kazu@cs.umass.edu>
1851
1852         * basic-block.h: Adjust the value of PROP_SCAN_DEAD_STORES,
1853         PROP_ASM_SCAN.
1854
1855 2005-04-16  Gerald Pfeifer  <gerald@pfeifer.com>
1856
1857         * doc/install.texi (Specific): Avoid using asterisks in @anchor
1858         names related to target triplets.
1859         Remove i?86-*-esix from platform directory.
1860         Remove powerpc-*-eabiaix from platform directory.
1861
1862 2005-04-16  Joseph S. Myers  <joseph@codesourcery.com>
1863
1864         PR middle-end/20491
1865         * config/ia64/ia64.c (rtx_needs_barrier): Recurse instead of
1866         falling through from SUBREG case to REG.
1867
1868 2005-04-15  Roger Sayle  <roger@eyesopen.com>
1869
1870         * fold-const.c (fold_relational_hi_lo): Delete function and prototype.
1871         (fold_binary): Update comment mentioning fold_relational_hi_lo.
1872         (fold_binary_to_constant): Simplify using fold_binary.
1873         (fold_unary_to_constant): Likewise, simplify using fold_unary.
1874
1875 2005-04-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1876
1877         * gthr-posix.c (pthread_cancel): Define.
1878         (pthread_mutexattr_init): Likewise.
1879         (pthread_mutexattr_settype): Likewise.
1880         (pthread_mutexattr_destroy): Likewise.
1881
1882 2005-04-15  David S. Miller  <davem@davemloft.net>
1883
1884         PR target/20673
1885         * config/sparc/sparc.h (sparc_hard_reg_printed): Mark as GTY(()).
1886
1887 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
1888
1889         PR tree-optimization/21031
1890         * tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): New.
1891         (forward_propagate_into_cond_1): Call it.  Forward propagate
1892         integer-integer casts into COND_EXPRs.
1893
1894 2005-04-15  Dave Korn  <dave.korn@artimi.com>
1895
1896         * gcc.c (default_compilers): Clarify obscure error message when
1897         reading from standard input.
1898
1899 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
1900
1901         * basic-block.h (PROP_EQUAL_NOTES): Remove.
1902         * flow.c (propagate_one_insn): Don't use PROP_EQUAL_NOTES.
1903
1904         * tree-ssa-alias.c (init_alias_info): Remove a call to
1905         get_stmt_operands.
1906
1907 2005-04-15  Andrew MacLeod  <amacleod@redhat.com>
1908
1909         * tree-vect-analyze.c (vect_stmt_relevant_p): Process immediate uses
1910         of non-virtual PHI nodes like we use to.
1911
1912 2005-05-15  Paolo Bonzini  <bonzini@gnu.org>
1913
1914         * genattrtab.c (ATTR_EQ_ATTR_P): Remove.
1915         (attr_copy_rtx): Do not use it.
1916
1917 2005-04-15  Andrew Macleod  <amacleod@redhat.com>
1918
1919         * doc/tree-ssa.texi: Grammer/abbreviation updates.
1920
1921 2005-04-15  Diego Novillo  <dnovillo@redhat.com>
1922
1923         * tree-vect-transform.c (vectorizable_store): Mark necessary
1924         objects in the vectorized store needing renaming.  Update the
1925         SSA graph for V_MAY_DEF operands in the original store.
1926
1927 2005-04-14  Daniel Berlin <dberlin@dberlin.org>
1928
1929         * tree-ssa-pre.c (compute_avail): It's okay to have
1930         TREE_INVARIANT's here, and value number the resulting expressions.
1931         (create_expression_by_pieces): Make sure operands that were
1932         min_invariant when we started, stay that way.
1933
1934 2005-04-15  David Edelsohn  <edelsohn@gnu.org>
1935
1936         * doc/install.texi (*-ibm-aix*): Add comment about system limits.
1937
1938 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
1939
1940         PR tree-optimization/20936.
1941         * tree-ssa-ccp.c (visit_assignment): Fix a typo.
1942
1943 2005-04-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1944
1945         * doc/invoke.texi: Fix typos.
1946         * doc/md.texi: Likewise.
1947         * doc/rtl.texi: Likewise.
1948         * doc/sourcebuild.texi: Likewise.
1949         * doc/tm.texi: Likewise.
1950
1951 2005-04-15  Uros Bizjak  <uros@kss-loka.si>
1952
1953         PR tree-optimization/21004
1954         * convert.c (convert_to_integer): Convert ceilf, ceill, floorf
1955         and floorl in c99 mode only.
1956         * builtins.c (expand_builtin_int_roundingfn): Assert that
1957         fallback_fndecl is not NULL_TREE.
1958
1959 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
1960
1961         * cfgrtl.c (purge_all_dead_edge): Remove an unused argument.
1962         * basic-block.h: Update the prototype for
1963         purge_all_dead_edges.
1964         * cfgexpand.c (tree_expand_cfg): Update a call to
1965         purge_all_dead_edges.
1966         * combine.c (combine_instructions): Likewise.
1967         * passes.c (rest_of_handle_old_regalloc, rest_of_handle_cse,
1968         rest_of_handle_cse2, rest_of_handle_gcse,
1969         rest_of_handle_postreload): likewise.
1970
1971 2005-04-15  Alexandre Oliva  <aoliva@redhat.com>
1972
1973         PR middle-end/20739
1974         * gimplify.c (gimplify_addr_expr): Compensate for removal of
1975         e.g. cv-qualification conversions.
1976
1977 2005-04-14  Mike Stump  <mrs@apple.com>
1978
1979         * config/darwin-c.c (framework_construct_pathname): We must
1980         find all headers of a framework in the first instance of it
1981         found in the seach path.
1982
1983 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
1984
1985         PR tree-optimization/21021
1986         * tree-vrp.c (compare_values): Work around a bug in the front
1987         end that produces a comparison of mismatched types.
1988
1989 2004-04-14  Richard Henderson  <rth@redhat.com>
1990
1991         * config/ia64/ia64.h (enum fetchop_code): Remove.
1992         (enum ia64_builtins): Move ...
1993         * config/ia64/ia64.c (enum ia64_builtins): ... here.  Remove all
1994         members except BSP and FLUSHRS.
1995         (ia64_init_builtins): Remove __sync builtins.
1996         (ia64_expand_builtin): Likewise.
1997         (ia64_expand_fetch_and_op, ia64_expand_op_and_fetch): Remove.
1998         (ia64_expand_compare_and_swap, ia64_expand_lock_test_and_set): Remove.
1999         (ia64_expand_lock_release): Remove.
2000         * config/ia64/ia64.md (mf): Move to sync.md.
2001         (mf_internal, fetchadd_acq_si, fetchadd_acq_di, cmpxchg_acq_si,
2002         cmpxchg_acq_di, xchgsi, xchgdi): Likewise.
2003         * config/ia64/sync.md: New file.
2004         (memory_barrier): Rename from mf.
2005         (fetchadd_acq_<I48MODE>): Macroize from _si/_di patterns.
2006         (cmpxchg_acq_<I48MODE>): Likewise.
2007         (sync_lock_test_and_set<I48MODE>): Likewise.
2008
2009         * config/ia64/ia64intrin.h: Define nothing for C; limit #defines
2010         to c++.  Remove __sync* declarations.  s/_si/_4/.  s/_di/_8/.
2011
2012 2004-04-14  Richard Henderson  <rth@redhat.com>
2013
2014         * config/i386/i386.c (x86_cmpxchg, x86_xadd): New.
2015         (ix86_compare_emitted): New.
2016         (ix86_expand_compare): Use ix86_compare_emitted if set.
2017         (ix86_expand_setcc): Only emit REG_EQUAL if both ix86_compare_op0
2018         and ix86_compare_op0 are set.
2019         * config/i386/i386.h (x86_cmpxchg, x86_xadd): Declare.
2020         (TARGET_CMPXCHG, TARGET_XADD): New.
2021         (ix86_compare_emitted): Declare.
2022         * config/i386/i386.md: Include sync.md
2023         (UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2): New.
2024         (UNSPECV_XCHG, UNSPECV_LOCK): New.
2025         * config/i386/sync.md: New file.
2026
2027 2004-04-14  Richard Henderson  <rth@redhat.com>
2028
2029         PR middle-end/14311
2030         * builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2,
2031         BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2,
2032         BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1,
2033         BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8,
2034         BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4,
2035         BT_FN_I8_VPTR_I8_I8): New.
2036         * builtins.def (DEF_SYNC_BUILTIN): New.
2037         (BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1,
2038         BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4,
2039         BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N,
2040         BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2,
2041         BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8,
2042         BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1,
2043         BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4,
2044         BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N,
2045         BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2,
2046         BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8,
2047         BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1,
2048         BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4,
2049         BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N,
2050         BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2,
2051         BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8,
2052         BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1,
2053         BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4,
2054         BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N,
2055         BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2,
2056         BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8,
2057         BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1,
2058         BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4,
2059         BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N,
2060         BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2,
2061         BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8,
2062         BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1,
2063         BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4,
2064         BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N,
2065         BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2,
2066         BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8,
2067         BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
2068         BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
2069         BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N,
2070         BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2,
2071         BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8,
2072         BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1,
2073         BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4,
2074         BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N,
2075         BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2,
2076         BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8,
2077         BUILT_IN_SYNCHRONIZE: New.
2078         * builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN
2079         as a function.  Accept __sync_ as a prefix as well.
2080         (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
2081         expand_builtin_lock_test_and_set, expand_builtin_synchronize,
2082         expand_builtin_lock_release): New.
2083         (expand_builtin): Call them.
2084         * c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if
2085         neither BOTH_P nor FALLBACK_P are defined.
2086         (builtin_type_for_size): New.
2087         (sync_resolve_size, sync_resolve_params, sync_resolve_return): New.
2088         (resolve_overloaded_builtin): New.
2089         * c-common.h (resolve_overloaded_builtin): Declare.
2090         (builtin_type_for_size): Declare.
2091         * c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin.
2092         * expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab,
2093         sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab,
2094         sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab,
2095         sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab,
2096         sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab,
2097         sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap,
2098         sync_compare_and_swap_cc, sync_lock_test_and_set,
2099         sync_lock_release): New.
2100         * optabs.h: Declare them.
2101         * expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap,
2102         expand_sync_operation, expand_sync_fetch_operation,
2103         expand_sync_lock_test_and_set): Declare.
2104         * genopinit.c (optabs): Add sync optabs.
2105         * optabs.c (init_optabs): Initialize sync optabs.
2106         (expand_val_compare_and_swap_1, expand_val_compare_and_swap,
2107         expand_bool_compare_and_swap, expand_compare_and_swap_loop,
2108         expand_sync_operation, expand_sync_fetch_operation,
2109         expand_sync_lock_test_and_set): New.
2110         * doc/extend.texi (Atomic Builtins): New section
2111         * doc/md.texi (Standard Names): Add sync patterns.
2112
2113 2005-04-14  Alexandre Oliva  <aoliva@redhat.com>
2114
2115         * tree-eh.c (lower_try_finally_copy): Generate new code in
2116         response to goto_queue entries as if the queue was sorted by
2117         index, not pointers.
2118         (lower_try_finally_switch): Likewise.
2119
2120 2005-04-14  Richard Henderson  <rth@redhat.com>
2121
2122         * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ...
2123         (ix86_expand_sse_movcc): ... here.  Take cmp as a pre-computed
2124         register.
2125         (ix86_expand_fp_movcc): Update to match.
2126         (ix86_expand_fp_vcond, ix86_expand_int_vcond): New.
2127         * config/i386/i386-protos.h: Update.
2128         * config/i386/sse.md (vcondv4sf, vcondv2df): New.
2129         (vcond<SSEMODE124>, vcondu<SSEMODE12>): New.
2130
2131 2005-04-14  Joseph S. Myers  <joseph@codesourcery.com>
2132
2133         * doc/cpp.texi, doc/install.texi: Change references to GCC 3.5 to
2134         refer to 4.0.
2135
2136 2005-04-14  Julian Brown  <julian@codesourcery.com>
2137
2138         * Revert elfos.h part of my patch from 2005-04-13 for causing libstdc++
2139         link failures on ppc64 Linux.
2140
2141 2005-04-14  Andreas Krebbel  <krebbel1@de.ibm.com>
2142
2143         * config.gcc: Set cpu_type for s390.
2144
2145 2005-04-14  Daniel Berlin  <dberlin@dberlin.org>
2146
2147         Fix PR tree-optimization/20963
2148         * tree-ssa-pre.c (compute_avail): Remove special case for
2149         TREE_INVARIANT.
2150         (create_expression_by_pieces): Add value numbers for forced out
2151         statements.
2152
2153 2005-04-14  Hans-Peter Nilsson  <hp@axis.com>
2154
2155         * config/cris/cris.md: Replace references to (reg:SI 16) with
2156         (reg:SI CRIS_SRP_REGNUM).
2157
2158 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
2159
2160         PR tree-optimization/20657
2161         * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to
2162         create an appropriate range from it.
2163
2164 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
2165
2166         * reg-stack.c (subst_stack_regs_pat): Handle <UNSPEC_FIST_FLOOR> and
2167         <UNSPEC_FIST_CEIL> case.
2168
2169         * config/i386/i386.md (UNSPEC_FIST_FLOOR, UNSPEC_FIST_CEIL): New.
2170         (*fist<mode>2_floor_1, fistdi2_floor, fistdi2_floor_with_temp)
2171         (fist<mode>2_floor, fist<mode>2_floor_with_temp): New isns patterns
2172         to implement lfloor and llfloor built-ins as x87 intrinsic function.
2173         (fistdi2_floor, fist<mode>2_floor splitters): New splitters.
2174         (lfloor<mode>2): New expanders.
2175         (*fist<mode>2_ceil_1, fistdi2_ceil, fistdi2_ceil_with_temp)
2176         (fist<mode>2_ceil, fist<mode>2_ceil_with_temp): New isns patterns
2177         to implement lceil and llceil built-ins as x87 intrinsic function.
2178         (fistdi2_ceil, fist<mode>2_ceil splitters): New splitters.
2179         (lceil<mode>2): New expanders.
2180
2181 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
2182
2183         * convert.c (convert_to_integer): Convert (long int)trunc{,f,l},
2184         and (long long int)ceil{,f,l} into FIX_TRUNC_EXPR.
2185
2186 2005-04-14  Ulrich Weigand  <uweigand@de.ibm.com>
2187
2188         PR target/20927
2189         * config/s390/s390-modes.def: Define TFmode.
2190
2191 2005-04-13  Richard Sandiford  <rsandifo@redhat.com>
2192
2193         * config/mips/mips.h (ASM_OUTPUT_CASE_LABEL): Delete.
2194         (JUMP_TABLES_IN_TEXT_SECTION): Define.
2195         * config/mips/mips.c (mips16_insn_length): Remove reference to
2196         JUMP_TABLES_IN_TEXT_SECTION.
2197
2198 2005-04-13 Fariborz Jahanian <fjahanian@apple.com>
2199
2200         * simplify-rtx.c (simplify_binary_operation_1): Return
2201         scalar or vector of constant 0, depending on the xor's
2202         mode.
2203
2204 2005-04-13  Dale Johannesen  <dalej@apple.com>
2205
2206         * objc/Make-lang.in (objc-lang.o):  Depend on tree-gimple.h.
2207         (objc-act.o):  Ditto.
2208         * objc/objc-act.c (objc_gimplify_expr):  New.
2209         (objc_get_callee_fndecl):  New.
2210         * objc/objc-act.h:  Include tree-gimple.h.  Declare new functions.
2211         * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR):  Define.
2212         (LANG_HOOKS_GET_CALLEE_FNDECL):  Define.
2213
2214 2005-04-13  Devang Patel  <dpatel@apple.com>
2215
2216         * tree-if-conv.c (tree_if_convert_cond_expr): Do not create extra
2217         temp variables.
2218
2219 2005-04-13  Hans-Peter Nilsson  <hp@axis.com>
2220
2221         CRIS prologue as RTL.
2222         * config/cris/cris-protos.h (cris_emit_movem_store)
2223         (cris_expand_prologue): Prototype.
2224         * config/cris/cris.c (struct machine_function): New member
2225         stdarg_regs.
2226         (cfa_label_num, cris_target_asm_function_prologue): Remove.
2227         (TARGET_ASM_FUNCTION_PROLOGUE): Don't override.
2228         (cris_general_operand_or_gotless_symbol): Accept CRIS_UNSPEC_GOT.
2229         (cris_load_multiple_op, cris_return_address_on_stack)
2230         (cris_return_address_on_stack_for_return): ISO-Cify.
2231         (cris_store_multiple_op): New predicate function.
2232         (cris_expand_prologue, cris_emit_movem_store): New functions.
2233         (cris_print_operand) <case 'O'>: Handle modifications other than
2234         post-increment.
2235         (cris_symbol, cris_got_symbol): Return 0 for CRIS_UNSPEC_GOT.
2236         (cris_gotless_symbol): Return 1 for CRIS_UNSPEC_GOT.
2237         (cris_gen_movem_load): Rearrange slightly to make local variable
2238         src a parameter, removing osrc.
2239         (cris_setup_incoming_varargs): Set machine_function member
2240         stdarg_regs to correspond to the number of registers that need to
2241         be saved.
2242         * config/cris/cris.h (EXTRA_CONSTRAINT_S): Accept
2243         CRIS_UNSPEC_GOT.
2244         (PREDICATE_CODES): Add cris_store_multiple_op.  Make
2245         cris_general_operand_or_gotless_symbol accept UNSPEC.
2246         * config/cris/cris.md (CRIS_UNSPEC_GOT): New constant.
2247         ("*movsi_internal") <alternative 8>: Handle CRIS_UNSPEC_GOT.
2248         ("*cris_store_multiple"): New pattern.  Tweak common comment above
2249         this and "*cris_load_multiple".
2250         ("prologue"): New define_expand.
2251
2252         * config/cris/cris.md ("epilogue"): Conditionalize on
2253         TARGET_PROLOGUE_EPILOGUE.
2254
2255 2005-04-13  Steve Ellcey  <sje@cup.hp.com>
2256
2257         PR target/20924
2258         * config/ia64/ia64.md (divsf3_internal_lat): Generate frcpa with
2259         fpsr 0 instead of fpsr 1.
2260         (divsf3_internal_thr): Ditto.
2261         (divdf3_internal_lat): Ditto.
2262         (divdf3_internal_thr): Ditto.
2263         (divxf3_internal_lat): Ditto.
2264         (divxf3_internal_thr): Ditto.
2265
2266 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
2267
2268         PR tree-optimization/20913
2269         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.
2270
2271         PR tree-optimization/20702
2272         * tree-vrp.c (maybe_add_assert_expr): Recurse into
2273         dominator children that haven't been walked into.
2274
2275 2005-04-13  Julian Brown  <julian@codesourcery.com>
2276
2277         * config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK from
2278         being used for symbols with vague linkage when HAVE_GAS_COMDAT_GROUP
2279         is true.
2280
2281 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
2282
2283         * basic-block.h, tree-ssa-uncprop.c, varasm.c,
2284         config/i386/sse.md: Fix comment typos.
2285
2286         * genattrtab.c (NULL_ATTR): Remove.
2287         * ifcvt.c (NULL_EDGE): Likewise.
2288
2289         * rtl.h (RTX_EXPR_FIRST, RTX_EXPR_LAST): Remove.
2290
2291         * rtl.h (NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS,
2292         NOTE_PREDICT): Remove.
2293
2294 2005-04-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
2295
2296         * configure.ac (gcc_AC_CHECK_DECLS): Add vsnprintf.
2297         * configure: Regenerate.
2298         * config.in: Likewise.
2299         * system.h: Declare vsnprintf if not already declared.
2300
2301 2005-04-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
2302
2303         * optc-gen.awk: Handle stand-alone Mask records.
2304         * opth-gen.awk: Likewise.
2305         * doc/options.texi (Option file format): Document them.
2306         * config.gcc (sparc-*-netbsdelf*, sparc-*-linux*, sparc64-*-freebsd*,
2307         sparc64-*-linux*, sparc64-*-netbsd*): Add long-double-switch.opt.
2308         (sparc64-*-openbsd*, sparc64-*-elf*): Add little-endian.opt.
2309         * config/sparc/sparc.h (MASK_FPU, MASK_UNALIGNED_DOUBLES,
2310         MASK_V8, MASK_SPARCLITE, MASK_SPARCLET, MASK_V9,
2311         MASK_DEPRECATED_V8_INSNS, MASK_IMPURE_TEXT, MASK_APP_REGS,
2312         MASK_HARD_QUAD, MASK_LITTLE_ENDIAN, MASK_PTR64, MASK_64BIT,
2313         MASK_STACK_BIAS, MASK_FPU_SET, MASK_VIS, MASK_V8PLUS,
2314         MASK_FASTER_STRUCTS, MASK_LONG_DOUBLE_128): Delete.
2315         (TARGET_FPU, TARGET_UNALIGNED_DOUBLES, TARGET_V8, TARGET_SPARCLITE,
2316         TARGET_SPARCLET, TARGET_V9, TARGET_DEPRECATED_V8_INSNS,
2317         TARGET_IMPURE_TEXT, TARGET_APP_REGS, MASK_HARD_QUAD,
2318         TARGET_LITTLE_ENDIAN, TARGET_PTR64, TARGET_64BIT, MASK_STACK_BIAS,
2319         TARGET_FPU_SET, TARGET_VIS, TARGET_V8PLUS, TARGET_FASTER_STRUCTS,
2320         TARGET_LONG_DOUBLE_128): Likewise.
2321         (TARGET_SWITCHES, SUBTARGET_SWITCHES): Likewise.
2322         (TARGET_OPTIONS, SUBTARGET_OPTIONS): Likewise.
2323         * config/sparc/freebsd.h (SUBTARGET_SWITCHES): Likewise.
2324         * config/sparc/linux.h (SUBTARGET_SWITCHES): Likewise.
2325         * config/sparc/linux64.h (SUBTARGET_SWITCHES): Likewise.
2326         * config/sparc/netbsd-elf.h (SUBTARGET_SWITCHES): Likewise.
2327         * config/sparc/sp64-elf.h (SUBTARGET_SWITCHES): Likewise.
2328         * config/sparc/sparc.c (fpu_option_set): New global.
2329         (sparc_handle_option): New function.
2330         (sparc_override_options): Test fpu_option_set.
2331         (TARGET_DEFAULT_TARGET_FLAGS): Set to TARGET_DEFAULT.
2332         (TARGET_HANDLE_OPTION): Set to sparc_handle_option.
2333         * config/sparc/sparc.opt: New file.
2334         * config/sparc/little-endian.opt: Likewise.
2335         * config/sparc/long-double-switch.opt: Likewise.
2336
2337 2005-04-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2338
2339         * config/bfin/bfin.c (bfin_lib_id_given): New static variable.
2340         (bfin_handle_options): Set it if -mshared-library-id= is seen.
2341         * config/bfin/bfin.opt (mshared-library-id=): Lose
2342         Var(bfin_lib_id_given).
2343
2344 2005-04-13  Matt Thomas  <matt@3am-software.com>
2345
2346         * config/rs6000/sysv4.h (NO_IMPLICIT_EXTERN_C): undefine before
2347         defining.
2348
2349 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
2350
2351         * rtl.h (CLEAR_RTX_FLAGS): Remove.
2352
2353         * cgraphunit.c (INSNS_PER_CALL): Remove.
2354
2355         * tree-ssa-forwprop.c (vars,
2356         record_single_argument_cond_exprs,
2357         substitute_single_use_vars): Remove.
2358         (forward_propagate_into_cond_1, forward_propagate_into_cond):
2359         New.
2360         (tree_ssa_forward_propagate_single_use_vars): Call
2361         forward_propagate_into_cond for each COND_EXPR.
2362
2363         * tree-inline.c (INSNS_PER_STMT): Remove.
2364
2365 2005-04-12  Richard Henderson  <rth@redhat.com>
2366
2367         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Split ...
2368         (ix86_expand_sse_fp_minmax): ... from ...
2369         (ix86_expand_fp_movcc): ... here.
2370         (ix86_expand_sse_movcc): Rewrite from ix86_split_sse_movcc.
2371         * config/i386/i386-protos.h: Update.
2372         * config/i386/i386.md (UNSPEC_IEEE_MIN, UNSPEC_IEEE_MAX): New.
2373         (sse_setccsf, sse_setccdf): Allow before reload.
2374         (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): Remove.
2375         (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): Remove.
2376         (ieee_sminsf3, ieee_smaxsf3, ieee_smindf3, ieee_smaxdf3): New.
2377         * config/i386/sse.md (andsf3, nandsf3, iorsf3, xorsf3): New.
2378         (anddf3, nanddf3, iordf3, xordf3): New.
2379
2380 2005-04-12  Jeff Law  <law@redhat.com>
2381
2382         * Makefile.in (OBJS-common): Add tree-ssa-uncprop.o.
2383         (tree-ssa-uncprop.o): Add dependencies.
2384         * tree-cfg.c (remove_useless_stmts_bb, remove_useless_stmts): Remove.
2385         * tree-flow.h (remove_useless_stmts): Remove prototype.
2386         * tree-outof-ssa.c (rewrite_out_of_ssa): Remove call to
2387         remove_useless_stmts.
2388         * timevar.def (TV_TREE_SSA_UNCPROP): New timevar.
2389         * tree-optimize.c (init_tree_optimization_passes): Add uncprop pass.
2390         * tree-pass.h (pass_uncprop): Declare.
2391         * tree-ssa-uncprop.c: New file.
2392
2393 2005-04-12  James E. Wilson  <wilson@specifixinc.com>
2394
2395         PR target/20670
2396         * unwind-ia64.c (uw_intall_context): Add missing load of r27.
2397
2398 2005-04-12  Caroline Tice  <ctice@apple.com>
2399
2400         Temporary fix for partitioning problems.
2401         * passes.c (rest_of_handle_final): Remove code that
2402         frees unlikely_text_section_name,
2403         * varasm.c (assemble_start_function): Test for partitioning
2404         flag before writing out section labels.
2405         (assemble_end_function): Test for partitioning flag before
2406         writing out section labels.
2407
2408 2005-04-12  Steven Bosscher  <stevenb@suse.de>
2409             Stuart Hastings <stuart@apple.com>
2410             Jan Hubicka  <jh@suse.cz>
2411
2412         * Makefile.in: Add function.h to BASIC_BLOCK_H.  Remove all
2413         references to gt-tree-cfg.h.
2414         * basic-block.h (struct basic_block_def): Don't skip rbi
2415         for garbage collection.
2416         (struct reorder_block_def): Make GTY-able.
2417         (struct control_flow_graph): New structure.
2418         (n_edges, n_basic_blocks, last_basic_block, basic_block_info,
2419         BASIC_BLOCK, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR): No longer vars,
2420         but instead defines to the control_flow_graph for cfun.
2421         (label_to_block_map): New define, points to the label map of
2422         the control_flow_graph for cfun.
2423         (n_edges_for_function, n_basic_blocks_for_function,
2424         last_basic_block_for_function, basic_block_info_for_function,
2425         EXIT_BLOCK_PTR_FOR_FUNCTION, ENTRY_BLOCK_PTR_FOR_FUNCTION,
2426         basic_block_info_for_function, label_to_block_map_for_function):
2427         Counterparts for the above, taking a struct function as an extra
2428         argument.
2429         (alloc_rbi_pool, free_rbi_pool): Remove prototypes.
2430         * cfg.c: (n_edges, n_basic_blocks, last_basic_block,
2431         basic_block_info, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Remove.
2432         (alloc_rbi_pool, free_rbi_pool): Remove.
2433         (initialize_bb_rbi): Use ggc_alloc_cleared instead of pool_alloc.
2434         * cfglayout.c: (cfg_layout_initialize): Don't allocate the rbi pool
2435         here...
2436         (cfg_layout_finalize) ... and don't free it here.
2437         * cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets
2438         garbage collected.
2439         * flow.c (free_basic_block_vars): Set label_to_block_map and
2440         n_edges to zero too.
2441         * function.h (struct function): Add cfg field.
2442         * function.c (allocate_struct_function): Allocate the cfg.
2443         * tree-cfg.c (label_to_block_map): Remove.
2444         (build_tree_cfg): Don't allocate the rbi pool here...
2445         (delete_tree_cfg_annotations): ...and don't free it here.
2446         Also don't nullify label_to_block_map for cfun.
2447
2448 2005-04-12  Caroline Tice  <ctice@apple.com>
2449
2450         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
2451         Revert my patch from April 9.
2452         (fix_edges_for_rarely_executed_code): Revert my patch from April 9.
2453         (reorder_basic_blocks): Revert my patch from April 9.
2454         (insert_section_boundary_note): Revert my patch from April 9.
2455         * dbxout.c (dbxout_function_end): Revert my patch from April 9.
2456         * dwarf2out.c (COLD_TEXT_SECTION_LABEL): Revert my patch from April 9.
2457         (COLD_END_LABEL):  Revert my patch from April 9.
2458         (cold_text_section_label):  Revert my patch from April 9.
2459         (cold_end_label): Revert my patch from April 9.
2460         (dwarf2out_switch_text_section): Revert my patch from April 9.
2461         (output_aranges): Revert my patch from April 9.
2462         (output_ranges):  Revert my patch from April 9.
2463         (output_line_info): Revert my patch from April 9.
2464         (add_location_or_const_value_attribute):  Revert my patch from April 9.
2465         (dwarf2out_var_location): Revert my patch from April 9.
2466         (dwarf2out_init):  Revert my patch from April 9.
2467         (dwarf2out_finish): Revert my patch from April 9.
2468         * function.h (struct function): Revert my patch from April 9.
2469         * opts.c (decode_options): Revert my patch from April 9.
2470         * output.h (unlikely_section_label, hot_section_label,
2471         hot_section_end_label, cold_section_end_label,
2472         unlikely_text_section_name): Revert my patch from April 9.
2473         * passes.c (rest_of_handle_final): Revert my patch from April 9.
2474         * varasm.c (unlikely_section_label, hot_section_label,
2475         hot_section_end_label, cold_section_end_label,
2476         unlikely_text_section_name): Revert my patch from April 9.
2477         (initialize_cold_section_name): Revert my patch from April 9.
2478         (unlikely_text_section): Revert my patch from April 9.
2479         (in_unlikely_text_section): Revert my patch from April 9.
2480         (named_section): Revert my patch from April 9.
2481         (function_section): Revert my patch from April 9.
2482         (current_function_section): Revert my patch from April 9.
2483         (assemble_start_function): Revert my patch from April 9.
2484         (assemble_end_function): Revert my patch from April 9.
2485         (default_section_type_flags_1): Revert my patch from April 9.
2486
2487 2005-04-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
2488
2489         * config/sparc/sparc.h (APPLY_RESULT_SIZE): Set to 24 in 64-bit mode.
2490         * config/sparc/sparc.md (untyped_call): Save the registers manually.
2491
2492         * config/sparc/sparc.c (legitimate_address_p): Use TARGET_ARCH32.
2493
2494 2005-04-12  Ulrich Weigand  <uweigand@de.ibm.com>
2495
2496         PR middle-end/20917
2497         * config/s390/s390.md ("*set_tp"): Use SET in pattern.
2498         ("set_tp_64", "set_tp_31"): Adapt expanded pattern.
2499
2500 2004-04-12  Richard Henderson  <rth@redhat.com>
2501
2502         * config/i386/i386.md (UNSPEC_FIX, UNSPEC_MOVA, UNSPEC_SHUFFLE,
2503         UNSPEC_PSHUFLW, UNSPEC_PSHUFHW, UNSPEC_ADDSUB, UNSPEC_HADD,
2504         UNSPEC_HSUB, UNSPEC_MOVSHDUP, UNSPEC_MOVSLDUP, UNSPEC_MOVDDUP): Remove.
2505         (UNSPEC_*, UNSPECV_*): Renumber.
2506
2507 2005-04-12  Frank Ch. Eigler  <fche@redhat.com>
2508
2509         PR mudflap/19266
2510         From Richard Henderson <rth@redhat.com>:
2511         * tree-mudflap.c (mf_build_check_statement_for): Correct block
2512         splitting logic.
2513
2514 2005-04-12  Dorit Naishlos  <dorit@il.ibm.com>
2515
2516         * tree-cfg.c (tree_verify_flow_info): Use LABEL_EXPR_LABEL.
2517
2518 2005-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2519
2520         * config/bfin/bfin.c (bfin_library_id_string): Remove.
2521         (bfin_library_id): New variable.
2522         (bfin_expand_prologue): Use bfin_library_id and bfin_lib_id_given
2523         instead of bfin_library_id_string.
2524         (bfin_handle_option): New function.
2525         (override_options): Remove most code to deal with shared library IDs,
2526         just check they aren't used without -mid-shared-library.
2527         (TARGET_HANDLE_OPTION): Define.
2528         * config/bfin/bfin.h (TARGET_OPTIONS): Delete macro.
2529         * config/bfin/bfin.opt (mshared-library-id=): New.
2530
2531 2005-04-12  Kazu Hirata  <kazu@cs.umass.edu>
2532
2533         * tree-vect-transform.c: Fix comment typos.
2534
2535 2005-04-12 Mostafa Hagog <mustafa@il.ibm.com>
2536
2537         * postreload-gcse.c (eliminate_partially_redundant_load): Don't
2538         split critical edges when not possible/profitable.
2539
2540 2005-04-12  Richard Sandiford  <rsandifo@redhat.com>
2541
2542         * config/ns32k/ns32k.h (target_flags, MASK_32081, MASK_RTD)
2543         (MASK_REGPARM, MASK_32532, MASK_32332, MASK_NO_SB, MASK_NO_BITFIELD)
2544         (MASK_HIMEM, MASK_32381, MASK_MULT_ADD, MASK_SRC, MASK_IEEE_COMPARE)
2545         (TARGET_32081, TARGET_32381, TARGET_MULT_ADD, TARGET_RTD)
2546         (TARGET_REGPARM, TARGET_32532, TARGET_32332, TARGET_SB, TARGET_HIMEM)
2547         (TARGET_BITFIELD, TARGET_IEEE_COMPARE, TARGET_SWITCHES): Delete.
2548         (OVERRIDE_OPTIONS): Clear MASK_SB instead of setting MASK_NO_SB.
2549         * config/ns32k/netbsd.h (TARGET_DEFAULT): Remove MASK_NO_SB and
2550         MASK_NO_BITFIELD.
2551         * config/ns32k/ns32k.c (ns32k_handle_option): New function.
2552         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2553         * config/ns32k/ns32k.opt: New file.
2554
2555 2005-04-12  Richard Sandiford  <rsandifo@redhat.com>
2556
2557         * config.gcc (m68k-*-linux*): Add m68k/ieee.opt to $extra_options.
2558         * config/m68k/m68k.h (target_flags, MASK_68020, TARGET_68020)
2559         (MASK_68030, TARGET_68030, MASK_68040, TARGET_68040, MASK_68040_ONLY)
2560         (TARGET_68040_ONLY, MASK_68060, TARGET_68060, MASK_5200, TARGET_5200)
2561         (MASK_CFV3, TARGET_CFV3, MASK_CFV4, TARGET_CFV4, MASK_528x)
2562         (TARGET_528x, MASK_CF_HWDIV, TARGET_CF_HWDIV, MASK_68881, TARGET_68881)
2563         (MASK_BITFIELD, TARGET_BITFIELD, MASK_SHORT, TARGET_SHORT)
2564         (MASK_ALIGN_INT, TARGET_ALIGN_INT, MASK_PCREL, TARGET_PCREL)
2565         (MASK_NO_STRICT_ALIGNMENT, TARGET_STRICT_ALIGNMENT, MASK_RTD)
2566         (TARGET_RTD, MASK_SEP_DATA, TARGET_SEP_DATA, MASK_ID_SHARED_LIBRARY)
2567         (TARGET_ID_SHARED_LIBRARY, MASK_ALL_CF_BITS, TARGET_SWITCHES)
2568         (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS): Delete.
2569         (MASK_COLDFIRE): Formatting fixes.
2570         (TARGET_COLDFIRE): Turn into a boolean value for consistency.
2571         * config/m68k/linux.h (SUBTARGET_SWITCHES): Delete.
2572         * config/m68k/m68k.c (m68k_library_id_string): Initialize to
2573         "_current_shared_library_a5_offset_".
2574         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2575         (MASK_ALL_CPU_BITS): New macro.
2576         (m68k_handle_option): New function.
2577         (override_options): Remove handling of m68k_library_id_string.
2578         * config/m68k/m68k.opt: New file.
2579         * config/m68k/ieee.opt: New file.
2580
2581 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
2582
2583         * target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
2584         (TARGET_CXX_DETERMINE_CLASS_VISIBILITY): New macro.
2585         (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
2586         (TARGET_CXX): Adjust accordingly.
2587         * target.h (struct gcc_target): Remove epxort_class_data.  Add
2588         determine_class_data_visibility and class_data_always_comdat.
2589         * doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
2590         (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Document.
2591         (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
2592         * config/arm/arm.c (arm_cxx_export_class_data): Remove.
2593         (arm_cxx_determine_class_data_visibility): New.
2594         (arm_cxx_class_data_always_comdat): Likewise.
2595         (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
2596         (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Define.
2597         (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
2598         * config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define.
2599         * config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P):
2600         Define.
2601
2602 2005-04-11  Devang Patel  <dpatel@apple.com>
2603
2604         * tree-data-ref.c (build_classic_dist_vector,
2605         compute_subscript_distance): Make externally visible.
2606         * tree-data-ref.h (build_classic_dist_vector,
2607         compute_subscript_distance): Same.
2608         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
2609         Check distance vector against vectorization factor.
2610         (vect_analyze_loop): Determine vectorizaion factor before
2611         analyzing data dependences.
2612         * tree-vectorizer.c (loops_num): Make it externally visible and
2613         rename ...
2614         * tree-vectorizer.c (vect_loops_num): ... new name.
2615         * tree-vectorizer.h  (vect_loops_num): New.
2616
2617 2005-04-11  Devang Patel  <dpatel@apple.com>
2618
2619         * tree-vect-analyze.c (vect_analyze_operations): Check
2620         vectorizable codition.
2621         * tree-vect-transform.c (vect_is_simple_cond): New function.
2622         (vectorizable_condition): New function.
2623         (vect_transform_stmt): Handle condition_vec_info_type.
2624         * tree-vectorizer.h (enum stmt_vec_info_type): Add
2625         condition_vec_info_type.
2626         (vectorizable_condition): New.
2627
2628 2005-04-11  Geoffrey Keating  <geoffk@apple.com>
2629
2630         * config/i386/i386.h (TARGET_FPMATH_DEFAULT): New.
2631         * config/i386/darwin.h (TARGET_FPMATH_DEFAULT): New.
2632         * config/i386/i386.c (override_options): Use TARGET_FPMATH_DEFAULT.
2633
2634         * config/i386/darwin.h (ASM_SPEC): Use -arch i386 not -arch i686.
2635         (SUBTARGET_EXTRA_SPECS): Always 'i386'.
2636
2637         * dwarf2out.c (output_line_info): Don't try to dereference
2638         a NULL current_function_decl.
2639
2640         * config/t-slibgcc-darwin: Don't put shared libraries in
2641         directories other than $(slibdir).
2642         * config/rs6000/darwin.h: Find -m64 libgcc under the name the
2643         OS uses for it.
2644
2645 2005-04-11  Diego Novillo  <dnovillo@redhat.com>
2646
2647         PR tree-optimization/20933
2648         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Move
2649         logic to reject aliases between read-only and writable
2650         variables ...
2651         (may_alias_p): ... here.
2652         (get_tmt_for): Do not associate read-only tags to pointers
2653         whose pointed-to type is not read-only.
2654         * tree-ssa.c (verify_ssa): Check that memory stores have at
2655         least one V_MAY_DEF or V_MUST_DEF.
2656
2657 2005-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2658
2659         PR/17092
2660         * configure.ac (gcc_UNLOCKED_FUNCS): New.
2661         (AC_CHECK_FUNCS, AC_CHECK_DECLS): Check for gcc_UNLOCKED_FUNCS.
2662         * system.h (putchar, getc, getchar, clearerr, feof, fileno,
2663         fflush, fgetc, fgets, ferror, fread): Redefine to the associated
2664         _unlocked function.
2665         (fwrite_unlocked): Fix prototype.
2666
2667         * configure, config.in: Regenerate.
2668
2669 2005-04-11  David Edelsohn  <edelsohn@gnu.org>
2670
2671         * tree-ssa-loop-im.c: Include real.h.
2672         (determine_invariantness_stmt): If real division divisor is
2673         invariant and flag_unsafe_math_optimizations enabled, generate
2674         invariant reciprocal for hoisting.
2675         * Makefile.in (tree-ssa-loop-im.o): Add real.h dependency.
2676
2677 2005-04-11  Daniel Berlin  <dberlin@dberlin.org>
2678
2679         Fix PR tree-optimization/20926
2680
2681         * tree-ssa-alias.c (add_type_alias): Handle subvars.
2682
2683 2005-04-11  Devang Patel  <dpatel@apple.com>
2684
2685         * config/rs6000.c (rs6000_emit_vector_select): Fix vector select
2686         operand ordering.
2687
2688 2005-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
2689
2690         * fold-const.c (fold_binary_op_with_conditional_arg):
2691         use fold_buildN instead of "fold (buildN" in some
2692         non obvious places.
2693         (fold_unary): Likewise.
2694         (fold_binary): Likewise.
2695
2696 2005-04-11  Daniel Berlin  <dberlin@dberlin.org>
2697
2698         Fix PR tree-optimization/20612
2699         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix increment
2700         handling
2701         (perfect_nestify): preheaderbb is *not* part of loop of the
2702         old destination.
2703
2704 2005-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
2705
2706         * tree-ssa-alias.c (may_alias_p): If the variable
2707         is a global variable and the pointer is parameter
2708         and -fargument-noalias-global is used, then
2709         the pointer cannot alias the variable.
2710
2711 2005-04-11  James A. Morrison  <phython@gcc.gnu.org>
2712
2713         * config/sparc/sparc.c: Use gcc_assert and gcc_unreachable.
2714         * config/sparc/sparc.h: Likewise.
2715         * config/sparc/sparc.md: Likewise.
2716
2717 2005-04-11  Kazu Hirata  <kazu@cs.umass.edu>
2718
2719         * tree-vrp.c (maybe_add_assert_expr): Move a comment.
2720
2721         * tree-vrp.c: Fix a comment typo.
2722
2723 2005-04-11  Diego Novillo  <dnovillo@redhat.com>
2724
2725         PR tree-optimization/20920
2726         * tree-pretty-print.c (dump_generic_node): Show '(ab)' if an
2727         SSA_NAME flows through an abnormal edge.
2728         * tree-vrp.c (infer_value_range): Ignore SSA names that flow
2729         through abnormal edges.
2730         (maybe_add_assert_expr): Likewise.
2731
2732 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
2733
2734         * config/s390/s390.h (s390_tune_string, s390_arch_string)
2735         (s390_warn_framesize_string, s390_warn_dynamicstack_string)
2736         (s390_stack_size_string, s390_stack_guard_string, target_flags)
2737         (MASK_HARD_FLOAT, MASK_SMALL_EXEC, MASK_DEBUG_ARG, MASK_64BIT)
2738         (MASK_ZARCH, MASK_MVCLE, MASK_TPF_PROFILING, MASK_NO_FUSED_MADD)
2739         (MASK_BACKCHAIN, MASK_PACKED_STACK, TARGET_HARD_FLOAT)
2740         (TARGET_SOFT_FLOAT, TARGET_SMALL_EXEC, TARGET_DEBUG_ARG)
2741         (TARGET_64BIT, TARGET_ZARCH, TARGET_MVCLE, TARGET_TPF_PROFILING)
2742         (TARGET_NO_FUSED_MADD, TARGET_FUSED_MADD, TARGET_BACKCHAIN)
2743         (TARGET_PACKED_STACK, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
2744         * config/s390/s390.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
2745         (TARGET_HANDLE_OPTION): Likewise.
2746         (s390_tune): Initialize to PROCESSOR_max.
2747         (s390_arch_string): Make static.
2748         (s390_tune_string, s390_warn_framesize_string): Delete.
2749         (s390_warn_dynamicstack_string, s390_stack_size_string): Delete.
2750         (s390_stack_guard_string, s390_warn_dynamicstack_p): Delete.
2751         (s390_handle_arch_option, s390_handle_option): New functions.
2752         (override_options): Remove parsing of option strings.
2753         * config/s390/s390.opt: New file.
2754
2755 2005-04-11  Paolo Bonzini  <bonzini@gnu.org>
2756
2757         * tree-complex.c (expand_vector_operations): Call
2758         update_stmt_if_modified.
2759
2760 2005-04-11  Paolo Bonzini  <bonzini@gnu.org>
2761
2762         * tree-vect-analyze (vect_determine_vectorization_factor):
2763         Do not use GET_MODE_NUNITS.
2764         * tree-vect-transform.c (vect_get_vec_def_for_operand,
2765         (vectorizable_load, vect_transform_loop): Likewise.
2766
2767 2005-04-11  Uros Bizjak  <uros@kss-loka.si>
2768
2769         * builtins.def (BUILT_IN_LCEIL, BUILT_IN_LCEILF, BUILT_IN_LCEILL)
2770         (BUILT_IN_LLCEIL, BUILT_IN_LLCEILF, BUILT_IN_LLCEILL): New.
2771         * optabs.h (enum optab_index): Add new OTI_lceil.
2772         (lceil_optab): Define corresponding macro.
2773         * optabs.c (init_optabs): Initialize lceil_optab.
2774         * genopinit.c (optabs): Implement lceil_optab using lceilsi2
2775         and lceildi2 patterns.
2776         * builtins.c (expand_builtin_int_roundingfn): Handle
2777         BUILT_IN_LCEIL{,F,L} and BUILT_IN_LLCEIL{,F,L}.
2778         (fold_builtin_int_roundingfn): Handle BUILT_IN_LCEIL{,F,L} and
2779         BUILT_IN_LLCEIL{,F,L}.
2780         (fold_builtin_1): Fold BUILT_IN_LCEIL{,F,L} and
2781         BUILT_IN_LLCEIL{,F,L} using fold_builtin_int_roundingfn.
2782         (mathfn_built_in): Handle BUILT_IN LCEIL and BUILT_IN_LLCEIL.
2783         (expand_builtin): Expand BUILT_IN_LCEIL{,F,L} and
2784         BUILT_IN_LLCEIL{,F,L} using expand_builtin_int_roundingfn.
2785         * convert.c (convert_to_integer): Convert (long int)ceil{,f,l},
2786         into lceil built-in function and (long long int)ceil{,f,l} into
2787         llceil built-in function.
2788         * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LCEIL and
2789         BUILT_IN_LLCEIL.
2790
2791 2005-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2792
2793         * pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from
2794         zero.
2795
2796 2005-04-10  Kazu Hirata  <kazu@cs.umass.edu>
2797
2798         * config/arm/arm.c: Fix a comment typo.
2799         * doc/tree-ssa.texi: Fix a typo.
2800
2801 2005-04-10  Steven Bosscher  <stevenb@suse.de>
2802
2803         * cselib.c (clear_table): Rename to cselib_clear_table.
2804         * cselib.h (cselib_clear_table): Add prototype.
2805         * gcse.c (gcse_main): Make 'f' argument unused.
2806         (alloc_gcse_mem): Do not walk the insn chain, walk the contents
2807         of each basic block instead.
2808         (compute_sets, compute_hash_table_work): Likewise.
2809         (constprop_register): Change int 'alter_jumps' argument to bool.
2810         (do_local_cprop): Likewise.
2811         (local_cprop_pass): Likewise.  Also walk basic blocks instead of
2812         the insn chain.  Explicitly clear the cselib tables after finishing
2813         one basic block.  Make sure there are no unterminated libcall blocks.
2814         Update compute_sets call.
2815         (cprop): Walk basic blocks instead of the insn chain.
2816         (one_cprop_pass, compute_ld_motion_mems, compute_store_table):
2817         Likewise.
2818         (bypass_jumps): Update alloc_gcse_mem, compute_sets, and
2819         one_cprop_pass calls.
2820
2821 2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
2822
2823         * combine.c (combine_simplify_rtx): Remove a transformation that
2824         relies on an invalid assumption about rtl sign-extension semantics.
2825
2826 2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
2827
2828         * value-prof.c (tree_divmod_fixed_value_transform): Fix arguments
2829         to build_int_cst_wide.
2830
2831 2005-04-09  Alexandre Oliva  <aoliva@redhat.com>
2832
2833         PR target/20126
2834         * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
2835         set the original address pseudo to the correct value before the
2836         original insn, if possible, and leave the insn alone, otherwise
2837         create a new pseudo, set it and replace it in the insn.
2838         * recog.c (validate_change_maybe_volatile): New.
2839         * recog.h (validate_change_maybe_volatile): Declare.
2840
2841 2005-04-09  Caroline Tice  <ctice@apple.com>
2842
2843         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
2844         Remove targetm.have_named_sections test.
2845         (fix_edges_for_rarely_executed_code): Likewise.
2846         (insert_section_boundary_note): Likewise.
2847         (reorder_basic_blocks): Check partitioning flag before calling
2848         verify_hot_cold_block_grouping.
2849         * dbxout.c (dbxout_function_end): Get hot/cold section labels from
2850         the function struct rather than global variables.
2851         * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
2852         (COLD_END_LABEL): Likewise
2853         (cold_text_section_label): New static global variable.
2854         (cold_end_label): Likewise.
2855         (dwarf2out_switch_text_section): Get hot/cold section labels from
2856         the function struct rather than global variables.
2857         (output_aranges): Use cold_text_section_label and cold_end_label;
2858         check partitioning flag before putting out delta.
2859         (output_ranges): Remove incorrect code attempting to use
2860         hot/cold labels.
2861         (output_line_info): Get cold section label from function struct.
2862         (add_location_or_const_value_attribute): Likewise.
2863         (get_subprogram_die): Get hot/cold section labels from function struct.
2864         (dwarf2out_var_location): Likewise.
2865         (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
2866         write out cold_text_section_label if partition flag is set.
2867         (dwarf2out_finish): Write out cold_end_label if partition flag is set;
2868         * function.h (struct function): Add new fields to point to hot/cold
2869         section labels: hot_section_label, cold_section_label,
2870         hot_section_end_label and cold_section_end_label; also add new field
2871         for cold text section name, unlikely_text_section_name.
2872         * opts.c (decode_options): Turn off partitioning flag if
2873         !targetm.have_named_sections.
2874         * output.h (hot_section_label): Remove.
2875         (hot_section_end_label): Remove.
2876         (cold_section_end_label): Remove.
2877         (unlikely_section_label): Remove.
2878         (unlikely_text_section_name): Remove.
2879         * passes.c (rest_of_handle_final):  Remove code that frees
2880         unlikely_text_section_name.
2881         * varasm.c (unlikely_section_label): Remove.
2882         (hot_section_label): Remove.
2883         (hot_section_end_label): Remove.
2884         (cold_section_end_label): Remove.
2885         (unlikely_text_section_name):  Remove.
2886         (initialize_cold_section_name): Modify to call
2887         targetm.strip_name_encoding; to store cold section name in current
2888         function struct, if it exists; and to only use the decl_section_name
2889         if flag_named_sections is true.
2890         (unlikely_text_section): Modify to get section name out of current
2891         function struct, if there is one; otherwise build it from
2892         UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
2893         (in_unlikely_text_section): Likewise.
2894         (named_section): Modify to get/put cold section name in current function
2895         struct, if there is one.
2896         (function_section):  Change 'bool unlikely' to 'int reloc'; check
2897         targetm.have_named_sections before calling named_section.
2898         (current_function_section): Likewise.
2899         (assemble_start_function): Modify to get/put unlikely_text_section_name
2900         in current function struct; modify to get hot/cold section labels
2901         from function struct; initialize labels using
2902         ASM_GENERATE_INTERNAL_LABEL;
2903         test partitioning flag before writing out hot section label.
2904         (assemble_end_function): Test partitioning flag before writing out
2905         hot/cold section labels.
2906         (default_section_type_flags_1):  Modify to use array instead of
2907          char* for unlikely_text_section_name; set flags correctly for
2908          cold text section if there is not a current function decl.
2909
2910 2005-04-09  Jakub Jelinek  <jakub@redhat.com>
2911
2912         * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
2913         and TI_VA_LIST_FPR_COUNTER_FIELD.
2914         (va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
2915         * tree-pass.h (pass_stdarg): Add.
2916         * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
2917         * tree-stdarg.c: New file.
2918         * tree-stdarg.h: New file.
2919         * Makefile.in (OBJS-common): Add tree-stdarg.o.
2920         (tree-stdarg.o): Add dependencies.
2921         * function.h (struct function): Add va_list_gpr_size and
2922         va_list_fpr_size fields.
2923         * function.c (allocate_struct_function): Initialize them.
2924         * target.h (struct gcc_target): Add stdarg_optimize_hook.
2925         * target-def.h (TARGET_STDARG_OPTIMIZE_HOOK): Define.
2926         (TARGET_INITIALIZER): Add it.
2927
2928         * config/i386/i386.c (ix86_build_builtin_va_list): Initialize
2929         va_list_{g,f}pr_counter_field.
2930         (ix86_setup_incoming_varargs): Don't do anything if reg_save
2931         area will not be used.  Only save registers that tree-stdarg.c
2932         detected they need saving.
2933         (ix86_va_start): Don't set up fields that won't be used.
2934
2935         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
2936         va_list_{g,f}pr_counter_field.
2937         (setup_incoming_varargs): Don't do anything if reg_save
2938         area will not be used.  Only save registers that tree-stdarg.c
2939         detected they need saving.
2940         (rs6000_va_start): Don't set up fields that won't be used.
2941
2942         * config/alpha/alpha.c: Include tree-flow.h and tree-stdarg.h.
2943         (alpha_build_builtin_va_list): Initialize va_list_gpr_counter_field.
2944         (va_list_skip_additions, alpha_stdarg_optimize_hook): New functions.
2945         (TARGET_STDARG_OPTIMIZE_HOOK): Define.
2946
2947 2005-04-09  Jakub Jelinek  <jakub@redhat.com>
2948
2949         PR target/20795
2950         * config/i386/i386.c (construct_container): Pass empty aligned
2951         struct, union or class in memory.
2952
2953 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
2954
2955         * dominance.c, gthr-win32.h, reg-stack.c, tree-ssa-copy.c,
2956         tree-ssa-operands.c, tree-ssa.c, tree-vrp.c, varasm.c,
2957         config/alpha/alpha.c, config/arm/arm.c, config/m32r/m32r.h,
2958         config/rs6000/predicates.md: Fix comment typos.
2959
2960         * sched-int.h (haifa_insn_data): Remove blockage and units.
2961         (INSN_UNIT, INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK,
2962         ENCODE_BLOCKAGE, UNIT_BLOCKED, BLOCKAGE_RANGE,
2963         MIN_BLOCKAGE_COST, MAX_BLOCKAGE_COST): Remove.
2964
2965 2005-04-09  Jan Hubicka  <jh@suse.cz>
2966             Steven Bosscher  <stevenb@suse.de>
2967
2968         * cfglayout.c (copy_bbs): Rename n_edges to num_edges.
2969         * cfgloop.c (get_loop_exit_edges): Likewise.
2970         * cfgloopmanip.c (fix_irreducible_loops): Likewise.
2971         (unloop): Likewise.
2972         * loop-unroll.c (analyze_insns_in_loop): Likewise.
2973         * tree-cfg.c (dump_cfg_status): Likewise.
2974
2975 2005-04-09  David Edelsohn  <edelsohn@gnu.org>
2976
2977         * config/rs6000/predicates.md (altivec_register_operand): Remove
2978         redundant match_code test.
2979         (gpc_reg_operand): Same.
2980         (cc_reg_operand): Same.
2981         (cc_reg_not_cr0_operand): Same.
2982
2983 2005-04-09  Jan Hubicka  <jh@suse.cz>
2984
2985         Forgotten hunk from my last merge patch:
2986         * final.c (output_addr_const): Do not call mark_referenced.
2987
2988 2005-04-09  Andrew MacLeod  <amacleod@redhat.com>
2989
2990         * doc/tree-ssa.texi: Add immediate use documentation.
2991
2992 2005-04-09  Richard Earnshaw <richard.earnshaw@arm.com>
2993
2994         * arm.c (FL_WBUF): Define.
2995         (arm_tune_strongarm): Renamed from arm_is_strong.  All uses changed.
2996         (arm_is_6_or_7): Delete.
2997         (arm_tune_wbuf): New.
2998         (arm_override_options): Set arm_tune_wbuf.
2999         * arm.h (arm_tune_strongarm): Renamed from arm_is_strong.
3000         (arm_is_6_or_7): Delete declaration.
3001         (arm_tune_wbuf): New declartion.
3002         * arm.md (is_strongarm): Derive from arm_tune_strongarm.
3003         (model_wbuf): Derive from arm_tune_wbuf.
3004         * arm-cores.def (arm600, arm610, arm620, arm700, arm700i, arm710)
3005         (arm720, arm710c, arm7100, arm7500, arm7500fe, arm710t, arm720t)
3006         (arm740t): Mark CPUs as having a write buffer.
3007
3008 2005-04-09  Uros Bizjak  <uros@kss-loka.si>
3009
3010         * config/i386/i386.md (*fp_jcc_7_387): Use 'const0_operand' instead
3011         of 'const_double_operand' in operand 2 constraints.  Update enable
3012         condition.
3013
3014 2005-04-09  Uros Bizjak  <uros@kss-loka.si>
3015
3016         * builtins.def (BUILT_IN_LFLOOR, BUILT_IN_LFLOORF, BUILT_IN_LFLOORL)
3017         (BUILT_IN_LLFLOOR, BUILT_IN_LLFLOORF, BUILT_IN_LLFLOORL): New.
3018         * optabs.h (enum optab_index): Add new OTI_lfloor.
3019         (lfloor_optab): Define corresponding macro.
3020         * optabs.c (init_optabs): Initialize lfloor_optab.
3021         * genopinit.c (optabs): Implement lfloor_optab using lfloorsi2
3022         and lfloordi2 patterns.
3023         * builtins.c (expand_builtin_int_roundingfn): New prototype.
3024         (expand_builtin_int_roundingfn): New function.
3025         (fold_builtin_int_roundingfn): New prototype.
3026         (fold_builtin_int_roundingfn): New function, renamed from
3027         fold_builtin_lround.
3028         Handle BUILT_IN_LROUND{,F,L}, BUILT_IN_LLROUND{,F,L} and
3029         BUILT_IN_LFLOOR{,F,L}, BUILT_IN_LLFLOOR{,F,L}.
3030         (fold_builtin_1): Fold BUILT_IN_LFLOOR{,F,L} and
3031         BUILT_IN_LLFLOOR{,F,L} using fold_builtin_int_roundingfn.
3032         (mathfn_built_in): Handle BUILT_IN LFLOOR and BUILT_IN_LLFLOOR.
3033         (expand_builtin): Expand BUILT_IN_LFLOOR{,F,L} and
3034         BUILT_IN_LLFLOOR{,F,L} using expand_builtin_int_roundingfn.
3035         * convert.c (convert_to_integer): Convert (long int)floor{,f,l},
3036         into lfloor built-in function and (long long int)floor{,f,l} into
3037         llfloor built-in function.
3038         * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LFLOOR and
3039         BUILT_IN_LLFLOOR.
3040
3041 2005-04-08  Ian Lance Taylor  <ian@airs.com>
3042
3043         * c-common.def: Move FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
3044         CONTINUE_STMT, and SWITCH_STMT to cp/cp-tree.def.
3045         * c-common.h (WHILE_COND, WHILE_BODY): Move to cp/cp-tree.h.
3046         (DO_COND, DO_BODY): Likewise.
3047         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Likewise.
3048         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Likewise.
3049         (c_common_stmt_codes): Remove FOR_STMT, WHILE_STMT, DO_STMT,
3050         BREAK_STMT, CONTINUE_STMT, and SWITCH_STMT.
3051         (build_continue_stmt, build_break_stmt): Don't declare.
3052         (c_do_switch_warnings): Update declaration.
3053         * c-gimplify.c (enum bc_t): Remove.
3054         (struct c_gimplify_ctx, ctxp): Remove.
3055         (push_context, pop_context): Remove static functions.
3056         (c_genericize): Don't call push_context or pop_context.
3057         (begin_bc_block, finish_bc_block): Remove static functions.
3058         (build_bc_goto): Likewise.
3059         (gimplify_c_loop): Likewise.
3060         (gimplify_for_stmt, gimplify_while_stmt): Likewise.
3061         (gimplify_do_stmt, gimplify_switch_stmt): Likewise.
3062         (c_gimplify_expr): Remove handling of FOR_STMT, WHILE_STMT,
3063         DO_STMT, SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
3064         * c-common.c (c_do_switch_warnings): Rename from
3065         c_do_switch_warnings_1.
3066         (c_do_switch_warnings) [old version]: Remove.
3067         (c_do_switch_expr_warnings): Remove.
3068         * c-typeck.c (c_finish_case): Call new c_do_switch_warnings
3069         function instead of c_do_switch_expr_warnings.
3070         * c-dump.c (c_dump_tree): Remove handling of BREAK_STMT,
3071         CONTINUE_STMT, DO_STMT, FOR_STMT, SWITCH_STMT, and WHILE_STMT.
3072         * c-pretty-print.c (pp_c_statement): Likewise.
3073         * c-semantics.c (build_break_stmt, build_continue_stmt): Remove.
3074
3075 2005-04-08  Devang Patel  <dpatel@apple.com>
3076
3077         * tree-if-conv.c (find_phi_replacement_condition): New parameter, loop.
3078         While selecting replacement condition pay attention to loop header.
3079
3080 2005-04-08  Diego Novillo  <dnovillo@redhat.com>
3081
3082         Merge from tree-cleanup-branch: VRP, store CCP, store
3083             copy-prop, incremental SSA updating of FUD chains and
3084             newly exposed symbols.
3085
3086         * Makefile.in (tree-ssa-copy.o): Depend on tree-ssa-propagate.h.
3087         (OBJS-common): Add tree-vrp.o.
3088         (tree-vrp.o): New rule.
3089         * basic-block.h (nearest_common_dominator_for_set): Declare.
3090         * common.opt (ftree-store-ccp): New flag.
3091         (ftree-copy-prop): New flag.
3092         (ftree-vrp): New flag.
3093         (ftree-store-copy-prop): New flag.
3094         * dominance.c (nearest_common_dominator_for_set): New.
3095         * domwalk.c (walk_dominator_tree): Only traverse
3096         statements in blocks marked in walk_data->interesting_blocks.
3097         * domwalk.h (struct dom_walk_data): Add field interesting_blocks.
3098         * fold-const.c (fold): Handle ASSERT_EXPR.
3099         * opts.c (decode_options): Set flag_tree_copy_prop at -O1.
3100         Set flag_tree_store_ccp, flag_tree_store_copy_prop and
3101         flag_tree_vrp at -O2.
3102         * timevar.def (TV_TREE_VRP): Define.
3103         (TV_TREE_COPY_PROP): Define.
3104         (TV_TREE_STORE_COPY_PROP): Define.
3105         (TV_TREE_SSA_INCREMENTAL): Define.
3106         (TV_TREE_STORE_CCP): Define.
3107         * tree-cfg.c (tree_can_merge_blocks_p): Remove reference
3108         to kill_redundant_phi_nodes from comment.
3109         (verify_expr): Handle ASSERT_EXPR.
3110         * tree-dfa.c (mark_new_vars_to_rename): Remove second
3111         argument.  Update all users.
3112         (mark_call_clobbered_vars_to_rename): Remove.  Update all
3113         users.
3114         * tree-flow-inline.h (unmodifiable_var_p): New.
3115         * tree-flow.h (enum value_range_type): Declare.
3116         (struct value_range_def): Declare.
3117         (value_range): Declare.
3118         (remove_all_phi_nodes_for): Remove.  Update all users.
3119         (find_phi_node_for): Declare.
3120         (add_type_alias): Declare.
3121         (count_uses_and_derefs): Declare.
3122         (kill_redundant_phi_nodes): Remove.
3123         (rewrite_into_ssa): Remove.
3124         (rewrite_def_def_chains): Remove.
3125         (update_ssa, register_new_name_mapping, create_new_def_for,
3126         need_ssa_update_p, name_registered_for_update_p,
3127         release_ssa_name_after_update_ssa, dump_repl_tbl,
3128         debug_repl_tbl, dump_names_replaced_by,
3129         debug_names_replaced_by, mark_sym_for_renaming,
3130         mark_set_for_renaming, get_current_def, set_current_def,
3131         get_value_range, dump_value_range, debug_value_range,
3132         dump_all_value_ranges, debug_all_value_ranges,
3133         expr_computes_nonzero, loop_depth_of_name,
3134         unmodifiable_var_p): Declare.
3135         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle
3136         ASSERT_EXPR.
3137         * tree-into-ssa.c (block_defs_stack): Update comment.
3138         (old_ssa_names, new_ssa_names, old_virtual_ssa_names,
3139         syms_to_rename, names_to_release, repl_tbl,
3140         need_to_initialize_update_ssa_p, need_to_update_vops_p,
3141         need_to_replace_names_p): New locals.
3142         (NAME_SETS_GROWTH_FACTOR): Define.
3143         (struct repl_map_d): Declare.
3144         (struct mark_def_sites_global_data): Add field
3145         interesting_blocks.
3146         (enum rewrite_mode): Declare.
3147         (REGISTER_DEFS_IN_THIS_STMT): Define.
3148         (compute_global_livein): Use last_basic_block instead of
3149         n_basic_blocks.
3150         (set_def_block): Remove last argument.  Update all callers.
3151         (prepare_use_operand_for_rename): Remove.  Update all callers.
3152         (prepare_def_operand_for_rename): Remove.  Update all callers.
3153         (symbol_marked_for_renaming): New.
3154         (is_old_name): New.
3155         (is_new_name): New.
3156         (repl_map_hash): New.
3157         (repl_map_eq): New.
3158         (repl_map_free): New.
3159         (names_replaced_by): New.
3160         (add_to_repl_tbl): New.
3161         (add_new_name_mapping): New.
3162         (mark_def_sites): Assume that all the operands in the
3163         statement are in normal form.
3164         (find_idf): Assert that the block in the stack is valid.
3165         (get_default_def_for): New.
3166         (insert_phi_nodes_for): Add new argument 'update_p'.
3167         Add documentation.
3168         If update_p is true, add a new mapping between the LHS of
3169         each new PHI and the name that it replaces.
3170         (insert_phi_nodes_1): Only call find_idf if needed.
3171         (get_reaching_def): Call get_default_def_for.
3172         (rewrite_operand): Remove.
3173         (rewrite_stmt): Do nothing if REGISTER_DEFS_IN_THIS_STMT
3174         and REWRITE_THIS_STMT are false.
3175         Assume that all the operands in the statement are in
3176         normal form.
3177         (rewrite_add_phi_arguments): Don't use PHI_REWRITTEN.
3178         (rewrite_virtual_phi_arguments): Remove.
3179         (invalidate_name_tags): Remove.
3180         (register_new_update_single, register_new_update_set,
3181         rewrite_update_init_block, replace_use,
3182         rewrite_update_fini_block, rewrite_update_stmt,
3183         rewrite_update_phi_arguments): New.
3184         rewrite_blocks): Remove argument 'fix_virtual_phis'.
3185         Add arguments 'entry', 'what' and 'blocks'.
3186         Initialize the dominator walker according to 'what' and
3187         'blocks'.
3188         Start the dominator walk at 'entry'.
3189         (mark_def_site_blocks): Add argument 'interesting_blocks'.
3190         Use it to configure the dominator walker.
3191         (rewrite_into_ssa): Remove argument 'all'.
3192         Make internal.
3193         (rewrite_all_into_ssa): Remove.
3194         (rewrite_def_def_chains): Remove.
3195         (mark_def_interesting, mark_use_interesting,
3196         prepare_phi_args_for_update, prepare_block_for_update,
3197         prepare_def_site_for, prepare_def_sites,
3198         dump_names_replaced_by, debug_names_replaced_by,
3199         dump_repl_tbl, debug_repl_tbl, init_update_ssa,
3200         delete_update_ssa, create_new_def_for,
3201         register_new_name_mapping, mark_sym_for_renaming,
3202         mark_set_for_renaming, need_ssa_update_p,
3203         name_registered_for_update_p, ssa_names_to_replace,
3204         release_ssa_name_after_update_ssa,
3205         insert_updated_phi_nodes_for, update_ssa): New.
3206         * tree-loop-linear.c (linear_transform_loops): Call
3207         update_ssa instead of rewrite_into_ssa.
3208         * tree-optimize.c (vars_to_rename): Remove.
3209         Update all users.
3210         (init_tree_optimization_passes): Replace
3211         pass_redundant_phi with pass_copy_prop.
3212         Add pass_vrp.
3213         Replace pass_ccp with pass_store_ccp.
3214         Add pass_store_copy_prop after pass_store_ccp.
3215         (execute_todo): If the TODO_ flags don't include updating
3216         the SSA form, assert that it does not need to be updated.
3217         Call update_ssa instead of rewrite_into_ssa and
3218         rewrite_def_def_chains.
3219         If TODO_verify_loops is set, call verify_loop_closed_ssa.
3220         (tree_rest_of_compilation):
3221         * tree-pass.h (TODO_dump_func, TODO_ggc_collect,
3222         TODO_verify_ssa, TODO_verify_flow, TODO_verify_stmts,
3223         TODO_cleanup_cfg): Renumber.
3224         (TODO_verify_loops, TODO_update_ssa,
3225         TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
3226         TODO_update_ssa_only_virtuals): Define.
3227         (pass_copy_prop, pass_store_ccp, pass_store_copy_prop, pass_vrp):
3228         Declare.
3229         * tree-phinodes.c (make_phi_node): Update documentation.
3230         (remove_all_phi_nodes_for): Remove.
3231         (find_phi_node_for): New.
3232         * tree-pretty-print.c (dump_generic_node): Handle ASSERT_EXPR.
3233         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Likewise.
3234         (interpret_rhs_modify_expr): Likewise.
3235         * tree-sra.c (decide_instantiations): Mark all symbols in
3236         SRA_CANDIDATES for renaming.
3237         (mark_all_v_defs_1): Rename from mark_all_v_defs.
3238         (mark_all_v_defs): New function.  Update all users to call it
3239         with the whole list of scalarized statements, not just the
3240         first one.
3241         * tree-ssa-alias.c (count_ptr_derefs): Make extern.
3242         (compute_flow_insensitive_aliasing): If the tag is
3243         unmodifiable and the variable isn't or vice-versa, don't
3244         make them alias of each other.
3245         (setup_pointers_and_addressables): If the type tag for
3246         VAR is about to change, mark the old one for renaming.
3247         (add_type_alias): New.
3248         * tree-ssa-ccp.c: Document SSA-CCP and STORE-CCP.
3249         (ccp_lattice_t): Rename from latticevalue.
3250         (value): Remove.  Update all users.
3251         (const_val): New local variable.
3252         (do_store_ccp): New local variable.
3253         (dump_lattice_value): Handle UNINITIALIZED.
3254         (debug_lattice_value): New.
3255         (get_default_value): Re-write.
3256         (set_lattice_value): Re-write.
3257         (def_to_varying): Remove.  Update all users.
3258         (likely_value): Return VARYING for statements that make
3259         stores when STORE_CCP is false.
3260         Return VARYING for any statement other than MODIFY_EXPR,
3261         COND_EXPR and SWITCH_EXPR.
3262         (ccp_initialize): Re-write.
3263         (replace_uses_in, replace_vuse_in, substitute_and_fold):
3264         Move to tree-ssa-propagate.c.
3265         (ccp_lattice_meet): Handle memory stores when
3266         DO_STORE_CCP is true.
3267         (ccp_visit_phi_node): Likewise.
3268         (ccp_fold): Likewise.
3269         (evaluate_stmt): Likewise.
3270         (visit_assignment): Likewise.
3271         (ccp_visit_stmt): Likewise.
3272         (execute_ssa_ccp): Add argument 'store_ccp'.  Copy it
3273         into DO_STORE_CCP.
3274         (do_ssa_ccp): New.
3275         (pass_ccp): Use it.
3276         (do_ssa_store_ccp): New.
3277         (gate_store_ccp): New.
3278         (pass_store_ccp): Declare.
3279         * tree-ssa-copy.c: Include tree-ssa-propagate.h.
3280         (may_propagate_copy): Reformat.
3281         Don't abort if ORIG is a virtual and DEST isn't.
3282         If NEW does not have alias information but DEST does,
3283         copy it.
3284         (copy_of, cached_last_copy_of, do_store_copy_prop, enum
3285         copy_prop_kind, which_copy_prop): Declare.
3286         (stmt_may_generate_copy, get_copy_of_val,
3287         get_last_copy_of, set_copy_of_val, dump_copy_of,
3288         copy_prop_visit_assignment, copy_prop_visit_cond_stmt,
3289         copy_prop_visit_stmt, copy_prop_visit_phi_node,
3290         init_copy_prop, fini_copy_prop, execute_copy_prop,
3291         gate_copy_prop, do_copy_prop, gate_store_copy_prop,
3292         store_copy_prop): New.
3293         (pass_copy_prop, pass_store_copy_prop): Declare.
3294         * tree-ssa-dom.c (struct opt_stats_d): Add fields
3295         'num_const_prop' and 'num_copy_prop'.
3296         (cprop_operand): Update them.
3297         (dump_dominator_optimization_stats): Dump them.
3298         (tree_ssa_dominator_optimize): Call update_ssa instead of
3299         rewrite_into_ssa.
3300         (loop_depth_of_name): Declare extern.
3301         (simplify_cond_and_lookup_avail_expr): Guard against NULL
3302         values for LOW or HIGH.
3303         (cprop_into_successor_phis): Only propagate if NEW != ORIG.
3304         (record_equivalences_from_stmt): Call expr_computes_nonzero.
3305         (cprop_operand): Only propagate if VAL != OP.
3306         * tree-ssa-dse.c (dse_optimize_stmt): Mark symbols in removed
3307         statement for renaming.
3308         * tree-ssa-loop-im.c (move_computations): Call update_ssa.
3309         * tree-ssa-loop-ivopts.c (rewrite_address_base): Call
3310         add_type_alias if necessary.
3311         Call mark_new_vars_to_rename.
3312         (tree_ssa_iv_optimize): If new symbols need to be renamed,
3313         mark every statement updated, call update_ssa and
3314         rewrite_into_loop_closed_ssa.
3315         * tree-ssa-loop-manip.c (add_exit_phis): Do not remove DEF_BB
3316         from LIVEIN if VAR is a virtual.
3317         * tree-ssa-loop.c (tree_loop_optimizer_init): Call update_ssa.
3318         * tree-ssa-operands.c (get_expr_operands): Handle ASSERT_EXPR.
3319         (get_call_expr_operands): Reformat statement.
3320         (add_stmt_operand): Don't create V_MAY_DEFs for read-only
3321         symbols.
3322         * tree-ssa-propagate.c (ssa_prop_init): Initialize
3323         SSA_NAME_VALUE for every name.
3324         (first_vdef, stmt_makes_single_load, stmt_makes_single_store,
3325         get_value_loaded_by): New.
3326         (replace_uses_in, replace_vuses_in, replace_phi_args_in,
3327         substitute_and_fold): Move from tree-ssa-ccp.c.
3328         * tree-ssa-propagate.h (struct prop_value_d, prop_value_t,
3329         first_vdef, stmt_makes_single_load, stmt_makes_single_store,
3330         get_value_loaded_by, replace_uses_in, substitute_and_fold):
3331         Declare.
3332         * tree-ssa.c (verify_use): Fix error message.
3333         (propagate_into_addr, replace_immediate_uses, get_eq_name,
3334         check_phi_redundancy, kill_redundant_phi_nodes,
3335         pass_redundant_phi): Remove.  Update all users.
3336         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
3337         add_type_alias, if necessary.
3338         * tree-vectorizer.h (struct _stmt_vect_info): Update
3339         documentation for field 'memtag'.
3340         * tree-vrp.c: New file.
3341         * tree.def (ASSERT_EXPR): Define.
3342         * tree.h (ASSERT_EXPR_VAR): Define.
3343         (ASSERT_EXPR_COND): Define.
3344         (SSA_NAME_VALUE_RANGE): Define.
3345         (struct tree_ssa_name): Add field 'value_range'.
3346         (PHI_REWRITTEN): Remove.
3347         (struct tree_phi_node): Remove field 'rewritten'.
3348         * doc/invoke.texi (-fdump-tree-storeccp, -ftree-copy-prop,
3349         -ftree-store-copy-prop): Document.
3350         * doc/tree-ssa.texi: Remove broken link to McCAT's compiler.
3351         Document usage of update_ssa.
3352
3353 2005-04-08  David Edelsohn  <edelsohn@gnu.org>
3354
3355         PR target/20814
3356         * config/rs6000/predicates.md (altivec_register_operand): Accept
3357         SUBREG.
3358         (and64_operand): Do not limit CONST_INT to mask64_operand.
3359         (and64_2_operand): Do not limit CONST_INT to mask64_1or2_operand.
3360         (and_operand): Do not limit CONST_INT to mask_operand.
3361
3362 2005-04-09  Hans-Peter Nilsson  <hp@axis.com>
3363
3364         PR rtl-optimization/20466
3365         * flow.c (invalidate_mems_from_set): Handle a MEM by checking it
3366         for overlap of the address of each list member.
3367         (mark_set_1): Call invalidate_mems_from_set for MEMs too.
3368
3369 2005-04-08  Mike Stump  <mrs@apple.com>
3370
3371         * config/darwin.c (indirect_data): Fix typo in strncmp logic.
3372
3373         * config/rs6000/rs6000.c (rs6000_emit_prologue): Use 5 nops,
3374         instead of 4.
3375
3376 2005-04-08  Kazu Hirata  <kazu@cs.umass.edu>
3377
3378         * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Remove.
3379
3380         * function.c (push_function_context_to): Don't set
3381         contains_functions.
3382         * function.h (function): Remove contains_functions.
3383         (current_function_contains_functions): Remove.
3384
3385         * function.h (function): Remove instrument_entry_exit.
3386         (current_function_instrument_entry_exit): Remove.
3387
3388         * function.h (nonlocal_labels): Remove.
3389
3390         * tree.h (STRIP_MAIN_TYPE_NOPS): Remove.
3391
3392         * genattrtab.c (attr_desc): Remove negative_ok and unsigned_p.
3393         (check_attr_value, write_attr_get, write_expr_attr_cache,
3394         find_attr, make_internal_attr): Don't reference negative_ok or
3395         unsigned_p.
3396         * genattrtab.h (ATTR_NEGATIVE_OK, ATTR_UNSIGNED,
3397         ATTR_FUNC_UNITS, ATTR_BLOCKAGE): Remove.
3398         (ATTR_STATIC): Adjust the value.
3399
3400         * c-common.h (C_ARTIFICIAL_STRING_P): Remove.
3401
3402 2005-04-08  Ulrich Weigand  <uweigand@de.ibm.com>
3403
3404         * config/s390/tpf.h (ASM_SPEC): Define.
3405
3406 2005-04-08  Kazu Hirata  <kazu@cs.umass.edu>
3407
3408         * tree-flow.h: Remove the prototype for
3409         redirect_immediate_uses.
3410         (TDFA_USE_OPS, TDFA_USE_VOPS): Remove.
3411
3412 2005-04-08  Richard Earnshaw  <richard.earnshaw@arm.com>
3413
3414         * arm.c (arm_const_double_by_parts): New function.
3415         * arm-protos.h (arm_const_double_by_parts): Add prototype.
3416         * arm.md (define_split for 64-bit constants): Add another one.
3417
3418 2005-04-08  Andrew MacLeod  <amacleod@redhat.com>
3419
3420         * tree-ssa-operands.c (correct_use_link): Remove linear scan.
3421
3422 2005-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3423
3424         * system.h: Revert last change.
3425
3426 2005-04-08  Richard Sandiford  <rsandifo@redhat.com>
3427
3428         * config/xtensa/xtensa.h (target_flags, MASK_NO_FUSED_MADD)
3429         (MASK_CONST16, TARGET_NO_FUSED_MADD, TARGET_CONST16)
3430         (TARGET_SWITCHES): Delete.
3431         * config/xtensa/xtensa.c (TARGET_DEFAULT_TARGET_FLAGS): Define.
3432         * config/xtensa/xtensa.md (muladdsf3, mulsubsf3): Check
3433         TARGET_FUSED_MADD instead of !TARGET_NO_FUSED_MADD.
3434         * config/xtensa/xtensa.opt: New file.
3435
3436 2005-04-08  Ben Elliston  <bje@au.ibm.com>
3437
3438         * config/fp-bit.c: Include L_mul_tf in #endif comment.
3439         * config/fp-bit.h: Tidy comments.
3440
3441 2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3442
3443         * system.h: Poison PARAMS.
3444
3445 2005-04-07  Richard Sandiford  <rsandifo@redhat.com>
3446
3447         * config/vax/vax.h (target_flags, MASK_UNIX_ASM, MASK_VAXC_ALIGNMENT)
3448         (MASK_G_FLOAT, TARGET_UNIX_ASM, TARGET_VAXC_ALIGNMENT, TARGET_G_FLOAT)
3449         (TARGET_SWITCHES): Delete.
3450         * config/vax/vax.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
3451         * config/vax/vax.opt: New file.
3452
3453 2005-04-07  Daniel Berlin  <dberlin@dberlin.org>
3454
3455         * tree-ssa-dse.c (dse_optimize_stmt): Fix incorrect comment.
3456
3457 2005-04-07  Ian Lance Taylor  <ian@airs.com>
3458
3459         * config/iq2000/iq2000.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Don't
3460         define.
3461         * config/mips/mips.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise.
3462         * config/sparc/sparc.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE):
3463         Likewise.
3464
3465 2005-04-07  Kazu Hirata  <kazu@cs.umass.edu>
3466
3467         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Consider
3468         all immediate uses in PHI nodes.
3469
3470 2005-04-07  Richard Earnshaw  <richard.earnshaw@arm.com>
3471
3472         * arm.c (arm_const_double_inline_cost): Handle any constant by
3473         using gen_lowpart and gen_highpart_mode.
3474         (note_invalid_constants): All constants in an RTX with a constraint
3475         that permits memory are now pushed to the constant pool.
3476         (output_move_double): Delete code to handle reg to reg and
3477         constant to reg moves.
3478         (const_double_needs_minipool, output_mov_immediate): Delete.
3479         * arm.h (EXTRA_CONSTRAINT_STR_ARM): All 'D' variants now handle
3480         CONST_INT and CONST_VECTOR.
3481         * arm.md (ANY64): New mode macro.
3482         (arm_movdi): Split reg-reg and const-reg moves.  Simplify constraints.
3483         (movdf_soft_insn): Split reg-reg and const-reg moves.
3484         (split patterns for 64-bit constant and register moves): New.
3485         * cirrus.md (cirrus_arm_movdi): Split reg-reg and const-reg moves.
3486         (cirrus_movdf_hard_insn): Likewise.
3487         * fpa.md (movdf_fpa): Likewise.
3488         * iwmmxt.md (iwmmxt_arm_movdi): Likewise.
3489         (movv8qi_internal, movv4hi_internal, movv2si_internal): Fix
3490         constraints.
3491         (movv2si_internal_2): Likewise.
3492         * vfp.md (arm_movdi_vfp): Split reg-reg and const-reg moves.
3493         (movdf_vfp): Likewise.
3494         * arm-protos.h (output_mov_immediate): Delete prototype.
3495
3496 2005-04-07  Joseph S. Myers  <joseph@codesourcery.com>
3497
3498         PR target/20093
3499         * simplify-rtx.c (simplify_unary_operation_1): Check
3500         SUBREG_PROMOTED_UNSIGNED_P (op) > 0 for zero-extension.
3501
3502 2005-04-06  James E Wilson  <wilson@specifixinc.com>
3503
3504         PR target/20717
3505         * cgraphunit.c (record_call_1, case FDESC_EXPR): Handle same as
3506         ADDR_EXPR.
3507
3508 2004-04-06  Richard Sandiford  <rsandifo@redhat.com>
3509
3510         * coverage.h (GCOV_TYPE_NODE): Delete.
3511         * coverage.c (coverage_counter_alloc, tree_coverage_counter_ref)
3512         (build_ctr_info_type): Use get_gcov_type () instead of GCOV_TYPE_NODE.
3513         * tree-profile.c (tree_gen_edge_profiler, tree_gen_interval_profiler)
3514         (tree_gen_pow2_profiler, tree_gen_one_value_profiler): Likewise.
3515         * value-prof.c (tree_divmod_fixed_value_transform): Delete.
3516
3517 2004-04-06  Richard Sandiford  <rsandifo@redhat.com>
3518
3519         PR other/20792
3520         * Makefile.in (gcc.pot): Remove options.c dependency.
3521         * optc-gen.awk: Don't quote help strings with N_().
3522
3523 2005-04-06  James A. Morrison  <phython@gcc.gnu.org>
3524
3525         * c-common.c (handle_malloc_atttribute): Only set DECL_IS_MALLOC if
3526         the function returns a pointer type.
3527
3528 2005-04-06  Daniel Berlin  <dberlin@dberlin.org>
3529
3530         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): New
3531         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): New
3532         * doc/invoke.texi: Documnet salias-max-implicit-fields.
3533         * tree-ssa-alias.c (struct used_part): Add implicit_uses and
3534         explicit_uses members.
3535         (get_or_create_used_part_for): Initialize new fields.
3536         (fieldoff_compare): New function.
3537         (create_overlap_variables_for): Count number of fields, use
3538         heuristic to determine whether to create subvars for vars with
3539         only implicit uses.
3540         Sort the field list by offset and avoid creating duplicate SFT's.
3541
3542 2005-04-06  Richard Sandiford  <rsandifo@redhat.com>
3543
3544         * c.opt (-F): Remove trailing whitespace from help string.
3545         (-finput-charset): Use a tab to separate the switch name and help
3546         string.
3547         * common.opt (-fsched-stalled-insns, -fsched-stalled-insns-dep)
3548         (-ftree-vectorizer-verbose): Likewise.
3549
3550 2005-04-06  Kazu Hirata  <kazu@cs.umass.edu>
3551
3552         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Look at
3553         a PHI argument where a use occurs instead of all PHI arguments.
3554
3555 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
3556
3557         * c-decl.c (finish_decl): Apply pending #pragma weak regardless of
3558         scope.
3559
3560 2005-04-06  Kazu Hirata  <kazu@cs.umass.edu>
3561
3562         * cse.c, tree-flow-inline.h, tree-flow.h, tree-ssa-operands.c,
3563         tree-ssa-sink.c, tree.h, config/bfin/bfin.c,
3564         config/bfin/bfin.h: Fix comment typos.
3565
3566 2005-04-06  Ranjit Mathew  <rmathew@hotmail.com>
3567
3568         * doc/install.texi: Update the URL for Jacks.
3569         * doc/sourcebuild.texi: Likewise.
3570
3571 2005-04-06  Eric Botcazou  <ebotcazou@libertysurf.fr>
3572
3573         PR target/17245
3574         * config/sparc/sparc.c (legitimate_address_p): Remove 'imm2'.
3575         Revert 2004-10-08 patch.  Reject TFmode LO_SUM in 32-bit mode.
3576
3577 2005-04-06  Kelley Cook  <kcook@gcc.gnu.org>
3578
3579         * Makefile.in (LIBGCC2_CFLAGS): Revert -pipe change.
3580
3581 2005-04-06  Richard Sandiford  <rsandifo@redhat.com>
3582
3583         * config/v850/v850-protos.h (override_options): Delete.
3584         * config/v850/v850.h (target_flags, MASK_GHS, MASK_LONG_CALLS, MASK_EP)
3585         (MASK_PROLOG_FUNCTION, MASK_DEBUG, MASK_V850, MASK_V850E)
3586         (MASK_SMALL_SLD, MASK_BIG_SWITCH, MASK_NO_APP_REGS, MASK_DISABLE_CALLT)
3587         (MASK_STRICT_ALIGN, MASK_US_BIT_SET, MASK_US_MASK_SET, TARGET_GHS)
3588         (TARGET_LONG_CALLS, TARGET_EP, TARGET_PROLOG_FUNCTION, TARGET_V850)
3589         (TARGET_BIG_SWITCH, TARGET_DEBUG, TARGET_V850E, TARGET_US_BIT_SET)
3590         (TARGET_SMALL_SLD, TARGET_DISABLE_CALLT, TARGET_NO_APP_REGS)
3591         (TARGET_STRICT_ALIGN, TARGET_SWITCHES, TARGET_OPTIONS)
3592         (OVERRIDE_OPTIONS): Delete.
3593         (MASK_CPU): Redefine as MASK_V850 | MASK_V850E.
3594         (small_memory_info): Remove the value field.
3595         (CONDITIONAL_REGISTER_USAGE): Check !TARGET_APP_REGS rather than
3596         TARGET_NO_APP_REGS.
3597         * config/v850/v850.c (small_memory): Remove the value field.
3598         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3599         (override_options): Delete.
3600         (v850_handle_memory_option, v850_handle_option): New functions.
3601         * config/v850/v850.opt: New file.
3602
3603 2005-04-06  Geoffrey Keating  <geoffk@apple.com>
3604
3605         * config.host: Add a section for generic hosts, and a subsection
3606         for Darwin.  Add a case for x86-darwin.  Update ppc-darwin case.
3607         * config/host-darwin.c: New, split out of config/rs6000/host-darwin.c.
3608         * config/host-darwin.h: New.
3609         * config/x-darwin: New.
3610         * config/i386/host-i386-darwin.c: New.
3611         * config/i386/x-darwin: New.
3612         * config/rs6000/host-darwin.c: Include host-darwin.h.
3613         (darwin_rs6000_gt_pch_get_address): Move to config/host-darwin.c.
3614         (darwin_rs6000_gt_pch_use_address): Likewise.
3615         * config/rs6000/x-darwin: Change name of .o built, update
3616         dependencies for changes to rs6000/host-darwin.c.
3617
3618 2005-04-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
3619
3620         PR target/17824
3621         * config/c4x/c4x.h (ASM_PROG, LD_PROG): Remove.
3622
3623 2005-04-06  Dorit Naishlos  <dorit@il.ibm.com>
3624
3625         * tree-vect-analyze.c (vect_analyze_loop_form): Call
3626         split_loop_exit_edge instead of loop_split_edge_with.
3627
3628 2005-04-06  Paolo Bonzini  <bonzini@gnu.org>
3629
3630         * config/rs6000/altivec.md (UNSPEC_VSLW, UNSPEC_SUBS,
3631         UNSPEC_SET_VSCR): New constants, used throughout.
3632         (*andc3_v4sf): New.
3633         (altivec_vspltisb, altivec_vsplitish, altivec_vsplitisw):
3634         Replace with...
3635         (altivec_vspltis<VI_char>): ... this pattern, using
3636         a QImode const_int_operand for the immediate.
3637         (abs<mode>2, absv4sf2, altivec_abss_<mode>): Rewrite as
3638         define_expands.
3639
3640 2005-04-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
3641
3642         PR target/17822
3643         * config/avr/t-avr (AR_FOR_TARGET,RANLIB_FOR_TARGET): Remove.
3644
3645 2005-04-06  Kelley Cook  <kcook@gcc.gnu.org>
3646
3647         * Makefile.in (LIBGCC2_CFLAGS): Compile with -pipe.
3648
3649 2005-04-06  Ben Elliston  <bje@au.ibm.com>
3650
3651         * gcc.c: Correct comment about DEFAULT_SWITCH_TAKES_ARG and
3652         DEFAULT_WORD_SWITCH_TAKES_ARG which incorrectly reported these
3653         macros as living in "this file" and not gcc.h.
3654
3655 2005-04-06  Ben Elliston  <bje@au.ibm.com>
3656
3657         * doc/invoke.texi (Optimize Options): Mention -ftree-lrs, not
3658         -ftree-live_range_split.  Perhaps renamed at some point?
3659
3660 2005-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
3661
3662         PR target/20625
3663         * tree-ssa-loop-ivopts.c (generic_type_for): New function.
3664         (add_candidate_1): Use generic_type_for instead of unsigned_type_for.
3665
3666 2005-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
3667
3668         * tree-flow.h (number_of_iterations_cond): Declaration removed.
3669         * tree-ssa-loop-niter.c (number_of_iterations_cond): Made static.
3670         (number_of_iterations_special): New function.
3671         (number_of_iterations_exit): Use number_of_iterations_special.
3672         Use simplify_using_outer_evolutions only at -O3.
3673         (number_of_iterations_cond, tree_simplify_using_condition,
3674         simplify_using_initial_conditions, loop_niter_by_eval,
3675         compare_trees, can_count_iv_in_wider_type_bound,
3676         simplify_using_outer_evolutions): Use fold_build.
3677
3678 2005-04-05  Thomas Fitzsimmons  <fitzsim@redhat.com>
3679
3680         * doc/install.texi (Configuration): Document --with-java-home.
3681
3682 2005-04-05  Richard Henderson  <rth@redhat.com>
3683
3684         PR target/20342
3685         PR target/20447
3686         * config/i386/i386.c (print_operand): Handle vector zeros.
3687         (ix86_split_to_parts): Handle CONST_VECTOR.
3688         (ix86_hard_regno_mode_ok): Allow MMX modes in general regs.
3689         (ix86_modes_tieable_p): Use ix86_hard_regno_mode_ok to decide
3690         what modes to tie for MMX and SSE registers.
3691         * config/i386/i386.h (MMX_REG_MODE_P): Remove.
3692         * config/i386/i386.md: Extend move 0 -> xor peephole to apply
3693         to vector modes as well.
3694         * config/i386/predicates.md (const0_operand): Handle VOIDmode
3695         properly as an input mode.
3696
3697 2005-04-05  Andrew MacLeod  <amacleod@redhat.com>
3698
3699         * tree-ssa-operands.c (verify_abort): Use %p for pointers.
3700
3701 2005-04-05  Andrew MacLeod  <amacleod@redhat.com>
3702
3703         * tree-pretty-print.c (dump_generic_node): Use %p for pointer.
3704
3705 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
3706
3707         * config/i386/i386.c (init_cumulative_args): For -m32 -mfpmath=sse
3708         and local functions, set sse_nregs to 8 and float_in_sse.
3709         (function_arg_advance, function_arg): If float_in_sse, pass
3710         SFmode and DFmode arguments in SSE registers.
3711         * config/i386/i386.h (CUMULATIVE_ARGS): Add float_in_sse field.
3712
3713         * config/i386/i386.c (ix86_value_regno): Only optimize local functions
3714         of -funit-at-a-time.
3715
3716 2005-04-05  Paolo Bonzini  <bonzini@gnu.org>
3717
3718         * config/i386/i386-protos.h (ix86_function_value): Accept two
3719         arguments, like the target macro.
3720         * config/i386/i386.h (FUNCTION_VALUE): Pass both arguments.
3721         * config/i386/i386.c (ix86_function_value): Accept the second
3722         argument of the target macro.
3723         (ix86_function_ok_for_sibcall): Pass a function pointer to
3724         ix86_function_value.
3725         (ix86_function_value, ix86_libcall_value) [!TARGET_64BIT]: Adjust
3726         call to ix86_value_regno).
3727         (ix86_value_regno): Add support for returning floating point values
3728         in SSE registers.
3729
3730 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
3731
3732         PR tree-optimization/20076
3733         * tree-inline.c (inline_forbidden_p_1): Prevent inlining functions
3734         that call __builtin_return or __builtin_apply_args.
3735
3736 2005-04-05  Andrew MacLeod  <amacleod@redhat.com>
3737
3738         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use update_stmt.
3739         Use immediate use iterator.
3740         (stmt_is_bumper_for_loop): Use immediate use iterator.
3741         * predict.c (strip_builtin_expect): Use update_stmt.
3742         * tree-cfg.c (update_modified_stmts): New. Call update_stmt_if_modified
3743         on all elements of a STATEMENT_LIST.
3744         (bsi_insert_before, bsi_insert_after): Call update_modified_stmts.
3745         (bsi_remove): Remove imm_use links and mark the stmt as modified.
3746         (bsi_replace): Mark stmt as modified and the update it.
3747         * tree-complex.c (update_complex_assignment): Call mark_stmt_modified.
3748         (expand_complex_libcal): Call update_stmt.
3749         (expand_complex_comparison): Call mark_stmt_modified.
3750         (expand_complex_operations_1): Call update_stmt_if_modified.
3751         (expand_vector_operations_1): Call mark_stmt_modified.
3752         * tree-dfa.c (compute_immediate_uses, free_df_for_stmt, free_df,
3753         compute_immediate_uses_for_phi, compute_immediate_uses_for_stmt,
3754         add_immediate_use, redirect_immediate_use,
3755         redirect_immediate_uses, dump_immediate_uses, debug_immediate_uses,
3756         dump_immediate_uses_for, debug_immediate_uses_for): Delete.
3757         (mark_new_vars_to_rename): Call update_stmt.
3758         * tree-dump.c (dump_option_value_in): Add "stmtaddr".
3759         * tree-flow-inline.h (modify_stmt): Rename to mark_stmt_modified.
3760         Ignore PHI nodes.
3761         (unmodify_stmt): Delete.
3762         (update_stmt): New.  Force an update of a stmt.
3763         (update_stmt_if_modified): update a stmt if it is out of date.
3764         (get_stmt_operands): Verify stmt is NOT modified.
3765         (stmt_modified_p): Update comment.
3766         (delink_imm_use): Remove a use node from its immuse list.
3767         (link_imm_use_to_list): Link a use node to a specific list.
3768         (link_imm_use): Link a node to the correct list.
3769         (set_ssa_use_from_ptr): Set a use node to a specific value, and insert
3770         it in the correct list, if appropriate.
3771         (link_imm_use_stmt): Link a use node, and set the stmt pointer.
3772         (relink_imm_use): Link a use node in place of another node in a list.
3773         (relink_imm_use_stmt): LInk a node in place of another node, and set
3774         the stmt pointer.
3775         (end_safe_imm_use_traverse): New.  Terminate a safe immuse iterator.
3776         (end_safe_imm_use_p): New.  Check for the end of a safe immuse iterator.
3777         (first_safe_imm_use): New.  Initialize a safe immuse iterator.
3778         (next_safe_imm_use): New.  Proceed to next safe immuse iterator value.
3779         (end_readonly_imm_use_p): New.  Check for end of a fast immuse iterator.
3780         (first_readonly_imm_use): New.  Initialize a fast immuse iterator.
3781         (next_readonly_imm_use): New.  Get the next fast immuse iterator value.
3782         (has_zero_uses): New.  Return true if there are no uses of a var.
3783         (has_single_use): New.  Return true if there is only a single use of a
3784         variable.
3785         (single_imm_use): New.  Return the simgle immediate use.
3786         (num_imm_uses): New.  Return the number of immediate uses.
3787         (get_v_must_def_ops): Use is now a pointer.
3788         (use_operand_p, get_v_may_def_op_ptr, get_vuse_op_ptr,
3789         get_v_must_def_kill_ptr, get_phi_arg_def_ptr): Return the address of
3790         the use node.
3791         (get_immediate_uses, num_immediate_uses, immediate_use): Delete.
3792         (delink_stmt_imm_use): Delink all immuses from a stmt.
3793         (phi_arg_index_from_use): New.  Return a phi arg index for a use.
3794         * tree-flow.h (struct dataflow_d): Delete.
3795         (immediate_use_iterator_d): New.  Immediate use iterator struct.
3796         (FOR_EACH_IMM_USE_FAST): New.  Macro for read only immuse iteration.
3797         (FOR_EACH_IMM_USE_SAFE): New.  Macro for write-safe immuse iteration.
3798         (BREAK_FROM_SAFE_IMM_USE): New.  Macro for earlyu exit from write-safe
3799         iteration.
3800         (struct stmt_ann_d): Remove dataflow_t from struct.
3801         * tree-if-conv.c (tree_if_conversion).  Don't call free_df.
3802         (if_convertible_phi_p): Use FAST immuse iterator.
3803         (if_convertible_loop_p): Don't call compute_immediate_uses.
3804         (replace_phi_with_cond_modify_expr): Call update_stmt.
3805         * tree-into-ssa.c (mark_def_sites, ssa_mark_def_sites): Call
3806         update_stmt_if_modified.
3807         (rewrite_all_into_ssa): Initialize ssa operands.
3808         * tree-loop-linear.c (linear_transform_loops): Don't call free_df or
3809         compute_immediate_uses.
3810         * tree-optimize.c (execute_todo): Call verify_ssa whenever the
3811         ssa_property is available.
3812         (execute_one_pass):  Change parameters passed to execute_todo.
3813         * tree-outof-ssa.c (rewrite_trees): Don't call modify_stmt.
3814         (remove_ssa_form): Call fini_ssa_operands.
3815         (insert_backedge_copies): Delete call to modify_stmt.
3816         * tree-phinodes.c (make_phi_node): Initialize use nodes.
3817         (release_phi_node): Delink any use nodes before releasing.
3818         (resize_phi_node): Relink any use nodes.
3819         (remove_phi_arg_num): Delink the use node.
3820         (remove_phi_node): Release the ssa_name AFTER releasing the phi node.
3821         (remove_all_phi_nodes_for): Release phi node first.
3822         * tree-pretty-print.c (dump_generic_node): Print stmt address.
3823         * tree-sra.c (mark_all_v_defs): Call update_stmt_if_modified.
3824         (scalarize_use, scalarize_copy): Call update_stmt.
3825         * tree-ssa-alias.c (compute_may_aliases): Update all modified stmts.
3826         (compute_points_to_and_addr_escape): Call mark_stmt_modified.
3827         * tree-ssa-cpp.c (need_imm_uses_for): Delete.
3828         (ccp_initialize): Remove call to compute_immediate_uses.
3829         (substitute_and_fold, execute_fold_all_builtins): Call update_stmt.
3830         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Update all modified
3831         stmts.
3832         (simplify_cond_and_lookup_avail_expr): Call mark_stmt_modified.
3833         (simplify_switch_and_lookup_avail_expr): Call mark_stmt_modified.
3834         (eliminate_redundant_computations): Call mark_stmt_modified.
3835         (cprop_operand): Call mark_stmt_modified.
3836         (optimize_stmt): Call update_stmt_if_modified and mark_stmt_modified.
3837         * tree-ssa-dse.c (fix_phi_uses, fix_stmt_v_may_defs): Delete.
3838         (dse_optimize_stmt): Use new immuse interface.
3839         (tree_ssa_dse): Remove calls to compute_immediate_uses and free_df.
3840         * tree-ssa-forwprop.c (need_imm_uses_for): Delete.
3841         (substitute_single_use_vars): Use new immuse interface.
3842         (tree_ssa_forward_propagate_single_use_vars): Remove calls to free_df
3843         and compute_immediate_uses.
3844         * tree-ssa-loop-im.c (single_reachable_address): Use new immuse
3845         interface.
3846         (rewrite_mem_refs): Call update_stmt.
3847         (determine_lsm): Remove call to compute_imm_uses and free_df.
3848         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Call update_stmt.
3849         (try_unroll_loop_completely): Call update_stmt.
3850         * tree-ssa-loop-ivopts.c (rewrite_address_base): Call update_stmt.
3851         (rewrite_use_compare): Call update_stmt.
3852         (compute_phi_arg_on_exit): Insert each stmt before trying to process.
3853         (rewrite_use) : Call update_stmt.
3854         * tree-ssa-loop-manip.c (verify_loop_closed_ssa): Add arg to call.
3855         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Call
3856         update_stmt.
3857         * tree-ssa-operands.c (NULL_USE_OPERAND_P): Remove declaration.
3858         (allocate_use_optype, allocate_vuse_optype): Adjust allocation size.
3859         (free_uses, free_vuses, free_v_may_defs, free_v_must_defs): Delink
3860         use nodes.
3861         (initialize_vuse_operand): New.  Initialize a vuse operand.
3862         (initialize_v_may_def_operand): New.  Initialize a maydef operand.
3863         (initialize_v_must_def_operand): New.  Initialize a mustdef operand.
3864         (finalize_ssa_defs): Use stmt parameter.
3865         (correct_use_link): Ensure a use node is in the correct list, and has
3866         the correct stmt pointer.
3867         (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_vuses,
3868         finalize_ssa_v_must_defs): Also initialize use nodes.
3869         (finalize_ssa_stmt_operands): Pass extra stmt operands.
3870         (build_ssa_operands): Seperate parsing from final operand construction.
3871         (parse_ssa_operands): New.  Parse entry point for operand building.
3872         (swap_tree_operands): New.  Swap 2 tree operands.
3873         (update_stmt_operands): Ranamed from get_stmt_operands.  Always builds
3874         operands.
3875         (get_expr_operands): Call swap_tree_operands when needed.
3876         (copy_virtual_operands): Use initialize routines for virtual use ops.
3877         (create_ssa_artficial_load_stmt): Add extra stmt parameter.
3878         (verify_abort): New.  Issue imm_use error.
3879         (verify_imm_links): New Verify imm_use links for a var.
3880         (dump_immediate_uses_for): New.  Dump imm_uses for a var to file.
3881         (dump_immediate_uses): New.  Dump imm_uses for all vars to file.
3882         (debug_immediate_uses): New.  Dump imm_uses for all vars to stderr.
3883         (debug_immediate_uses_for): New.  Dump imm_uses for a var to stderr.
3884         * tree-ssa-operands.h (struct use_operand_ptr): Delete.
3885         (NULL_USE_OPERAND_P) Define.
3886         (use_optype_d, v_def_use_operand_type, vuse_optype_d): Add immediate
3887         use node.
3888         (struct vuse_operand_type): New struct.
3889         (SET_USE): Call set_ssa_use_from_ptr.
3890         (USE_STMT): Define.
3891         (PHI_ARG_INDEX_FROM_USE): Define.
3892         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Set the phi
3893         argument via SET_USE, not PHI_ARG_DEF_TREE.
3894         * tree-ssa-pre.c (eliminate): Call update_stmt.
3895         * tree-ssa-propagate.c (cfg_blocks_get): Use imm_use iterators.  Don't
3896         call free_df.
3897         * tree-ssa-sink.c (all_immediate_uses_same_place): Use imm_use iterator.
3898         (nearest_common_dominator_of_uses): Use imm_use iterator.
3899         (statement_sink_location): Use imm_use iterator and interface.
3900         (execute_sink_code): Don't call compute_immediate_uses or free-df.
3901         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis): Use
3902         PHI_ARG_DEF, not PHI_ARG_DEF_TREE.
3903         * tree-ssa.c (verify_use, verify_phi_args): Verify some imm_use info.
3904         (verify_ssa): Ensure no stmt is marked modify after optimization pass
3905         if new parameter is true.
3906         (init_tree_ssa): Don't initialize operand cache here.
3907         (delete_tree_ssa): Don't destroy operand cache here.
3908         (propagate_into_addr): Pass in a use pointer, return true if anything
3909         was changed.
3910         (replace_immediate_uses): Use imm_use iterator, call update_stmt.
3911         (check_phi_redundancy): Use imm_use iterator.
3912         (kill_redundant_phi_nodes): Don't call compute_immediate_uses or
3913         free_df.
3914         * tree-ssanames.c (make_ssa_name): Initialize imm_use node.
3915         (release_ssa_name): Delink node and all elements in its imm_use list.
3916         * tree-tailcall.c (adjust_return_value): Call update_stmt.
3917         * tree-vect-analyze.c (vect_stmt_relevant_p): Use imm_use iterator.
3918         * tree-vectorizer.c (need_imm_uses_for): Delete.
3919         (vectorize_loops): Dont call compute_immediate_uses or free_df.
3920         * tree.h (struct ssa_imm_use_d): Define.
3921         (SSA_NAME_IMM_USE_NODE): Define.
3922         (struct tree_ssa_name): Add imm_use node.
3923         (PHI_DF): Delete.
3924         (PHI_ARG_IMM_USE_NODE): Define.
3925         (struct phi_arg_d): Add imm_use node.
3926         (struct tree_phi_node): Remove struct dataflow_d element.
3927         (TDF_STMTADDR): Define.
3928
3929 2005-04-05  Dale Johannesen  <dalej@apple.com>