OSDN Git Service

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