OSDN Git Service

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