OSDN Git Service

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