OSDN Git Service

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