OSDN Git Service

* builtins.c (fold_builtin_sprintf): Use fold_convert instead of
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2006-04-04  Roger Sayle  <roger@eyesopen.com>
2
3         * builtins.c (fold_builtin_sprintf): Use fold_convert instead of
4         convert in the middle-end.
5         * expr.c (store_expr, store_constructor, get_inner_reference,
6         expand_expr_real_1, string_constant, try_casesi, try_tablejump):
7         Likewise.
8         * tree.c (build_range_type): Likewise.
9
10 2006-04-04  Tom Tromey  <tromey@redhat.com>
11
12         * doc/install.texi (Prerequisites): Mention jar.
13
14 2006-04-04  Daniel Berlin  <dberlin@dberlin.org>
15
16         * doc/tree-ssa.texi (Preserving the virtual ssa form): New
17         subsection.
18
19 2006-04-04  Matthias Klose  <doko@debian.org>
20
21         * Makefile.in (unprotoize.o): Same dependencies as for protoize.o.
22
23 2006-04-03  Geoffrey Keating  <geoffk@apple.com>
24
25         * doc/extend.texi (Function Attributes): Rewrite visibility 
26         attribute documentation.
27         * doc/invoke.texi (C++ Dialect Options): Rewrite
28         -fvisibility-inlines-hidden documentation to describe something
29         entirely different, although in practise compatible.
30         (Code Gen Options): Warn about system headers in -fvisibiltity=
31         documentation.
32
33         * doc/extend.texi (Other Builtins): Document that
34         __builtin_nan is a compile-time constant only when its argument
35         is valid.
36
37 2006-04-03  Adam Nemet  <anemet@caviumnetworks.com>
38
39         * simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>: When
40         trying to remove TRUNCATE check if all bits outside the new mode
41         are identical to the sign bit.
42
43 2006-04-03  Jeff Law  <law@redhat.com>
44
45         * tree-ssa-dom.c (propagate_rhs_into_lhs): Avoid useless folding
46         and operand scanning in some common cases.
47
48 2006-04-03  Paolo Bonzini  <bonzini@gnu.org>
49             Dale Johannesen  <dalej@apple.com>
50
51         PR target/19653
52         * regclass.c (struct reg_pref): Update documentation.
53         (regclass): Set prefclass to NO_REGS if memory is the best option.
54         (record_reg_classes): Cope with a prefclass set to NO_REGS.
55         * reload.c (find_reloads): Take PREFERRED_OUTPUT_RELOAD_CLASS
56         into account.  For non-registers, equate an empty preferred
57         reload class to a `!' in the constraint; move the if clause to
58         do so after those that reject the insn.
59         (push_reload): Allow PREFERRED_*_RELOAD_CLASS to liberally
60         return NO_REGS.
61         (find_dummy_reload): Likewise.
62         * doc/tm.texi (Register Classes): Document what it means
63         if PREFERRED_*_RELOAD_CLASS return NO_REGS.
64         * config/i386/i386.c (ix86_preferred_reload_class): Force
65         using SSE registers (and return NO_REGS for floating-point
66         constants) if math is done with SSE.
67         (ix86_preferred_output_reload_class): New.
68         * config/i386/i386-protos.h (ix86_preferred_output_reload_class): New.
69         * config/i386/i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): New.
70         * config/i386/i386.md: Remove # register preferences.
71
72 2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>
73
74         PR bootstrap/26992
75         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
76         chrec_is_positive, set_nb_iterations_in_loop): Use a variable for
77         the type of nb_iter.
78         (instantiate_parameters_1): Convert the operands before calling
79         chrec_fold_minus, chrec_fold_plus, or chrec_fold_multiply.
80         * tree-data-ref.c (can_use_analyze_subscript_affine_affine): Same.
81
82 2006-04-02  Roger Sayle  <roger@eyesopen.com>
83
84         * builtins.c (dummy_object): Use build_int_cst instead of convert.
85         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use fold_convert
86         instead of convert.
87         * dojump.c (do_jump): Likewise.
88         * expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE, ARGS_SIZE_TREE): Likewise.
89         * gimplify.c (gimple_boolify, gimplify_init_constructor,
90         gimplify_boolean_expr): Likewise.
91         * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
92         * varasm.c (array_size_for_constructor): Likewise.
93         * tree-object-size.c (compute_object_offset): Likewise.
94
95 2006-04-02  Roger Sayle  <roger@eyesopen.com>
96
97         PR middle-end/26977
98         * expr.c (emit_group_store): Check whether simplify_gen_subreg returns
99         NULL_RTX, indicating it couldn't create a valid paradoxical subreg.
100
101 2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>
102
103         PR tree-optimization/26939
104         * tree-chrec.c (chrec_merge): Use eq_evolutions_p.
105
106 2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>
107
108         * tree-scalar-evolution.c (add_to_evolution_1): Pass an extra argument
109         at_stmt.  Convert the type of operands before calling 
110         build_polynomial_chrec.
111         (add_to_evolution): Pass an extra argument at_stmt.  Adjust the call to
112         add_to_evolution_1.
113         (follow_ssa_edge_in_rhs): Adjust call to add_to_evolution.
114         (instantiate_parameters_1): Convert the type of operands before calling 
115         build_polynomial_chrec.
116         * tree-chrec.c (chrec_fold_poly_cst, chrec_fold_plus_poly_poly,
117         chrec_fold_multiply_poly_poly, chrec_replace_initial_condition,
118         reset_evolution_in_loop): Insert asserts to check the types of the
119         operands.
120         (chrec_type): Moved...
121         (eq_evolutions_p): Use operand_equal_p.
122         * tree-chrec.h (build_polynomial_chrec): Insert an assert to check
123         the types of the operands.
124         (chrec_type): ...here.
125         * tree-data-ref.c (create_data_ref): Convert the operands before
126         calling chrec_replace_initial_condition.
127         (same_access_functions, analyze_subscript_affine_affine,
128         analyze_miv_subscript, all_chrecs_equal_p): Use eq_evolutions_p.
129         (compute_subscript_distance, analyze_ziv_subscript,
130         analyze_siv_subscript_cst_affine, compute_overlap_steps_for_affine_1_2,
131         analyze_miv_subscript): Convert the operands before calling
132         chrec_fold_minus or chrec_fold_plus.
133
134 2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>
135
136         * tree-data-ref.c (compute_all_dependences): Use a pointer to
137         the dependence_relations vector.
138         (compute_data_dependences_for_loop): Adjust call to
139         compute_all_dependences.
140
141 2006-04-01  Roger Sayle  <roger@eyesopen.com>
142             Richard Henderson  <rth@redhat.com>
143
144         * gimplify.c (gimplify_scan_omp_clauses) <OMP_CLAUSE_IF>: Call
145         gimple_boolify on the condition before calling gimplify_expr.
146
147 2006-03-31  Bob Wilson  <bob.wilson@acm.org>
148
149         * config/xtensa/lib1funcs.asm: Rename abi_entry/abi_return macros
150         to leaf_entry/leaf_return.  Change leaf_entry to add 16 bytes to
151         the frame size.  Update to use the new macros.
152         * config/xtensa/ieee754-sf.S: Use new leaf_entry/leaf_return macros.
153         * config/xtensa/ieee754-df.S: Likewise.
154
155 2006-03-31  Richard Henderson  <rth@redhat.com>
156
157         * tree-cfg.c (make_ctrl_stmt_edges, make_exit_edges): Merge into...
158         (make_edges): ... here.  Control fallthru creation with a local
159         variable.  Do not play with fake edges.
160         (make_omp_sections_edges): Don't set EDGE_ABNORMAL.
161         (make_goto_expr_edges): Don't play with fake edges.  Make for_call
162         a boolean.
163
164 2006-04-01  Joseph S. Myers  <joseph@codesourcery.com>
165
166         * dwarf2.h (DW64_CIE_ID): Define.
167         * dwarf2out.c (DWARF_CIE_ID): Define.
168         (output_call_frame_info): Output 0xffffffff before standard 8-byte
169         length header.  Use DWARF_CIE_ID.
170         (value_format): Use DW_FORM_data4 or DW_FORM_data8 for
171         dw_val_class_loc_list depending on DWARF_OFFSET_SIZE.
172
173 2006-03-31  Kaz Kojima  <kkojima@gcc.gnu.org>
174
175         * config/sh/linux-atomic.asm: New file.
176         * config/sh/t-linux (LIB2FUNCS_EXTRA): Add linux-atomic.asm.
177
178 2006-03-31  DJ Delorie  <dj@redhat.com>
179
180         * config/m32c/cond.md: Set condition flags properly throughout.
181         * config/m32c/minmax.md: Likewise.
182         * config/m32c/prologue.md: Likewise.
183         * config/m32c/bitops.md: Likewise.
184         * config/m32c/muldiv.md: Likewise.
185         * config/m32c/mov.md: Likewise.
186         * config/m32c/addsub.md: Likewise.
187         * config/m32c/m32c.md: Likewise.
188         * config/m32c/jump.md: Likewise.
189         * config/m32c/shift.md: Likewise.
190
191         * config/m32c/cond.md (cmp<mode>): Call m32c_output_compare to
192         conditionally output the pattern for this.
193         * config/m32c/m32c.c (flags_needed_for_conditional): New.
194         (m32c_compare_redundant): New.
195         (m32c_output_compare): New.
196         * config/m32c/m32c-protos.h (m32c_output_compare): New.
197
198         * config/m32c/m32c.c (m32c_prepare_shift): Fix logic to clobber
199         dest, not src.  Allow other 4-byte modes.
200
201 2006-03-30  Denis Chertykov  <denisc@overta.ru>
202
203         * doc/md.texi: Refer to avr/constraints.md instead of
204         avr/avr.h.
205
206 2006-03-30  Roger Sayle  <roger@eyesopen.com>
207
208         * expr.c (emit_group_store): Make BYTEPOS a HOST_WIDE_INT to
209         signed vs. unsigned comparison failures on some hosts.
210
211 2006-03-31  Alan Modra  <amodra@bigpond.net.au>
212
213         PR target/26459
214         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Limit 2003-12-08
215         change to FLOAT_REGS.
216
217         * config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee.
218         (rs6000_override_options): Use it.
219         (rs6000_handle_option): Set it.  Set rs6000_explicit_options.abi
220         only for -mabi=spe/no-spe and -mabi=altivec.
221
222 2006-03-30  Geoffrey Keating  <geoffk@apple.com>
223
224         * config/darwin.h (LINK_COMMAND_SPEC): Don't try to protect %S with
225         !Zdynamiclib.
226
227 2006-03-30  Carlos O'Donell  <carlos@codesourcery.com>
228
229         * Makefile.in: Rename docdir to gcc_docdir.
230
231 2006-03-30  Roger Sayle  <roger@eyesopen.com>
232
233         PR target/17959
234         * expr.c (emit_group_store):  Optimize group stores into a pseudo
235         register by using a paradoxical subreg to initialize the destination
236         if the first or last member of the group specifies a "low part".
237
238 2006-03-30  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
239
240         PR target/26734
241         * rtl.def (DEPS_LIST): Change type of the second operand to 'int'.
242         * target.h (struct gcc_target.speculate_insn): Change type of the
243         second parameter to 'int'.
244         * lists.c (alloc_DEPS_LIST): Change signature.  Update reference to
245         the second operand of the DEPS_LIST.
246         (copy_DEPS_LIST_list): Update reference to the second operand of the
247         DEPS_LIST.
248         * rtl.h (alloc_DEPS_LIST): Update signature.
249         * sched-int.h (ds_t): Change typedef to 'int'.
250         (DEP_STATUS, BITS_PER_DEP_STATUS): Update.
251
252 2006-03-30  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
253
254         * haifa-sched.c (try_ready): Change condition to restore
255         non-speculative pattern of the instruction.
256         (process_insn_depend_be_in_spec): Code to keep probability of the
257         speculative dependence non-decreasing.
258
259 2006-03-30  Jie Zhang  <jie.zhang@analog.com>
260
261         * config/bfin/bfin.c (single_move_for_strmov): Renamed to...
262         (single_move_for_movmem): ... this. Also change all uses.
263         (bfin_expand_strmov): Renamed to...
264         (bfin_expand_movmem): ... this. Also change all uses.
265         * config/bfin/bfin.md (movstrsi): Renamed to...
266         (movstrsi): ...this.
267
268 2006-03-30  Paolo Bonzini  <bonzini@gnu.org>
269
270         PR tree-optimization/26830
271
272         * tree-ssa-copy.c (copy_prop_visit_assignment): Do not check loop depth.
273         (copy_prop_visit_stmt): Remove write-only variable ann.
274         (init_copy_prop): Check variable loop depth here.  Do not simulate
275         memory-tag and virtual operand PHIs except for store copy prop.
276
277 2006-03-30  Richard Guenther  <rguenther@suse.de>
278
279         * config/i386/i386.c: Remove builtins for SSE2 ABI intrinsic
280         variants with double arguments.
281
282 2006-03-29  David Edelsohn  <edelsohn@gnu.org>
283
284         * genpreds.c (write_tm_constrs_h): Delete variable p.
285         * genconditions.c (write_header): Add tm-constrs.h to included
286         headers.
287         * genpeep.c (main): Add toplev.h to included headers.
288         * Makefile.in (build/gencondmd.o): Add tm-constrs.h dependency.
289         (build/genpeep.o): Add toplev.h dependency.
290         * config/rs6000/constraints.md: Add "W" constraint.
291
292 2006-03-29  Roger Sayle  <roger@eyesopen.com>
293
294         * stor-layout.c (mode_for_size_tree): Remove restiction on type
295         sizes by correctly testing whether the size fits a host integer.
296         (initialize_sizetypes): Use set_min_and_max_values_for_integral_type
297         to correctly set TYPE_MIN_VALUE and TYPE_MAX_VALUE to the full
298         SImode range for the default sizetype and bitsizetype.
299
300 2006-03-29  Roger Sayle  <roger@eyesopen.com>
301
302         * convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW
303         and TREE_CONSTANT_OVERFLOW bits of the argument.  Return
304         quickly if the argument is already of the correct type.
305         Call fold_build1 instead of build1.  Tidy up blank lines.
306
307 2006-03-29  David Edelsohn  <edelsohn@gnu.org>
308
309         * genemit.c (main): Add tm-constrs.h to included headers.
310         * genoutput.c (output_prologue): Add tm-constrs.h to included headers.
311         * genpeep.c (main): Add tm-constrs.h to included headers.
312         * genpreds.c (write_satisfies_constraint_fns): Rename to ...
313         (write_tm_constrs_h): this and write complete file.
314         (write_tm_preds_h): Do not emit satisfies_constraint fns.
315         (write_insn_preds_c): Add tm-constrs.h to included headers.
316         (gen_constrs): New variable.
317         (parse_option): Parse "-c".
318         (main): Invoke write_tm_constrs_h.
319         * genrecog.c (write_header): Add tm-constrs.h to included headers.
320         * Makefile.in (STAGECOPYSTUFF): Add tm-constrs.h.
321         (object_out_file): Add tm-constrs.h dependency.
322         (insn-emit.o): Same.
323         (insn-output.o): Same.
324         (insn-peep.o): Same.
325         (insn-preds.o): Same.
326         (insn-recog.o): Same.
327         (tm-constsr.h): New target.
328         (s-constrs-h): New target.
329
330         * config/rs6000/constraints.md: New file.
331         * config/rs6000/rs6000.c: Include tm-constrs.h.
332         (num_insn_constant_wide): Convert to satisfies_constraint.
333         (rs6000_rtx_costs): Convert to satisfies_constraint.
334         * config/rs6000/rs6000.h (REG_CLASS_FROM_LETTER): Delete.
335         (CONST_OK_FOR_LETTER_P): Delete.
336         (CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
337         (EXTRA_CONSTRAINT): Delete.
338         (EXTRA_MEMORY_CONSTRAINT): Delete.
339         (EXTRA_ADDRESS_CONSTRAINT): Delete.
340         * config/rs6000/predicates.md: Convert to satisfies_constraint.
341         * config/rs6000/rs6000.md: Include constraints.md.  Convert to
342         satisfies_constraint.
343
344         * config/i386/i386.c: Include tm-constrs.h.
345
346 2006-03-29  Sebastian Pop  <pop@cri.ensmp.fr>
347
348         * tree-loop-linear.c (compute_data_dependences_for_loop): Adjust calls.
349         * tree-data-ref.c (find_data_references_in_loop,
350         compute_data_dependences_for_loop): Use pointers to VEC.
351         (analyze_all_data_dependences): Adjust calls.
352         * tree-data-ref.h (find_data_references_in_loop,
353         compute_data_dependences_for_loop): Adjust declarations.
354         * tree-vect-analyze.c (vect_analyze_data_refs): Adjust call to
355         compute_data_dependences_for_loop.
356
357 2006-03-29  Paul Brook  <paul@codesourcery.com>
358
359         * config/arm/vfp.md (movsf_vfp): Disparage w<->r alternatives.
360         (movdf_vfp): Ditto.
361
362 2006-03-29  Sebastian Pop  <pop@cri.ensmp.fr>
363
364         PR tree-optimization/26859
365         * tree-ssa-loop-niter.c (infer_loop_bounds_from_undefined): Avoid
366         division by zero.
367         (convert_step): Remove TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW flags
368         for the step after fold_convert.
369
370 2006-03-29  Paul Brook  <paul@codesourcery.com>
371
372         * reload1.c (choose_reload_regs): Check for all RTX_AUTOINC operators.
373         (inc_for_reload): Handle PRE_MODIFY and POST_MODIFY addresses.
374
375 2006-03-29  Paul Brook  <paul@codesourcery.com>
376
377         PR middle-end/23623
378         * targhooks.c (default_narrow_bitfield): New fuction.
379         * targhooks.h (default_narrow_bitfield): add prototype.
380         * target.h (gcc_target): Add narrow_volatile_bitfield.
381         * target-def.h (TARGET_NARROW_VOLATILE_BITFIELD): Define.
382         * stor-layout.c (get_best_mode): Use targetm.narrow_volatile_bitfield.
383         * doc/tm.texi: Document TARGET_NARROW_VOLATILE_BITFIELDS.
384         * config/arm/arm.c (TARGET_NARROW_VOLATILE_BITFIELD): Define.
385
386 2006-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
387
388         * config.gcc (s390-*-linux-*, s390x-*-linux*): Add t-dfprules to 
389         tmake_file.
390         * config/s390/s390.c (S390_scalar_mode_supported_p): New function.
391         (NR_C_MODES): Add TDmode, DDmode and SDmode.
392         (s390_output_pool_entry, ): Accept MODE_DECIMAL_FLOAT.
393         (s390_hard_regno_mode_ok): Disallow TDmode in integer regs.
394         (s390_function_arg_float): Allow SDmode and DDmode values to be
395         passed in floating point registers.
396         (s390_function_arg_integer, s390_function_value): Replace MODE_FLOAT 
397         check with SCALAR_FLOAT_MODE_P.
398         (TARGET_SCALAR_MODE_SUPPORTED_P): Define target macro.
399
400 2006-03-28  Zdenek Dvorak <dvorakz@suse.cz>
401
402         PR tree-optimization/25985
403         * tree-ssa-loop-niter.c (number_of_iterations_le,
404         number_of_iterations_ne): Make comments more precise.
405         (number_of_iterations_cond): Add only_exit argument.  Use the
406         fact that signed variables do not overflow only when only_exit
407         is true.
408         (loop_only_exit_p): New.
409         (number_of_iterations_exit): Pass result of loop_only_exit_p to
410         number_of_iterations_cond.
411
412 2006-03-28  Zdenek Dvorak <dvorakz@suse.cz>
413
414         PR tree-optimization/26643
415         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not handle
416         bit_field_refs.
417
418 2006-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
419
420         * config/sh/sh.md (udivsi3_i4_int): Clobber MACH_REG and MACL_REG.
421         (divsi3_i4_int): Likewise.
422
423 2006-03-28  Roger Sayle   <roger@eyesopen.com>
424
425         * expr.c (emit_group_store): Only create a new pseudo reg if the
426         quantity it needs to hold isn't already a suitable pseudo.
427
428 2006-03-28  Jeff Law  <law@redhat.com>
429
430         * timevar.def (TV_TREE_PHI_CPROP): New timevar.
431         * tree-ssa-dom.c (pass_phi_only_cprop): Use it.
432
433 2006-03-28  Roger Sayle  <roger@eyesopen.com>
434
435         * fold-const.c (fold_binary) <BIT_XOR_EXPR>: Fold (X & Y) ^ Y as
436         the equivalent ~X & Y, and the symmetry related transformations.
437         (fold_binary) <BIT_AND_EXPR>: Similarly, fold (X ^ Y) & Y as 
438         ~X & Y, and symmetry related transforms.
439
440 2006-03-28  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
441
442         Revert my 2006-03-27 patches.
443
444 2006-03-28  Roger Sayle  <roger@eyesopen.com>
445
446         * fold-const.c (fold_unary) <NOP_EXPR>: Fold (T1)(~(T2)X) as
447         ~(T1)X, when T1 and T2 are integer types of the same precision
448         and (T2)X isn't an extension.
449
450 2006-03-28  Jeff Law  <law@redhat.com>
451
452         PR tree-optimization/26796
453         * tree-ssa-dom.c (propagate_rhs_into_lhs): Queue blocks which
454         need EH edge cleanups rather than purging them immediately.
455         (eliminate_degenerate_phis): Handle queued EH cleanups.
456
457 2006-03-28  Daniel Berlin  <dberlin@dberlin.org>
458
459         * tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE
460         from parent_var.
461
462 2006-03-27  Roger Sayle  <roger@eyesopen.com>
463
464         PR middle-end/22524
465         * fold-const.c (fold_binary) <MINUS_EXPR>: Call fold_convert to
466         cast BIT_NOT_EXPR operand to the correct type.
467
468 2006-03-27  Sebastian Pop  <pop@cri.ensmp.fr>
469
470         * tree-loop-linear.c: Don't include varray.h.
471         (gather_interchange_stats, try_interchange_loops,
472         linear_transform_loops): Use VEC instead of VARRAY.
473         * lambda-mat.c: Don't include varray.h.
474         * tree-chrec.c: Same.
475         * lambda-trans.c: Same.
476         * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info): Use
477         VEC instead of VARRAY.
478         * tree-vectorizer.h: Idem.
479         * tree-data-ref.c (dump_data_references,
480         dump_data_dependence_relations, dump_dist_dir_vectors, dump_ddrs,
481         initialize_data_dependence_relation, finalize_ddr_dependent,
482         compute_all_dependences, find_data_references_in_loop,
483         compute_data_dependences_for_loop, analyze_all_data_dependences,
484         free_dependence_relation, free_dependence_relations,
485         free_data_refs): Idem.
486         * tree-data-ref.h (data_reference_p, subscript_p): New.
487         (data_dependence_relation, DDR_SUBSCRIPT, DDR_NUM_SUBSCRIPTS): Use
488         VEC instead of VARRAY.
489         (DDR_SUBSCRIPTS_VECTOR_INIT): Removed.
490         (find_data_references_in_loop, compute_data_dependences_for_loop,
491         dump_ddrs, dump_dist_dir_vectors, dump_data_references,
492         dump_data_dependence_relations, free_dependence_relations,
493         free_data_refs): Adjust declaration.
494         (lambda_transform_legal_p): Move declaration here...
495         * tree-vect-analyze.c (vect_analyze_data_ref_dependences,
496         vect_compute_data_refs_alignment, vect_verify_datarefs_alignment,
497         vect_enhance_data_refs_alignment, vect_analyze_data_ref_accesses,
498         vect_analyze_data_refs): Use VEC instead of VARRAY.
499         * lambda.h (lambda_transform_legal_p): ...from here.
500         * lambda-code.c (lambda_transform_legal_p): Use VEC instead of VARRAY.
501         * tree-vect-transform.c (vect_update_inits_of_drs): Idem.
502         * Makefile.in (tree-loop-linear.o, lambda-mat.o, lambda-trans.o,
503         tree-chrec.o): Don't depend on VARRAY_H.
504
505 2006-03-27  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
506
507         * rtl.def (Copyright): Update date.
508         (DEPS_LIST): Change type of the second operand to 'int'.
509         * target.h (Copyright): Update date.
510         (struct gcc_target.speculate_insn): Change type of the second parameter
511         to 'int'.
512         * lists.c (Copyright): Update date.
513         (alloc_DEPS_LIST): Change signature.  Update reference to the second
514         operand of the DEPS_LIST.
515         (copy_DEPS_LIST_list): Update reference to the second operand of the
516         DEPS_LIST.
517         * rtl.h (Copyright): Update date.
518         (alloc_DEPS_LIST): Update signature.
519         * sched-int.h (Copyright): Update date.
520         (ds_t): Change typedef to 'int'.
521         (DEP_STATUS, BITS_PER_DEP_STATUS): Update.
522
523 2006-03-27  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
524
525         * haifa-sched.c (Copyright): Update date.
526         (try_ready): Change condition to restore non-speculative pattern
527         of the instruction.
528         (process_insn_depend_be_in_spec): Code to keep probability of the
529         speculative dependence non-decreasing.
530
531 2006-03-27  Bernd Schmidt  <bernd.schmidt@analog.com>
532
533         * regrename.c (replace_oldest_value_addr): Initialize a variable to
534         shut up the compiler.
535
536 2006-03-27  J"orn Rennecke <joern.rennecke@st.com>
537
538         * config/sh/t-sh ($(T)libic_invalidate_array_4-100.a): Fix rule
539         to use lib prefix for target.
540         ($(T)libic_invalidate_array_4-200.a): Likewise.
541         ($(T)libic_invalidate_array_4a.a): Likewise.
542
543 2006-03-27  Andrew Stubbs <andrew.stubbs@st.com>
544             J"orn Rennecke <joern.rennecke@st.com>
545
546         * superh.opt: New file.
547         * sh.c (boardtype, osruntime): Remove.
548         * superh.h (SUBTARGET_OPTIONS): Remove.
549         * config.gcc (sh*-superh-elf): Add sh/superh.opt to extra_options.
550
551         * config.gcc (sh*-*-*): Don't use c-c ranges for tr.  Quote sed
552         arguments with ^ and/or [].
553
554         * config.gcc (sh-*-*): Add quoting to account for quirk of
555         Solaris /bin/sh.
556         Replace == with = in enable_incomplete_targets test.
557
558         * config/sh/superh.h (SUBTARGET_LINK_SPEC): Replace LITTLE_ENDIAN_BIT
559         with MASK_LITTLE_ENDIAN.
560
561         * config.gcc (sh*-superh-elf): Add sh/superh.h to tm_file.
562         * config/sh/sh.opt: Added to some comments.
563         * config/sh/superh.h: Removed some chaff.
564
565         * config/sh/sh.opt: Add m4-[1234]00* options.
566         * config/sh/sh.c (sh_handle_option): Likewise.
567         * config/sh/t-sh (IC_EXTRA_PARTS, EXTRA_MULTILIB_PARTS): Define.
568         (ic_invalidate_array_4-100.o): New rule.
569         ($(T)libic_invalidate_array_4-100.a): Likewise.
570         (ic_invalidate_array_4-200.o): Likewise.
571         ($(T)libic_invalidate_array_4-200.a): Likewise.
572         (ic_invalidate_array_4a.o): Likewise.
573         ($(T)libic_invalidate_array_4a.a): Likewise.
574         * config/sh/t-elf (EXTRA_MULTILIB_PARTS): Add IC_EXTRA_PARTS.
575         * config/sh/embed-elf.h (LIBGCC_SPEC): Add clauses for m4-100*,
576         m4-200*, and m4a*.
577         * config/sh/crt1.asm: Merged in profiling code.
578         * config/sh/superh.h (STARTFILE_SPEC): Override.
579         * config/sh/t-superh: Override EXTRA_MULTILIB_PARTS.
580         Add rules for $(T)crt1-mmu.o, $(T)gcrt1-mmu.o and $(T)gcrt1.o.
581         * config.gcc (sh*-superh-elf): Add t-superh to tmake_file.
582
583         * t-sh (MULTILIB_MATCHES): Add sh4-[1245]00* variants.
584         * config/sh/t-superh: Removed now-redundant MULTILIB_OPTIONS /
585         MULTILIB_DIRNAMES / MULTILIB_MATCHES settings.
586
587         * sh.opt (mpretend-cmove): New option.
588         * sh.h (OPERRIDE_OPTIONS): Switch it off if not TARGET_SH1.
589         * sh.md (movsicc_t_false, movsicc_t_tru): New patterns.
590         (movsicc): Add TARGET_PRETEND_CMOVE code.
591
592 2006-03-27  Andreas Krebbel  <krebbel1@de.ibm.com>
593
594         * config/s390/s390-protos.h (s390_hard_regno_mode_ok, 
595         s390_class_max_nregs): New function prototypes.
596         * config/s390/s390.c (REGNO_PAIR_OK): New macro.
597         (s390_hard_regno_mode_ok, s390_class_max_nregs): New functions.
598         * config/s390/s390.h (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK,
599         CLASS_MAX_NREGS): Macro bodies replaced by function calls.
600
601 2006-03-26  Geoffrey Keating  <geoffk@apple.com>
602
603         * dwarf2out.c (add_location_or_const_value_attribute): Call
604         tree_add_const_value_attribute if nothing else works.
605         (reference_to_unused): New.
606         (rtl_for_decl_init): Use reference_to_unused to decide whether
607         to output an initializer.
608
609 2006-03-27  Alan Modra  <amodra@bigpond.net.au>
610
611         PR target/26459
612         * config/rs6000/rs6000.md (DF reg move peephole): Prevent
613         peephole removing spe frob_di_df_2.
614
615 2006-03-26  Sebastian Pop  <pop@cri.ensmp.fr>
616
617         * tree-data-ref.c: Rename DDR_SIZE_VECT to DDR_NB_LOOPS.
618         (subscript_dependence_tester_1): Declared.
619         (print_dir_vectors, print_dist_vectors): New.
620         (debug_data_dependence_relation): New.
621         (dump_data_dependence_relation): Print more details.
622         (initialize_data_dependence_relation): Initialize DDR_LOOP_NEST.
623         (analyze_subscript_affine_affine): Don't ICE when gcd_alpha_beta is 0.
624         (save_dist_v, save_dir_v, add_outer_distances,
625         build_classic_dist_vector_1): New.
626         (build_classic_dist_vector): Rewrite to work on DDR_LOOP_NEST.
627         Don't test for lambda_vector_lexico_pos.
628         (same_access_functions, add_multivariate_self_dist,
629         add_other_self_distances, dir_from_dist): New.
630         (build_classic_dir_vector): Replace implementation almost identical to 
631         build_classic_dist_vector with a walk of DDR_DIST_VECTS with a call to
632         dir_from_dist.
633         (subscript_dependence_tester_1): New.
634         (subscript_dependence_tester): Handle the lexicographically negative
635         distance vectors by recomputing the dependence relation.
636         (compute_affine_dependence): Remove parameter loop_nest_depth.
637         (compute_self_dependence): Don't call compute_subscript_distance.
638         (compute_all_dependences): Remove parameters nb_loops, loop_nest_depth.
639         Add a parameter for the loop_nest.
640         (find_loop_nest_1, find_loop_nest): New.
641         (compute_data_dependences_for_loop): Compute the loop nest, and give
642         up if the nest is not well formed.
643         * tree-data-ref.h (loop_p): New.
644         (struct data_dependence_relation): Replace size_vect field with 
645         loop_nest, a vec of loops.
646         (DDR_SIZE_VECT): Renamed DDR_NB_LOOPS.
647         (DDR_LOOP_NEST): New.
648         (print_dir_vectors, print_dist_vectors,
649         debug_data_dependence_relation): Declared.
650         (index_in_loop_nest): New.
651         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Use
652         DDR_LOOP_NEST and index_in_loop_nest to determine the dependence
653         distance.
654
655 2006-03-25  Adam Nemet  <anemet@caviumnetworks.com>
656
657         * simplify-rtx.c (simplify_relational_operation): Call
658         simplify_relational_operation_1 even if mode is VOIDmode.
659
660 2006-03-25  Daniel Berlin  <dberlin@dberlin.org>
661
662         PR tree-optimization/26804
663         * tree.h (DECL_CALL_CLOBBERED): New macro.
664         (tree_decl_common): Add call_clobbered_flag.
665         * tree-flow-inline.h (is_call_clobbered): Use DECL_CALL_CLOBBERED.
666         (mark_call_clobbered): Set DECL_CALL_CLOBBERED.
667         (clear_call_clobbered): Clear DECL_CALL_CLOBBERED.
668         (mark_non_addressable): Ditto.
669         * tree-ssa.c (verify_call_clobbered): New function.
670         (verify_alias_info): Use it.
671         * tree-pass.h (pass_reset_cc_flags): New prototype.
672         * tree-ssa-alias.c (pass_reset_cc_flags): New structure.
673         (reset_cc_flags): New function.
674         * passes.c (init_optimization_passes): Call reset_cc_flags after
675         initializing referenced_vars.
676
677 2006-03-25  Uros Bizjak  <uros@kss-loka.si>
678             Roger Sayle  <roger@eyesopen.com>
679
680         PR middle-end/26717
681         * fold-const.c (fold_binary) [RDIV_EXPR]: Do not optimize A / A
682         to 1.0 for non-real operands. Implement A / A optimization for
683         complex operands.
684
685 2006-03-25  H.J. Lu  <hongjiu.lu@intel.com>
686
687         * config/i386/i386.c (size_cost): Correct the comment for
688         cost of storing fp registers.
689         (i386_cost): Likewise.
690         (i486_cost): Likewise.
691         (pentium_cost): Likewise.
692         (pentiumpro_cost): Likewise.
693         (k6_cost): Likewise.
694         (athlon_cost): Likewise.
695         (k8_cost): Likewise.
696         (pentium4_cost): Likewise.
697         (nocona_cost): Likewise.
698         (generic64_cost): Likewise.
699         (generic32_cost): Likewise.
700
701 2006-03-24  Denis Chertykov  <denisc@overta.ru>
702
703         * config/avr/avr-protos.h (extra_constraint): Delete.
704         (extra_constraint_Q): New declaration.
705         * config/avr/constraints.md: New file.
706         * config/avr/avr.md: Include it.
707         (REG_X, REG_Y, REG_Z, REG_W): New constants.
708         (TMP_REGNO, ZERO_REGNO): Likewise.
709         (UNSPEC_STRLEN, UNSPEC_INDEX_JMP): Likewise.
710         * config/avr/avr.c (avr_reg_class_from_letter): Delete.
711         (extra_constraint): Delete.
712         (extra_constraint_Q): Test for memory constraint 'Q'.
713         * config/avr/avr.h (REG_X,REG_Y,REG_Z,REG_W): Delete.
714         (REG_CLASS_FROM_LETTER): Delete.
715         (CONST_OK_FOR_LETTER_P): Delete.
716         (CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
717         (EXTRA_CONSTRAINT): Delete.
718         (TMP_REGNO): Delete.
719         (ZERO_REGNO): Delete.
720
721 2006-03-24  Jeff Law  <law@redhat.com>
722
723         * tree-ssa-dom.c (propagate_rhs_into_lhs): Don't call update_stmt
724         directly.  Call mark_new_vars_to_rename slightly earlier.
725
726 2006-03-24  Geoffrey Keating  <geoffk@apple.com>
727
728         * dwarf2out.c (is_c_family): Understand new DWARF3 language types.
729         (is_cxx): Likewise.
730         (gen_compile_unit_die): Use new language types for Objective-C and
731         Objective-C++.
732         (dwarf2out_decl): Use is_cxx rather than testing explicitly against
733         DW_LANG_C_plus_plus.
734
735         PR 26793
736         * config/t-darwin (crt3.o): Work around bug 26840.
737         * config/darwin-crt3.c: Rewrite.
738         * config/darwin.h (STARTFILE_SPEC): Don't use -l for crt3.o.
739
740 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
741
742         * doc/invoke.texi: Document -femit-class-debug-always
743         * common.opt: Add -femit-class-debug-always.
744
745 2006-03-24  Andreas Krebbel  <krebbel1@de.ibm.com>
746
747         * config/s390/s390.c (s390_decompose_address): Allow SImode for
748         index and base register.
749         (s390_expand_plug_operand, legitimate_address_p, preferred_la_operand_p,
750         print_operand_address, print_operand): Replaced REG_OK_FOR_BASE_STRICT_P
751         with REGNO_OK_FOR_BASE_P and REG_OK_FOR_INDEX_STRICT_P with
752         REGNO_OK_FOR_INDEX_P.
753         * config/s390/s390.h (REGNO_OK_FOR_INDEX_P): Replaced check with
754         ADDR_REGNO_P.
755         (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P,
756         REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P, REG_OK_FOR_INDEX_P,
757         REG_OK_FOR_BASE_P): Definitions removed.
758
759 2006-03-24  Jakub Jelinek  <jakub@redhat.com>
760
761         PR middle-end/26611
762         * gimplify.c (gimplify_bind_expr): Only call omp_add_variable on
763         non-global variables that don't have DECL_SEEN_IN_BIND_EXPR_P bit
764         set yet or weren't marked as local yet.
765
766 2006-03-24  Bernd Schmidt  <bernd.schmidt@analog.com>
767
768         * regrename.c (scan_rtx_address): Initialize a variable to shut up
769         the compiler.
770
771 2006-03-24  Eric Botcazou  <ebotcazou@adacore.com>
772
773         * config/rs6000/rs6000-protos.h (rs6000_offsettable_memref_p): Declare.
774         (rs6000_legitimate_small_data_p): Delete.
775         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New predicate.
776         (rs6000_legitimate_small_data_p): Rename to legitimate_small_data_p
777         and make static.  Add forward declaration.  Update uses.
778         (rs6000_split_multireg_move): Use rs6000_offsettable_memref_p instead
779         of offsettable_memref_p.
780         * config/rs6000/rs6000.md (movdf_hardfloat32): Revert 2005-08-23 fix.
781         Use rs6000_offsettable_memref_p instead of a less accurate predicate.
782
783 2006-03-24  Jeff Law  <law@redhat.com>
784
785         * tree-ssa-dom.c (propagate_rhs_into_lhs): Temporarily work
786         around bug in immediate-use iterator.
787
788 2006-03-24  Alan Modra  <amodra@bigpond.net.au>
789
790         PR target/26607
791         * config/rs6000/darwin-ldouble.c: Don't compile when __NO_FPRS__
792         or __LITTLE_ENDIAN__.
793
794 2006-03-23  J"orn Rennecke <joern.rennecke@st.com>
795
796         * config/sh/divtab-sh4.c, config/sh/divcost-analysis: New files.
797         * config/sh/lib1funcs.asm (div_table): Add !__SH5__ variant.
798         * config/sh/t-sh (LIB1ASMFUNCS): Add _div_table.
799         * config/sh/sh.opt (mdiv=): Amend description.
800         * config/sh/sh.h (TARGET_DIVIDE_CALL_DIV1): New macro.
801         (TARGET_DIVIDE_CALL_FP, TARGET_DIVIDE_CALL_TABLE): Likewise.
802         (sh_divide_strategy_e): Add new members SH_DIV_CALL_DIV1,
803         SH_DIV_CALL_FP, SH_DIV_CALL_TABLE and SH_DIV_INTRINSIC.
804         (OVERRIDE_OPTIONS): Also process sh_div_str for TARGET_SH1.
805         Calculate sh_divsi3_libfunc using TARGET_DIVIDE_* macros.
806         * config/sh/sh.md (udivsi3_i4_int, divsi3_i4_int): New patterns.
807         (udivsi3, divsi3): Use them.  Check TARGET_DIVIDE_CALL_TABLE /
808         TARGET_DIVIDE_CALL_FP.
809
810 2006-03-23  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
811
812         * haifa-sched.c (choose_ready): Fix type of the local variable.
813         Move local variables.  Add comment.
814         (check_reg_live): Change signature.  Make callable from debugger.
815         * sched-int.h (check_reg_live): Update signature.
816         * sched-ebb.c (check_reg_live): Update parameters.
817         * sched-rgn.c (check_reg_live): Ditto.
818         (region_head_or_leaf_p): Check pointer before dereferencing.
819         * config/ia64/ia64.c (ia64_set_sched_flags): Disable data speculation
820         before reload on optimization levels below 1.
821
822 2006-03-23  Richard Henderson  <rth@redhat.com>
823
824         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject
825         tls symbols.
826
827         PR target/26347
828         * config/alpha/predicates.md (local_symbolic_operand): Reject
829         weak symbols.
830
831 2006-03-23  Andrew Pinski  <pinskia@physics.uc.edu>
832
833         PR tree-opt/26795
834         * tree-ssa-pre.c (create_value_expr_from): Don't reject
835         expressions which have overflowed constants.
836
837 2006-03-23  Zdenek Dvorak <dvorakz@suse.cz>
838
839         * cse.c (cse_end_of_basic_block): Do not check for LOOP_END note.
840
841 2006-03-23  Zdenek Dvorak <dvorakz@suse.cz>
842
843         * cfgloopmanip.c (create_loop_notes): Removed.
844         * final.c (final_scan_insn): Do not handle loop notes.
845         * jump.c (squeeze_notes): Ditto.
846         * cfglayout.c (skip_insns_after_block,
847         duplicate_insn_chain): Ditto.
848         * cfgcleanup.c (rest_of_handle_jump2): Do not call
849         create_loop_notes.
850         * cfgloop.h (create_loop_notes): Declaration removed.
851
852 2006-03-23  Richard Sandiford  <richard@codesourcery.com>
853
854         * varasm.c (output_constant_pool): Restore fnname and fndecl
855         arguments.
856         (assemble_start_function): Adjust call accordingly.
857         (assemble_end_function): Likewise.
858
859 2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
860
861         PR mudflap/26790
862         * tree-mudflap.c (mudflap_finish_file): Skip erroneous objects.
863
864         PR mudflap/26789
865         * tree-mudflap.c (mf_xform_derefs_1): Return early on error_mark_node.
866
867 2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
868
869         PR driver/22600
870         * system.h (ICE_EXIT_CODE): New macro.
871         * diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE.
872         (diagnostic_action_after_output): Likewise.
873         * gcc.c (fatal_ice): New function.
874         (execute): Use it instead of fatal.
875         (fancy_abort): Likewise.
876         * doc/invoke.texi (-pass-exit-codes): Document return code for ICEs.
877
878 2006-03-22  Jeff Law  <law@redhat.com>
879
880         * loop-unroll.c (analyze_iv_to_split_insn): Handle
881         iv_analyze_result returning false.
882
883 2006-03-22  Jie Zhang  <jie.zhang@analog.com>
884
885         * config/bfin/bfin.h (ASM_FORMAT_PRIVATE_NAME): Remove.
886
887 2006-03-22  Richard Henderson  <rth@redhat.com>
888
889         PR middle-end/26084
890         * except.c (duplicate_eh_regions_0): New.
891         (duplicate_eh_region_1): Duplicate the children of the node as
892         well as the node itself.  Link them up properly.
893         (duplicate_eh_region_2): Merge into ...
894         (duplicate_eh_regions): ... here.  Take copy_region argument, and
895         copy only a sub-tree if asked.  Simplify copying and fixup.
896         (eh_region_outer_p): New.
897         * except.h (duplicate_eh_regions): Update decl.
898         (eh_region_outer_p): Declare.
899         * omp-low.c (lower_omp_single): Fix eh region placement wrt OMP_RETURN.
900         (lower_omp_master): Likewise.
901         (lower_omp_ordered): Likewise.
902         * tree-cfg.c (struct move_stmt_d): Add new_label_map.
903         (move_stmt_r): Use it to remap labels.  Handle recursion vs
904         remap_decls_p properly.
905         (move_block_to_fn): Pass in new_label_map.  Remap RESX_EXPR.
906         (find_outermost_region_in_block): New.
907         (new_label_mapper): New.
908         (move_sese_region_to_fn): Copy eh information to the new function
909         properly.
910         * tree-inline.c (copy_cfg_body): Update for new duplicate_eh_regions
911         argument.
912         * tree-pretty-print.c (dump_generic_node): Dump RESX_EXPR region
913         number.
914
915 2006-03-22  Richard Sandiford  <richard@codesourcery.com>
916
917         * doc/md.texi (-mshared): Mention that -mshared code can be linked
918         into shared libraries.
919
920 2006-03-22  Richard Sandiford  <richard@codesourcery.com>
921
922         * doc/md.texi: Refer to i386/constraints.md instead of
923         i386/predicates.md.
924         * config/i386/constraints.md: New file, extracted from...
925         * config/i386/predicates.md: ...here.
926         * config/i386/i386.md: Include constraints.md.
927
928 2006-03-21  Jason Merrill  <jason@redhat.com>
929
930         * builtins.c (expand_builtin_fork_or_exec): Fix pasto.
931
932         PR middle-end/20297
933         * expr.c (init_block_move_fn): Force default visibility.
934         (init_block_clear_fn): Likewise.
935         * builtins.c (expand_builtin_fork_or_exec): Likewise.
936         * targhooks.c (default_external_stack_protect_fail): Likewise.
937
938 2006-03-21  Richard Sandiford  <richard@codesourcery.com>
939
940         * config/mips/predicates.md (const_call_insn_operand): Allow direct
941         calls to locally-defined functions if TARGET_ABSOLUTE_ABICALLS.
942         * config/mips/mips.md (jal_macro): Test TARGET_ABSOLUTE_ABICALLS.
943         Use TARGET_OLDABI instead of !TARGET_NEWABI.
944         (loadgp): Use mips_current_loadgp_style.
945         (loadgp_noshared): New pattern.
946         (sibcall_internal): Use MIPS_CALL.
947         (sibcall_value_internal): Likewise.
948         (sibcall_value_multiple_internal): Likewise.
949         (call_internal): Likewise.
950         (call_value_internal): Likewise.
951         (call_value_multiple_internal): Likewise.
952         (call_split): Use MIPS_CALL and add an 'S' constraint.
953         (call_value_split): Likewise.
954         (call_value_multiple_split): Likewise.
955         * config/mips/mips.opt (-mabicalls): Tweak docstring.
956         (-mshared): New option.
957         * config/mips/mips-protos.h (mips_loadgp_style): New enum.
958         (mips_current_loadgp_style): Declare.
959         * config/mips/mips.c (mips_classify_symbol): Avoid using
960         SYMBOL_GOT_LOCAL if TARGET_ABSOLUTE_ABICALLS.  Use SYMBOL_GENERAL
961         rather than SYMBOL_GOT_GLOBAL for locally-binding symbols if
962         TARGET_ABSOLUTE_ABICALLS.
963         (override_options): Adjust comments.  Improve the warning that is
964         issued when -mabicalls and -G are used together.
965         (mips_file_start): Remove comment.
966         (mips_current_loadgp_style): New function.
967         (mips_gnu_local_gp): New variable.
968         (mips_emit_loadgp): Use mips_current_loadgp_style.  Handle
969         LOADGP_ABSOLUTE.
970         (mips_output_function_prologue): Use mips_current_laodgp_style.
971         (mips_expand_prologue): Call mips_emit_loadgp before emitting
972         the cprestore instruction.
973         (mips_extra_live_on_entry): Fix reversed test.  Don't make $25
974         live for TARGET_ABSOLUTE_ABICALLS.
975         * config/mips/mips.h (TARGET_ABSOLUTE_ABICALLS): New macro.
976         (ASM_SPEC): Pass down -mshared and -mno-shared.
977         (MIPS_CALL): New macro.
978         * config/mips/netbsd.h (TARGET_OS_CPP_BUILTINS): Remove __ABICALLS__
979         definition.
980         * doc/invoke.texi (-mabicalls): Update documentation.
981         (-mshared): Document.
982
983 2006-03-21  Steve Ellcey  <sje@cup.hp.com>
984
985         * config/ia64/unwind-hpux.c: New file.
986         * config/ia64/t-hpux: Add unwind-hpux.c to libgcc.
987
988 2006-03-21  Steve Ellcey  <sje@cup.hp.com>
989
990         PR libgomp/26384
991         * config/pa/pa64-hpux.h (LIB_SPEC): Fix for -mt and -pthread options.
992
993 2006-03-21  Jeff Law  <law@redhat.com>
994
995         * tree-vrp.c (extract_range_from_unary_expr): Derive ranges for
996         type conversions of a VR_VARYING source to a wider type.
997
998 2006-03-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
999
1000         * config.gcc (i[34567]86-*-solaris2*): Add config/sol2-10.h to
1001         tm_file on Solaris 10 and later.
1002         (sparc64-*-solaris2*): Likewise.
1003         (sparc-*-solaris2*): Likewise.
1004         * config/sol26.h: Rename to config/sol2-6.h.
1005         * config/sol2-10.h: New file.
1006
1007 2006-03-21  Andrew Pinski  <pinskia@physics.uc.edu>
1008
1009         PR tree-opt/26781
1010         * tree-ssa-pre.c (create_component_ref_by_pieces):
1011         Handle STRING_CST.
1012
1013 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
1014
1015         PR c++/26690
1016         * tree.c (get_callee_fndecl): If CALL is error_mark_node,
1017         return it immediately.
1018
1019 2006-03-21  Michael Matz  <matz@suse.de>
1020
1021         * genautomata.c (<struct state>, num_out_arcs, presence_signature):
1022         New members.
1023         (remove_arc, add_arc): Update num_out_arcs member.
1024         (set_out_arc_insns_equiv_num): Returns nothing instead of number
1025         of out arcs.
1026         (cache_presence): New function.
1027         (compare_states_for_equiv): New function.
1028         (state_is_differed): Don't take number of outargs, adjust callers.
1029         Use new invariant for speeding up.
1030         (init_equiv_class): Create initial classes based on sorted
1031         input.
1032         (partition_equiv_class): Don't track out_arcs_num.
1033         (evaluate_equiv_classes): Call cache_presence on all states and
1034         sort them.
1035
1036 2006-03-21  Bernd Schmidt  <bernd.schmidt@analog.com>
1037
1038         * config/bfin/bfin-protos.h (bfin_dsp_memref_p): Declare.
1039         * config/bfin/bfin.c (bfin_dsp_memref_p): New function.
1040         (bfin_valid_reg_p): Test for pseudos explicitly and use only
1041         REGNO_MODE_CODE_OK_FOR_BASE_P.  New args MODE and OUTER_CODE; all
1042         callers changed.
1043         * config/bfin/bfin.h (PREG_P): Use P_REGNO_P.
1044         (IREG_P, P_REGNO_P, I_REGNO_P): New macros.
1045         (enum reg_class, REG_CLASS_CONTENTS): Add IPREGS.
1046         (BASE_REG_CLASS, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
1047         REGNO_OK_FOR_BASE_STRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): Delete
1048         macros.
1049         (IREG_POSSIBLE_P, MODE_CODE_BASE_REG_CLASS,
1050         REGNO_MODE_CODE_OK_FOR_BASE_P): New macros.
1051         (REGNO_REG_CLASS): ARGP is in PREGS.
1052         * config/bfin/bfin.md (movhi_insn): Allow for addresses containing
1053         IREGS.
1054         (zero_extendhisi2, extendhisi2): Likewise; changed to define_and_split
1055         to deal with those addresses.
1056         * addresses.h: New file.
1057         * caller-save.c: Include "addresses.h".
1058         (init_caller_save): Use new base_reg_class function.
1059         * rtl-factoring.c: Include "addresses.h".
1060         (recompute_gain_for_pattern_seq): Use new function ok_for_base_p_1.
1061         * recog.c: Include "addresses.h".
1062         (preprocess_constraints): Use new base_reg_class function.
1063         * regrename.c: Include "addresses.h".
1064         (scan_rtx_address): Use new regno_ok_for_base_p and base_reg_class
1065         functions.  Keep track of a new var INDEX_CODE to compute valid
1066         classes.
1067         (replace_oldest_value_addr): Likewise.
1068         (replace_oldest_value_mem): Use base_reg_class.
1069         * reload.c: Include "addresses.h".
1070         (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Delete macros.
1071         (find_reloads): Use new base_reg_class function.
1072         (find_reloads_address): Likewise; also use regno_ok_for_base_p.
1073         (find_reloads_address_1): Likewise. New args OUTER_CODE and INDEX_CODE;
1074         all callers and prototype changed.
1075         * reload1.c: Include "addresses.h".
1076         (maybe_fix_stack_asms): Use base_reg_class.
1077         * regclass.c: Include "addresses.h".
1078         (ok_for_index_p_nonstrict, ok_for_base_p_nonstrict): New functions.
1079         (init_reg_autoinc): Use new base_reg_class function.
1080         (record_reg_classes): Likewise.
1081         (record_address_regs): Delete arg CLASS; add args CONTEXT, MODE,
1082         OUTER_CODE and INDEX_CODE.  All callers and prototype changed.
1083         Use new args to compute necessary class.
1084
1085         * Makefile.in (regclass.o, reload.o, reload1.o, caller-save.o, recog.o,
1086         regrename.o, rtl-factoring.o): Update dependencies.
1087         * doc/tm.texi (MODE_CODE_BASE_REG_CLASS): Document.
1088         (REGNO_MODE_CODE_OK_FOR_BASE_P): Likewise.
1089         (REG_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_REG_BASE_P,
1090         REG_OK_FOR_INDEX_P): Delete documentation.
1091
1092 2006-03-21  Alexey Starovoytov  <alexey.starovoytov@sun.com>
1093
1094         * config.gcc (sparc-*-solaris2*): Change the default CPU setting
1095         from V7 to V9 for Solaris 7 and above.
1096
1097 2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>
1098
1099         * doc/invoke.texi: Document new flag -fargument-noalias-anything.
1100         * tree-ssa-alias.c (may_alias_p): If flag_argument_noalias > 2,
1101         argument pointers may not alias any other storage.
1102         * common.opt: Define option -fargument-noalias-anything.
1103         * tree-ssa-structalias.c (intra_create_variable_infos): Fortran
1104         alias semantics is specified by flag_argument_noalias > 2.
1105
1106 2006-03-20  Jeff Law  <law@redhat.com>
1107
1108         * tree-pass.h (pass_phi_only_copy_prop): Delete.
1109         (pass_phi_only_cprop): Declare.
1110         * passes.c (init_optimization_passes): Replace pass_phi_only_copy_prop
1111         with phi_only_cprop
1112         * tree-ssa-dom.c (degenerate_phi_result): New function.
1113         (remove_stmt_or_phi, get_lhs_or_phi_result): Likewise.
1114         (get_rhs_or_phi_arg, propagate_rhs_into_lhs): Likewise.
1115         (eliminate_const_or_copy, eliminate_degenerate_phis_1): Likewise.
1116         (eliminate_degenerate_phis): Likewise.
1117         (pass_phi_only_cprop): New pass descriptor.
1118         * tree-ssa-copy.c (init_copy_prop): Lose PHIS_ONLY argument and
1119         support code.  Callers updated.
1120         (execute_copy_prop, do_copy_prop): Likewise and corresponding changes.
1121         (store_copy_prop): Likewise.
1122         (do_phi_only_copy_prop, pass_phi_only_copy_prop): Remove.
1123
1124 2006-03-20  Jason Merrill  <jason@redhat.com>
1125
1126         PR c++/21764
1127         * c-pragma.c (visstack): Move out of handle_pragma_visibility.
1128         (push_visibility, pop_visibility): Likewise.
1129         * c-pragma.h: Declare them.
1130
1131 2006-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
1132
1133         * config/sh/sh.c (untangle_mova): Initialize n_addr and n_target.
1134
1135         * config/sh/sh.c (find_regmode_weight): Change the type of the first
1136         parameter and use get_ebb_head_tail.
1137         (sh_md_init_global): Adjust uses of find_regmode_weight.
1138
1139 2006-03-20  Steven Bosscher  <stevenb.gcc@gmail.com>
1140
1141         * function.h (struct function) <x_tail_recursion_reentry>:
1142         Rename to x_stack_check_probe_note.
1143         (tail_recursion_reentry): Rename to stack_check_probe_note.
1144         * function.c: Replace tail_recursion_reentry with
1145         stack_check_probe_note everywhere.
1146         (expand_function_start): Only emit a note for
1147         stack_check_probe_note with -fstack-protect.
1148         * stmt.c (expand_case): Don't emit NOTE_INSN_DELETED notes.
1149
1150         * emit-rtl.c (remove_unnecessary_notes): Remove.
1151         (pass_remove_unnecessary_notes): Remove.
1152         * rtl.h (remove_unnecessary_notes): Remove prototype.
1153         * final.c (final_start_function): Don't call remove_unnecessary_notes.
1154         * tree-pass.h (pass_remove_unnecessary_notes): Remove.
1155         * passes.c (pass_remove_unnecessary_notes): Don't run it.
1156
1157 2006-03-20  Andrew Pinski  <pinskia@physics.uc.edu>
1158
1159         PR tree-opt/26629
1160         * tree-ssa-pre (phi_translate): Handle ARRAY_REF's operands.
1161         (valid_in_set): Handle ARRAY_REF.
1162         Change "if min_variant or VH" to asserts.
1163         (create_component_ref_by_pieces): Handle ARRAY_REF.
1164         (create_expression_by_pieces): Likewise.
1165         (can_PRE_operation): ARRAY_REFs can now be PRE'd.
1166
1167 2006-03-20  David Edelsohn  <edelsohn@gnu.org>
1168
1169         * genpreds.c (write_insn_extra_address_constraint): Argument `c'
1170         is operand of switch, not str[0].
1171
1172 2006-03-20  Alan Modra  <amodra@bigpond.net.au>
1173
1174         * config/rs6000/rs6000.c (rs6000_handle_option): Use
1175         TARGET_NO_FP_IN_TOC inside #ifdef TARGET_USES_SYSV4_OPT too.
1176
1177 2006-03-19  David Edelsohn  <edelsohn@gnu.org>
1178
1179         * genpreds.c (write_tm_preds_h): Add semicolon and newline at
1180         end of insn_extra_address_constraint declaration.
1181
1182 2006-03-19  David Edelsohn  <edelsohn@gnu.org>
1183
1184         * config/rs6000/rs6000.opt (no-fp-in-toc): Use Var not Mask.
1185         (no-sum-in-toc): Same.
1186         * config/rs6000/rs6000.c (rs6000_handle_option): Use new
1187         variables.
1188         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Set
1189         NO_FP_IN_TOC for -fPIC instead of mask.
1190
1191         * config/rs6000/t-aix43 (T_ADAFLAGS): Delete.
1192         (BOOT_LDFLAGS): Delete.
1193         (LDFLAGS): Delete.
1194         * config/rs6000/t-aix52: Same.
1195
1196         * config/rs6000/rs6000.md (store_multiple_power): Delete.
1197         (stmsi[345678]_power): New.
1198
1199 2006-03-17  Steve Ellcey  <sje@cup.hp.com>
1200
1201         * config/ia64/ia64.opt: Add empty line to end of file.
1202
1203 2006-03-17  Richard Guenther  <rguenther@suse.de>
1204
1205         PR middle-end/26721
1206         * builtins.c (get_pointer_alignment): For component style references
1207         adjust alignment to the component type alignment.  Make sure
1208         to adjust alignment for component access of constants.
1209
1210 2006-03-17  David Edelsohn  <edelsohn@gnu.org>
1211
1212         * config/rs6000/rs6000.md (strlensi): Emit barrier after
1213         unconditional jump.
1214
1215 2006-03-17  Paul Brook  <paul@codesourcery.com>
1216
1217         * doc/install.texi: Docuemnt --with-mode.
1218         * config.gcc: Add --with-mode for arm*-*-*.
1219         * config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "mode".
1220
1221 2006-03-17  J"orn Rennecke <joern.rennecke@st.com>
1222
1223         * sh.c (max_labelno_before_reorg): New variable.
1224         (sh_reorg): Initialize it.
1225         (find_barrier): Check max_labelno_before_reorg before using
1226         label_to_alignment.  Take length of explicit alignment insns
1227         into account.  When seeing a UNSPECV_CONST_END, return it.
1228
1229         * sh.c (fixup_mova): Set mode of affected label to QImode.
1230         (untangle_mova): New function.
1231         (find_barrier): Use it.  Check mode of label before decrementing
1232         num_mova.
1233         (sh_reorg): Likewise.
1234         Set mode of all insns back to VOIDmode.
1235
1236         * sh.c (MOVA_LABELREF): New macro.
1237         (mova_p, fixup_mova, sh_reorg): Use it.
1238         (find_barrier, sh_reorg): Don't count num_mova back to 0 unless
1239         ADDR_DIFF_VEC matches mova.
1240
1241 2006-03-17  Steven Bosscher  <stevenb.gcc@gmail.com>
1242
1243         * dwarf2asm.c (dw2_asm_output_offset): Mark 'base' argument
1244         with ATTRIBUTE_UNUSED.
1245
1246 2006-03-17  Alexandre Oliva  <aoliva@redhat.com>
1247
1248         * dwarf2out.c (dwarf2out_stack_adjust): Always track the stack
1249         pointer, instead of assuming it is possible to derive the
1250         correct args size from a call insn.
1251
1252 2006-03-16  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1253
1254         * rtl.h (CONST_INT_P): Define.
1255         * config/vax/vax.c (print_operand_address): Use CONST_INT_P()
1256         instead of GET_CODE(x) == CONST_INT.
1257         (vax_rtx_costs): Likewise.
1258         (vax_output_int_move): Likewise.
1259         (vax_output_int_add): Likewise.
1260         (legitimate_constant_address_p): Likewise.
1261         (index_term_p): Likewise.
1262         * config/vax/vax.h (PRINT_OPERAND): Likewise.
1263         * config/vax/vax.md (and<mode>3): Likewise.
1264         (ashrsi3): Likewise.
1265         (extv): Likewise.
1266         (movstricthi): Likewise.
1267         (movstrictqi): Likewise.
1268         (rotrsi3): Likewise.
1269         (five unnamed insns): Likewise.
1270
1271 2006-03-16  Geoffrey Keating  <geoffk@apple.com>
1272
1273         * doc/tm.texi (SDB and DWARF): Add extra parameter to
1274         ASM_OUTPUT_DWARF_OFFSET.  Use @var to indicate metavariables.
1275         * dwarf2asm.h (dw2_asm_output_offset): Add section parameter.
1276         * dwarf2asm.c (dw2_asm_output_offset): Add base section parameter.
1277         Pass to ASM_OUTPUT_DWARF_OFFSET.
1278         * dwarf2out.c (debug_frame_section): New.
1279         (output_call_frame_info): Use debug_frame_section.  Pass it to
1280         dw2_asm_output_offset.
1281         (output_die): Pass appropriate section to dw2_asm_output_offset.
1282         (output_compilation_unit_header): Likewise.
1283         (output_pubnames): Likewise.
1284         (output_aranges): Likewise.
1285         (enum dw_val_class): Break dw_val_class_lbl_offset into
1286         dw_val_class_lineptr and dw_val_class_macptr.
1287         (add_AT_lbl_offset): Delete.
1288         (add_AT_lineptr): New.
1289         (add_AT_macptr): New.
1290         (AT_lbl): Expect a lineptr or macptr.
1291         (print_die): Handle dw_val_class_lineptr and dw_val_class_macptr.
1292         (attr_checksum): Likewise.
1293         (same_dw_val_p): Likewise.
1294         (size_of_die): Likewise.
1295         (value_format): Likewise.
1296         (output_die): Likewise.
1297         (dwarf2out_finish): Call add_AT_lineptr and add_AT_macptr instead of
1298         add_AT_lbl_offset.
1299         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter.
1300         * config/i386/i386.c (x86_file_start): Call darwin_file_start.
1301         * config/darwin-protos.h (darwin_file_start): New.
1302         (darwin_asm_output_dwarf_offset): New.
1303         * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter.
1304         * config/rs6000/rs6000.c (rs6000_darwin_file_start): Call
1305         darwin_file_start.
1306         * config/darwin.c (darwin_emit_unwind_label): Don't output label
1307         if not EH section; simplify.
1308         (darwin_file_start): New.
1309         (darwin_asm_output_dwarf_offset): New.
1310         * config/darwin.h (DEBUG_FRAME_SECTION): In __DWARF segment,
1311         mark as 'debug'.
1312         (DEBUG_INFO_SECTION): Likewise.
1313         (DEBUG_ABBREV_SECTION): Likewise.
1314         (DEBUG_ARANGES_SECTION): Likewise.
1315         (DEBUG_MACINFO_SECTION): Likewise.
1316         (DEBUG_LINE_SECTION): Likewise.
1317         (DEBUG_LOC_SECTION): Likewise.
1318         (DEBUG_PUBNAMES_SECTION): Likewise.
1319         (DEBUG_STR_SECTION): Likewise.
1320         (DEBUG_RANGES_SECTION): Likewise.
1321         (FRAME_BEGIN_LABEL): Must start with 'L' in debug section.
1322         (ASM_OUTPUT_DWARF_OFFSET): New.
1323
1324 2006-03-16  Joseph S. Myers  <joseph@codesourcery.com>
1325
1326         * config.gcc (tm_defines): Always add to previous value rather
1327         than replacing it.
1328
1329 2006-03-16  Richard Sandiford  <richard@codesourcery.com>
1330
1331         * config/mips/predicates.md (splittable_const_int_operand): New,
1332         split from move_operand.
1333         (splittable_symbolic_operand): New.
1334         (move_operand): Add commentary.  Use splittable_const_int_operand.
1335         Inline mips_atomic_symbolic_constant_p.
1336         * config/mips/mips.md: Add combine splitters for handling moves
1337         of splittable_const_int_operands and splittable_symbolic_operands.
1338         * config/mips/mips-protos.h (mips_atomic_symbolic_constant_p): Delete.
1339         (mips_split_symbol): Declare.
1340         (mips_move_integer): Declare.
1341         * config/mips/mips.c (mips_split_p): Make global.
1342         (TARGET_MIN_ANCHOR_OFFSET): Override default.
1343         (TARGET_MAX_ANCHOR_OFFSET): Likewise.
1344         (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
1345         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Likewise.
1346         (mips_offset_within_object_p): Handle block symbols.
1347         (mips_atomic_symbolic_constant_p): Delete.
1348         (mips_cannot_force_const_mem): Return false for constants that
1349         mips_legitimize_move can handle.
1350         (mips_use_blocks_for_constant_p): New function.
1351         (mips_split_symbol): Make global.
1352         (mips_move_integer): Likewise.  Add a temporary register argument.
1353         (mips_legitimize_const_move): Use splittable_const_int_operand and
1354         splittable_symbolic_operand.
1355         (mips_use_anchors_for_symbol_p): New function.
1356         * config/mips/mips.h: Protect externs with !USED_FOR_TARGET.
1357         (mips_split_p): Declare.  
1358
1359 2006-03-16  Richard Sandiford  <richard@codesourcery.com>
1360
1361         * config.gcc (mips64*-*-linux*): Keep existing tm_defines.
1362         (mips*-*-linux*): Likewise.
1363
1364 2006-03-16  Roger Sayle  <roger@eyesopen.com>
1365             Daniel Speyer  <dspeyer@wam.umd.edu>
1366
1367         PR middle-end/18259
1368         * tree-dump.c (dump_real): New function.
1369         (dequeue_and_dump) <REAL_CST>: Use it to dump FP constants.
1370         * Makefile.in (REAL_H): New macro for dependencies on real.h.
1371         (tree-dump.o): Add $(REAL_H) to the dependencies.
1372
1373 2006-03-16  Roger Sayle  <roger@eyesopen.com>
1374
1375         PR middle-end/21781
1376         * real.c (real_from_string): If the mantissa is zero, don't bother
1377         parsing the exponent as the result should always be zero.
1378
1379 2006-03-16  Andreas Krebbel  <krebbel1@de.ibm.com>
1380
1381         * simplify-rtx.c (simplify_plus_minus): Simplify within CONST terms.
1382
1383 2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1384
1385         * config/ia64/ia64.c (stops_p): Added explicit initialization.
1386         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
1387         ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn,
1388         ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global,
1389         ia64_sched_finish_global): New static functions to implement
1390         hooks from gcc_target.sched.
1391         (spec_check_no, max_uid, pending_data_specs): New static variables.
1392         (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p,
1393         ia64_spec_check_src_p): New static functions.
1394         (ia64_adjust_cost): Renamed to ia64_adjust_cost_2.
1395         (TARGET_SCHED_ADJUST_COST): Removed.
1396         (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL,
1397         TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED,
1398         TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
1399         TARGET_SCHED_GEN_CHECK,
1400         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
1401         TARGET_SCHED_SET_SCHED_FLAGS): New macros.
1402         (update_set_flags, group_barrier_needed, set_src_needs_barrier):
1403         Fixed to handle speculation checks.
1404         (rtx_needs_barrier): Fixed to handle speculative loads and
1405         their checks.
1406         (ia64_variable_issue): Added code to count speculative loads and their
1407         checks.
1408         (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle
1409         speculative loads.
1410         (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET):
1411         New enumerations.
1412         (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET):
1413         New constants.
1414         (ia64_ld_address_bypass_p): Fixed to handle speculative loads.
1415         (ia64_reorg): Reset stops_p to NULL after it is freed.
1416         * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA,
1417         UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants.
1418         (itanium_class): chk_s renamed to chk_s_i.  New constants: chk_s_f,
1419         chk_a.
1420         (data_speculative, control_speculative, check_load): New attributes.
1421         (mov<mode>_advanced, mov<mode>_speculative,
1422         mov<mode>_speculative_advanced, zero_extend<mode>di2_advanced,
1423         zero_extend<mode>di2_speculative,
1424         zero_extend<mode>di2_speculative_advanced): New patterns for
1425         data and control speculative loads.
1426         (mov<mode>_clr, zero_extend<mode>di2_clr): New patterns for
1427         check loads.
1428         (advanced_load_check_clr_<mode>, speculation_check_<mode>):
1429         New pattern for data and control speculation checks.
1430         (MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr,
1431         ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr,
1432         reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes):
1433         Auxiliary definitions for the patterns.
1434         * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a,
1435         1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource
1436         constraints.
1437         (1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition
1438         for speculation.
1439         (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i.
1440         * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f,
1441         2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a):
1442         New resource constraints.
1443         (2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition
1444         for speculation.
1445         (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i.
1446         * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec,
1447         msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
1448         msched-in-control-spec, msched-ldc, msched-control-ldc,
1449         msched-spec-verbose, msched-prefer-non-data-spec-insns,
1450         msched-prefer-non-control-spec-insns,
1451         msched-count-spec-in-critical-path): New flags to tune speculative
1452         scheduling.
1453         * doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec,
1454         msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
1455         msched-in-control-spec, msched-ldc, msched-control-ldc,
1456         msched-spec-verbose, msched-prefer-non-data-spec-insns,
1457         msched-prefer-non-control-spec-insns,
1458         msched-count-spec-in-critical-path): Document new flags.
1459
1460 2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1461
1462         * target.h (struct spec_info_def): New opaque declaration.
1463         (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended,
1464         speculate_insn, needs_block_p, gen_check,
1465         first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags.
1466         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
1467         TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN,
1468         TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK,
1469         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
1470         TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in
1471         gcc_target.sched.
1472         (TARGET_SCHED): Use new macros.
1473         * rtl.h (copy_DEPS_LIST_list): New prototype.
1474         * sched-int.h (struct sched_info): Change signature of new_ready field,
1475         adjust all initializations. New fields: add_remove_insn,
1476         begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg,
1477         region_head_or_leaf_p.
1478         (struct spec_info_def): New structure declaration.
1479         (spec_info_t): New typedef.
1480         (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec,
1481         recovery_block, orig_pat.
1482         (glat_start, glat_end): New variables declaraions.
1483         (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT):
1484         New access macros.
1485         (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB,
1486         DETACH_LIFE_INFO, USE_GLAT.
1487         (enum SPEC_SCHED_FLAGS): New enumeration.
1488         (NOTE_NOTE_BB_P): New macro.
1489         (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block,
1490         attach_life_info, debug_spec_status, check_reg_live): New functions.
1491         (get_block_head_tail): Change signature to get_ebb_head_tail, adjust
1492         all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c,
1493         sched-ebb.c
1494         (get_dep_weak, ds_merge): Prototype functions from sched-deps.c .
1495         * ddg.c (get_block_head_tail): Adjust all uses.
1496         * modulo-sched.c (get_block_head_tail): Adjust all uses.
1497         (sms_sched_info): Initialize new fields.
1498         (contributes_to_priority): Removed.
1499         * haifa-sched.c (params.h): New include.
1500         (get_block_head_tail): Adjust all uses.
1501         (ISSUE_POINTS): New macro.
1502         (glat_start, glat_end): New global variables.
1503         (spec_info_var, spec_info, added_recovery_block_p, nr_begin_data,
1504         nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header,
1505         old_last_basic_block, before_recovery, current_sched_info_var,
1506         rgn_n_insns, luid): New static variables.
1507         (insn_cost1): New function.  Move logic from insn_cost to here.
1508         (find_insn_reg_weight1): New function.  Move logic from
1509         find_insn_reg_weight to here.
1510         (reemit_notes, move_insn, max_issue): Change signature.
1511         (move_insn1): Removed.
1512         (extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d,
1513         extend_bb): New static functions to support extension of scheduler's
1514         data structures.
1515         (generate_recovery_code, process_insn_depend_be_in_spec,
1516         begin_speculative_block, add_to_speculative_block,
1517         init_before_recovery, create_recovery_block, create_check_block_twin,
1518         fix_recovery_deps): New static functions to support
1519         generation of recovery code.
1520         (fix_jump_move, find_fallthru_edge, dump_new_block_header,
1521         restore_bb_notes, move_block_after_check, move_succs): New static
1522         functions to support ebb scheduling.
1523         (init_glat, init_glat1, attach_life_info1, free_glat): New static
1524         functions to support handling of register live information.
1525         (associate_line_notes_with_blocks, change_pattern, speculate_insn,
1526         sched_remove_insn, clear_priorities, calc_priorities, bb_note,
1527         add_jump_dependencies): New static functions.
1528         (check_cfg, has_edge_p, check_sched_flags): New static functions for
1529         consistancy checking.
1530         (debug_spec_status): New function to call from debugger.
1531         (priority): Added code to handle speculation checks.
1532         (rank_for_schedule): Added code to distinguish speculative instructions.
1533         (schedule_insn): Added code to handle speculation checks.
1534         (unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes):
1535         Fixed to handle ebbs.
1536         (move_insn): Added code to handle ebb scheduling.
1537         (max_issue): Added code to use ISSUE_POINTS of instructions.
1538         (choose_ready): Added code to choose between speculative and
1539         non-speculative instructions.
1540         (schedule_block): Added code to handle ebb scheduling and scheduling of
1541         speculative instructions.
1542         (sched_init): Initialize new variables.
1543         (sched_finish): Free new variables.  Print statistics.
1544         (try_ready): Added code to handle speculative instructions.
1545         * lists.c (copy_DEPS_LIST_list): New function.
1546         * sched-deps.c (extend_dependency_caches): New function.  Move logic
1547         from create_dependency_caches to here.
1548         (get_dep_weak, ds_merge): Make global.
1549         * genattr.c (main): Code to output prototype for
1550         dfa_clear_single_insn_cache.
1551         * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros.
1552         (output_dfa_clean_insn_cache_func): Code to output
1553         dfa_clear_single_insn_cache function.
1554         * sched-ebb.c (target_n_insns): Remove.  Adjust all users to use
1555         n_insns.
1556         (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs):
1557         Removed.
1558         (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb):
1559         New static variables.
1560         (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb,
1561         fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from
1562         struct sched_info.
1563         (ebb_sched_info): Initialize new fields.
1564         (get_block_head_tail): Adjust all uses.
1565         (compute_jump_reg_dependencies): Fixed to use glat_start.
1566         (schedule_ebb): Code to remove unreachable last block.
1567         (schedule_ebbs): Added code to update register live information.
1568         * sched-rgn.c (region_sched_info): Initialize new fields.
1569         (get_block_head_tail): Adjust all uses.
1570         (last_was_jump): Removed.  Adjust users.
1571         (begin_schedule_ready, add_remove_insn, insn_points, extend_regions,
1572         add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p):
1573         Implement new hooks.
1574         (check_dead_notes1): New static function.
1575         (struct region): New fields: dont_calc_deps, has_real_ebb.
1576         (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros.
1577         (BB_TO_BLOCK): Fixed to handle EBBs.
1578         (EBB_FIRST_BB, EBB_LAST_BB): New macros.
1579         (ebb_head): New static variable.
1580         (debug_regions, contributes_to_priority): Fixed to handle EBBs.
1581         (find_single_block_regions, find_rgns, find_more_rgns): Initialize
1582         new fields.
1583         (compute_dom_prob_ps): New assertion.
1584         (check_live_1, update_live_1): Fixed to work with glat_start instead of
1585         global_live_at_start.
1586         (init_ready_list): New assertions.
1587         (can_schedule_ready_p): Split update code to begin_schedule_ready.
1588         (new_ready): Add support for BEGIN_CONTROL speculation.
1589         (schedule_insns): Fixed code that updates register live information
1590         to handle EBBs.
1591         (schedule_region): Fixed to handle EBBs.
1592         (init_regions): Use extend_regions and check_dead_notes1.
1593         * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
1594         PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters.
1595         * doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED,
1596         TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
1597         TARGET_SCHED_GEN_CHECK,
1598         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
1599         TARGET_SCHED_SET_SCHED_FLAGS): Document.
1600         * doc/invoke.texi (max-sched-insn-conflict-delay,
1601         sched-spec-prob-cutoff): Document.
1602
1603 2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1604
1605         * sched-int.h (struct haifa_insn_data): New fields: resolved_deps,
1606         inter_tick, queue_index.
1607         (struct sched_info): Change signature of init_ready_list field.
1608         Adjust all initializations.
1609         (RESOLVED_DEPS): New access macro.
1610         (ready_add): Remove prototype.
1611         (try_ready): Add prototype.
1612         * sched-rgn.c (init_ready_list): Use try_ready.
1613         (schedule_region): Initialize
1614         current_sched_info->{sched_max_insns_priority, queue_must_finish_empty}.
1615         * sched-ebb.c (new_ready): Remove.  Adjust ebb_sched_info.
1616         (init_ready_list): Use try_ready.
1617         (schedule_ebb): Initialize current_sched_info->sched_max_insns_priority.
1618         * lists.c (remove_list_elem): Remove `static'.
1619         (remove_free_INSN_LIST_elem): New function.
1620         * rtl.h (remove_list_elem, remove_free_INSN_LIST_elem): Add prototypes.
1621         * haifa-sched.c (INTER_TICK, QUEUE_INDEX): New macros.
1622         (INVALID_TICK, MIN_TICK, QUEUE_SCHEDULED, QUEUE_NOWHERE, QUEUE_READY):
1623         New constants.
1624         (readyp): New variable.
1625         (queue_remove, ready_remove_insn, fix_inter_tick, fix_tick_ready,
1626         change_queue_index, resolve_dep): New static functions.
1627         (try_ready): New function.  Adjust callers in sched-rgn.c and
1628         sched-ebb.c to use it instead of ready_add.
1629         (clock_var): Move at the begining of file.
1630         (rank_for_schedule): Fix typo.
1631         (queue_insn): Add assertion.  Handle QUEUE_INDEX.
1632         (ready_lastpos): Enforce assertion.
1633         (ready_add): Make it static.  Handle QUEUE_INDEX.  Add new argument,
1634         update all callers.
1635         (ready_remove_first, ready_remove): Handle QUEUE_INDEX.
1636         (schedule_insn): Rewrite to use try_ready and resolve_dep.
1637         (queue_to_ready): Use free_INSN_LIST_list.
1638         (early_queue_to_ready): Fix typo.
1639         (schedule_block): Init readyp.  Move init_ready_list call after the
1640         initialization of clock_var.  Fix error in rejecting insn by
1641         targetm.sched.dfa_new_cycle.  Add call to fix_inter_tick.  Remove code
1642         that previously corrected INSN_TICKs.  Add code for handling
1643         QUEUE_INDEX.
1644         (set_priorities): Fix typo.
1645         (sched_init): Initialize INSN_TICK, INTER_TICK and QUEUE_INDEX.
1646         Clarify comment and code that keeps current_sched_info->next_tail
1647         non-null.
1648
1649 2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1650
1651         * sched-rgn.c (extend_rgns): New static function.
1652         (find_rgns): Use it.
1653         (gather_region_statistics, print_region_statistics): New static
1654         functions.
1655         * params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): New parameter.
1656         * doc/invoke.texi (max-sched-extend-regions-iters): Document.
1657
1658 2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1659             Andrey Belevantsev <abel@ispras.ru>
1660
1661         * ddg.c (build_intra_loop_deps): Adjust add_forward_dependence call.
1662         * lists.c (unused_deps_list): New variable.
1663         (free_list): Add assertions to verify the proper distinguishing 
1664         between INSN_LISTs and DEPS_LISTs.
1665         (find_list_elem, remove_list_elem, remove_list_node): New static
1666         functions.
1667         (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node,
1668         remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem,
1669         remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions.
1670         (alloc_INSN_LIST): Assert that the list we're working on is indeed
1671         an INSN_LIST.
1672         (free_INSN_LIST_node): Likewise.
1673         * modulo-sched.c (current_sched_info): Initialize flags field.
1674         * reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT.
1675         * rtl.def (DEPS_LIST): Define.
1676         * rtl.h: Declare new functions from lists.c.
1677         * sched-deps.c (spec_dependency_cache): New static variable.
1678         (maybe_add_or_update_back_dep_1, add_back_dep): New static functions.
1679         (add_dependence): Change return type to void.  Move the logic to ...
1680         (add_or_update_back_dep_1): ... here.  Handle speculative dependencies.
1681         (delete_all_dependences): Add comment about forward_dependency_cache.
1682         Handle spec_dependency_cache.  Handle DEPS_LISTs.
1683         (fixup_sched_groups): Clarify the change of priority of output
1684         and anti dependencies.
1685         (sched_analyze_2): Adjust add_dependence calls to create data
1686         speculative dependence.
1687         (add_forward_dependence): Renamed to add_forw_dep, change prototype.
1688         Adjust all callers.  Handle DEPS_LISTS.
1689         (compute_forward_dependences): Use add_forw_dep.  Sort LOG_LINKs in
1690         presence of speculation.
1691         (init_dependency_caches, free_dependency_caches):
1692         Handle spec_dependency_cache.
1693         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep,
1694         estimate_dep_weak, get_dep_weak, ds_merge, check_dep_status):
1695         New static functions.
1696         (add_or_update_back_dep, add_or_update_back_forw_dep,
1697         add_back_forw_dep, delete_back_forw_dep): New functions.
1698         * sched-int.h (ds_t, dw_t): New typedefs.
1699         (struct sched_info): Add new field flags.
1700         (struct haifa_insn_data): Add new bitfield has_internal_dep.
1701         Prototype new sched-deps.c functions.
1702         (HAS_INTERNAL_DEP, DEP_STATUS): New access macros.
1703         (BITS_PER_DEP_STATUS, BITS_PER_DEP_WEAK, DEP_WEAK_MASK, MAX_DEP_WEAK,
1704         MIN_DEP_WEAK, NO_DEP_WEAK, UNCERTAIN_DEP_WEAK, BEGIN_DATA, BE_IN_DATA,
1705         BEGIN_CONTROL, BE_IN_CONTROL, BEGIN_SPEC, DATA_SPEC, CONTROL_SPEC,
1706         SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE,
1707         SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP):
1708         New constants.
1709         (enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS):
1710         New enums.
1711         * sched-rgn.c (current_sched_info): Initialize flags field.
1712         (schedule_insns): Initialize current_sched_info before the sched_init
1713         call.
1714         * sched-ebb.c (current_sched_info): Initialize flags field.
1715         (add_deps_for_risky_insns): Use control_flow_insn_p instead of JUMP_P.
1716         Call add_or_update_back_dep instead of add_dependence.
1717         Create control speculative dependencies.
1718         (schedule_insns): Initialize current_sched_info before the sched_init
1719         call.
1720
1721 2006-03-16  Kaz Kojima  <kkojima@gcc.gnu.org>
1722
1723         * config/sh/linux-unwind.h (shmedia_fallback_frame_state): Set
1724         fs->signal_frame.
1725         (sh_fallback_frame_state): Likewise.
1726
1727 2006-03-15  Geoffrey Keating  <geoffk@apple.com>
1728
1729         * config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports.
1730         Do switch on default_use_cxa_atexit.
1731         (powerpc*-*-darwin*): Build crt2.o on powerpc.
1732         * config/darwin-crt3.o: New.
1733         * config/darwin.h (LINK_SPEC): If -shared-libgcc, make linker default
1734         to 10.3.  Pass '-multiply_defined suppress' if crt3.o is in use.
1735         (STARTFILE_SPEC): Add crt3.o when -shared-libgcc and appropriate
1736         OS version.
1737         * config/rs6000/t-darwin: Move crt2.o building to here.
1738         * config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Update
1739         Mac OS version for using __cxa_get_exception_ptr.  Don't test versions
1740         of __cxa_atexit.
1741
1742 2006-03-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1743
1744         * config/vax/vax.c (nonindexed_address_p): Change logical negation
1745         from '! xxx' to '!xxx' for coding-style conformance.
1746         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Likewise.
1747         (EXTRA_CONSTRAINT): Likewise.
1748         * config/vax/vax.md (four unnamed insns): Likewise.
1749         
1750 2006-03-15  Paul Brook  <paul@codesourcery.com>
1751
1752         * config/arm/arm.c (minipool_pad): New.
1753         (add_minipool_forward_ref): Include pool alignment padding in address
1754         calculation.
1755         (push_minipool_fix): Set minipool_pad.
1756         (minipool_pad): Ditto.
1757
1758 2006-03-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1759
1760         * config/vax/vax.c (split_quadword_operands): Use MEM_P()
1761         instead of GET_CODE() == MEM and REG_P() instead of
1762         GET_CODE() == REG.
1763         (print_operand_address): Likewise.
1764         (vax_address_cost): Likewise.
1765         (vax_rtx_costs): Likewise.
1766         (vax_notice_update_cc): Likewise.
1767         (vax_output_int_add): Likewise.
1768         (INDEX_REGISTER_P): Likewise.
1769         (BASE_REGISTER_P): Likewise.
1770         (nonindexed_address_p): Likewise.
1771         (vax_mode_dependent_address_p): Likewise.
1772         * config/vax/vax.h (EXTRA_CONSTRAINT): Likewise.
1773         (PRINT_OPERAND): Likewise.
1774         * config/vax/vax.md (ashlsi3): Likewise.
1775         (ashlsi3): Likewise.
1776         (some more unnamed insns): Likewise.
1777
1778 2006-03-15  Kazu Hirata  <kazu@codesourcery.com>
1779
1780         * tree-ssa-dce.c (EXECUTE_IF_CONTROL_DEPENDENT): Make it an
1781         iterator-style macro.
1782         (mark_control_dependent_edges_necessary): Update the use of
1783         EXECUTE_IF_CONTROL_DEPENDENT.
1784
1785 2006-03-15  J"orn Rennecke <joern.rennecke@st.com>
1786
1787         * config/sh/predicates.md (cache_address_operand): Special.
1788         (ua_address_operand): Likewise.
1789
1790 2006-03-15  Zdenek Dvorak <dvorakz@suse.cz>
1791
1792         * haifa-sched.c (unlink_other_notes, reemit_notes): Do not handle
1793         loop notes.
1794         * sched-deps.c (sched_analyze_insn, sched_analyze): Ditto.
1795
1796 2006-03-15  Andreas Schwab  <schwab@suse.de>
1797
1798         * gensupport.c (identify_predicable_attribute): Don't free p_false
1799         when it is still in use.
1800
1801 2006-03-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
1802
1803         * config.gcc (default with_cpu setting) <sparc*-*-*>: Do not modify
1804         the default setting here.
1805
1806 2006-03-14  Steven Bosscher  <stevenb.gcc@gmail.com>
1807
1808         * tree-pass.h (pass_cfg): Remove.
1809         * alias.c (rest_of_handle_cfg, pass_cfg): Remove.
1810         * passes.c (pass_cfg): Don't run it.
1811
1812 2006-03-14  Kazu Hirata  <kazu@codesourcery.com>
1813
1814         * Makefile.in (reg-stack.o): Don't depend on gt-reg-stack.h.
1815         * reg-stack.c (stack_regs_mentioned_data): Change the type to
1816         VEC(char,heap) *.
1817         (stack_regs_mentioned): Update the uses of
1818         stack_regs_mentioned_data.  Don't access the array beyond its
1819         end.
1820         (reg_to_stack): Update the uses of stack_regs_mentioned_data.
1821         Don't include gt-reg-stack.h.
1822
1823         * config/bfin/bfin.h (UNALIGNED_WORD_ASM_OP): Remove.
1824         * system.h (UNALIGNED_WORD_ASM_OP): Poison.
1825
1826         * combine.c (UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD): Remove.
1827
1828         PR middle-end/26684
1829         * reg-stack.c (stack_regs_mentioned_data): Put it undef #ifdef
1830         STACK_REGS.
1831
1832 2006-03-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1833
1834         * pa/pa32-linux.h (CRT_CALL_STATIC_FUNCTION): Fix typo.
1835
1836 2006-03-14  Richard Guenther  <rguenther@suse.de>
1837
1838         PR tree-optimization/26672
1839         * tree-ssa-propagate.c (set_rhs): Don't walk DEFs if not in
1840         SSA form.
1841
1842 2006-03-14  Richard Guenther  <rguenther@suse.de>
1843
1844         PR tree-optimization/26667
1845         * ipa-inline.c (cgraph_check_inline_limits): Walk the correct
1846         node for the callees.  Always allow inlining if it will shrink
1847         the function size.
1848
1849 2006-03-14  Richard Guenther  <rguenther@suse.de>
1850
1851         PR middle-end/26659
1852         * builtins.c (get_pointer_alignment): Prefer alignment
1853         information from decls over that from types.
1854
1855 2006-03-14  Andrew Pinski  <pinskia@physics.uc.edu>
1856
1857         PR target/26657
1858         * config/darwin.h (LINK_COMMAND_SPEC): Handle -fopenmp.
1859
1860 2006-03-14  Joseph S. Myers  <joseph@codesourcery.com>
1861
1862         * config/rs6000/rs6000.opt (mdlmzb): New option.
1863         (msched-prolog, msched-epilog): Use Var not Mask.
1864         * doc/invoke.texi (-mdlmzb): Document.
1865         * config/rs6000/rs6000.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
1866         MASK_SCHED_PROLOG.
1867         (rs6000_override_options): Enable -mdlmzb for 405 and 440.
1868         * config/rs6000/rs6000.md: Add dlmzb support for 405 and 440.
1869
1870 2006-03-13  Uttam Pawar  <uttamp@us.ibm.com>
1871
1872         PR rtl-optimization/25739
1873         * bt-load.c (augment_live_range): Free tos pointer.
1874
1875         * gensupport.c (identify_predicable_attribute): Free
1876         p_false pointer.
1877         * gcov.c (create_file_names): Free name pointer.
1878
1879 2006-03-13  Roger Sayle  <roger@eyesopen.com>
1880
1881         PR middle-end/26557
1882         * stmt.c (emit_case_nodes): Handle the case where the index is a
1883         CONST_INT, where the comparison mode is specified by the index type.
1884
1885 2006-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1886
1887         * pa/pa32-linux.h (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O
1888         is defined.
1889
1890 2006-03-13  Richard Sandiford  <richard@codesourcery.com>
1891
1892         * config/mips/mips.md (*branch_fp): Use %Z2 for the condition.
1893         (*branch_fp_inverted): Likewise.
1894
1895 2006-03-13  Jakub Jelinek  <jakub@redhat.com>
1896
1897         PR middle-end/25989
1898         * omp-low.c (expand_omp_for_generic): Mark istart0
1899         and iend0 as addressable.
1900
1901 2006-03-13  Jie Zhang  <jie.zhang@analog.com>
1902
1903         * config/bfin/uclinux.h: Define _GNU_SOURCE in CPLUSPLUS_CPP_SPEC.
1904
1905 2006-03-13  Jeff Law  <law@redhat.com>
1906
1907         * tree-vrp.c (stmt_interesting_for_vrp): Some statements with
1908         virtual operands are interesting.
1909         (vrp_visit_stmt): Corresponding changes.
1910
1911 2006-03-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1912
1913         * config/bfin/lib1funcs.asm (___umodsi3): Use stack to save contents
1914         of RETS.
1915         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): If
1916         TARGET_ID_SHARED_LIBRARY, define __ID_SHARED_LIB__.
1917         * config/bfin/crti.S: Use it instead of __PIC__.
1918         * config/bfin/crtn.S: Likewise.
1919
1920         * config/bfin/bfin.md (call_value_symbol, sibcall_value_symbol,
1921         call_symbol, sibcall_symbol): Disallow if TARGET_ID_SHARED_LIBRARY,
1922         not if flag_pic.
1923         Lose 'G' modifier for call operand.
1924         * config/bfin/bfin.c (print_operand) <case SYMBOL_REF>: Don't
1925         recognize 'G' modifier.
1926
1927 2006-03-13  Eric Botcazou  <ebotcazou@adacore.com>
1928
1929         PR middle-end/18859
1930         * gimplify.c (gimplify_switch_expr): Discard empty ranges.
1931         * stmt.c (expand_case): Likewise.
1932
1933 2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>
1934
1935         PR rtl-optimization/26254
1936         * loop-invariant.c (seq_insns_valid_p): New function.
1937         (move_invariant_reg): Only emit new code if it is valid.
1938
1939 2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>
1940
1941         * cfgrtl.c (last_loop_beg_note, back_edge_of_syntactic_loop_p):
1942         Removed.
1943         (force_nonfallthru_and_redirect): Do not use last_loop_beg_note.
1944         (rtl_split_edge): Do not use back_edge_of_syntactic_loop_p.
1945         (commit_one_edge_insertion): Do not look for loop notes.
1946
1947 2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>
1948
1949         * jump.c (follow_jumps): Do not check for loop notes.  Move check for
1950         flag_test_coverage out of loop.
1951
1952 2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>
1953
1954         * final.c (shorten_branches): Remove outdated comment, and turn
1955         the if branch that guards it to continue.
1956
1957 2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>
1958
1959         * cfgloop.c (flow_loop_dump): Do not dump loop->invalid field.
1960         * cfgloop.h (struct loop): Remove unused fields.
1961
1962 2006-03-13  Kazu Hirata  <kazu@codesourcery.com>
1963
1964         * doc/invoke.texi (-fdump-rtl-loop): Remove.
1965         (-dL, -fdump-rtl-loop2): Update the dump file names 
1966
1967         * doc/invoke.texi: Update dump file names.
1968
1969 2006-03-12  Steven Bosscher  <stevenb.gcc@gmail.com>
1970
1971         * predict.c (estimate_probability): Remove.
1972         * profile.c (rest_of_handle_branch_prob, pass_branch_prob): Remove.
1973         * basic-block.h (estimate_probability): Remove prototype.
1974         * passes.c (finish_optimization_passes): Dump branch prediction or
1975         profiling heuristics to the .profile tree dump.
1976         (init_optimization_passes): Unqueue pass_branch_prob.
1977
1978         * doc/invoke.texi (-fdump-rtl-bp): Remove.
1979
1980 2006-03-11  Steven Bosscher  <stevenb.gcc@gmail.com>
1981
1982         * rtl.def (LABEL_REF): Remove the field for LABEL_NEXTREF.
1983         * rtl.h (LABEL_NEXTREF): Remove field accessor.
1984
1985 2006-03-11  Eric Botcazou  <ebotcazou@adacore.com>
1986
1987         * function.h (frame_offset_overflow): Declare.
1988         * function.c (frame_offset_overflow): New function.
1989         (assign_stack_local_1): Call it to detect that the offset overflows.
1990         * cfgexpand.c (alloc_stack_frame_space): Likewise.
1991
1992 2006-03-11  Steven Bosscher  <stevenb.gcc@gmail.com>
1993
1994         * config/sh/sh.c: Include alloc-pool.h.
1995         (label_ref_list_pool): New alloc pool.
1996         (label_ref_list_t): New type for lists of labels.
1997         (struct pool_node): Make wend a label_ref_list_t.
1998         (add_constant): Use the new type, eradicate LABEL_NEXTREF
1999         references.
2000         (dump_table): Likewise.
2001         (sh_reorg): Set up the alloc pool before using add_constant and
2002         dump_table, and destroy it when finishing.
2003
2004 2006-03-11  Richard Sandiford  <richard@codesourcery.com>
2005
2006         * config/mips/mips.c: Remove redundant comment.
2007
2008 2006-03-10  Jason Merrill  <jason@redhat.com>
2009
2010         PR c/26004
2011         * gimplify.c (gimplify_modify_expr_rhs): Don't do return slot opt if 
2012         the target was declared 'register'.
2013
2014 2006-03-10  Adam Nemet  <anemet@caviumnetworks.com>
2015
2016         * genpreds.c (write_insn_constraint_len): Change definition of
2017         insn_constraint_len to return size_t to match the declaration.
2018
2019 2006-03-10  DJ Delorie  <dj@redhat.com>
2020
2021         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Bit numbers
2022         start at zero.
2023         (m32c_expand_insv): Fix test for an AND mask.
2024
2025 2006-03-10  Richard Guenther  <rguenther@suse.de>
2026
2027         PR middle-end/26565
2028         * builtins.c (get_pointer_alignment): Handle component
2029         references for field alignment.
2030
2031 2006-03-10  J"orn Rennecke <joern.rennecke@st.com>
2032
2033         * config.gcc (sh*-superh-elf, sh*elf (newlib)): Use newlib.h
2034         when building with libgloss.
2035         (sh*elf): Implement --without-fp option.
2036         (sh64-superh-linux*): Don't multilib. 
2037
2038 2006-03-10  J"orn Rennecke <joern.rennecke@st.com>
2039
2040         * struct-equiv.c (rtx_equiv_p): Fix POST_MODIFY case.
2041
2042 2006-03-09  Andrew Pinski  <pinskia@physics.uc.edu>
2043
2044         * tree-ssa-phiopt.c (tree_ssa_phiopt): Add cfgchanged variable.
2045         Set it when one of the replacement functions returned true.
2046         Return TODO_cleanup_cfg if cfgchanged is true.
2047         (pass_phiopt) <todo_flags_finish>: Remove TODO_cleanup_cfg.
2048
2049 2006-03-09  Adam Nemet  <anemet@caviumnetworks.com>
2050
2051         * combine.c (simplify_shift_const_1): Use gen_lowpart_or_truncate
2052         instead of gen_lowpart.
2053
2054 2006-03-09  Richard Sandiford  <richard@codesourcery.com>
2055
2056         * config/mips/mips-protos.h (mips_output_conditional_branch): Change
2057         interface.
2058         (mips_output_order_conditional_branch): Declare.
2059         * config/mips/mips.h (MIPS_BRANCH): New macro.
2060         * config/mips/mips.c (gen_conditional_branch): Use VOIDmode
2061         for the comparison.  Use gen_condjump.
2062         (mips_output_conditional_branch): Rework interface to take the
2063         asm templates for a direct branch and the inverse of a direct branch.
2064         (mips_output_order_conditional_branch): New function.
2065         (mips_builtin_branch_and_move): New function.
2066         (mips_expand_builtin_compare): Use it.  Use VOIDmode for the
2067         branch condition.  Use gen_single_cc as the condition for
2068         __builtin_mips_upper_* or __builtin_mips_lower_*.
2069         (mips_expand_builtin_bposge): Use mips_builtin_branch_and_move.
2070         Use VOIDmode for the branch condition.
2071         * config/mips/predicates.md (order_operator): New predicate.
2072         * config/mips/mips.md (UNSPEC_SINGLE_CC): New constant.
2073         (branch_fp): Rename to...
2074         (*branch_fp): ...this.  Remove mode from comparison operator.
2075         Use new mips_output_conditional_branch interface.
2076         (branch_fp_inverted): Rename to...
2077         (*branch_fp_inverted): ...this and update as for *branch_fp.
2078         (*branch_zero<mode>): Rename to...
2079         (*branch_order<mode>): ...this.  Remove mode from comparison operator.
2080         Use mips_output_order_conditional_branch.  Only accept ordered
2081         comparisons.  
2082         (*branch_zero<mode>_inverted): Rename to...
2083         (*branch_order<mode>_inverted): ...this and update as for
2084         *branch_order<mode>.
2085         (*branch_equality<mode>): Accept zero as the second operand to
2086         the equality operator.  Use the new mips_output_conditional_branch
2087         interface.
2088         (*branch_equality<mode>_inverted): Likewise.
2089         (condjump): New expander.
2090         * config/mips/mips-dsp.md (mips_bposge): Remove mode from comparison
2091         operator.
2092         * config/mips/mips-ps-3d.md (bc1any4t, bc1any4f): Likewise.
2093         (bc1any2t, bc1any2f): Likewise.
2094         (single_cc): New expander.
2095         (*branch_upper_lower, *branch_upper_lower_inverted): New patterns.
2096
2097 2006-03-09  Richard Sandiford  <richard@codesourcery.com>
2098
2099         * doc/md.texi: Update documentation of MIPS constraints.
2100         * config/mips/constraints.md: New file.
2101         * config/mips/mips.md: Include it.
2102         * config/mips/mips.c (mips_char_to_class): Delete.
2103         (override_options): Don't initialize mips_char_to_class.
2104         * config/mips/mips.h (mips_char_to_class): Delete.
2105         (REG_CLASS_FROM_LETTER): Delete.
2106         (CONST_OK_FOR_LETTER_P): Delete.
2107         (CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
2108         (EXTRA_CONSTRAINT_Y): Delete.
2109         (EXTRA_CONSTRAINT_STR): Delete.
2110         (CONSTRAINT_LEN): Delete.
2111         (EXTRA_MEMORY_CONSTRAINT): Delete.
2112
2113 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
2114
2115         * tree-cfg.c (move_block_to_fn): Remove the statements from the
2116         original fn's eh regions.
2117
2118 2006-03-09  Eric Botcazou  <ebotcazou@adacore.com>
2119
2120         * fold-const.c (build_range_check): Make sure to use a valid type to
2121         apply the "(c>=low) && (c<=high) into (c-low>=0) && (c-low<=high-low)"
2122         transformation.
2123
2124         (range_predecessor): New static function.
2125         (range_successor): Likewise.
2126         (merge_ranges): Use them to compute predecessors and successors of
2127         range bounds.
2128
2129 2006-03-09  Roger Sayle  <roger@eyesopen.com>
2130
2131         PR middle-end/26561
2132         * fold-const.c (fold_div_compare): When optimizing X/C1 op C2 as
2133         X op C3, consider whether C3 overflows towards +Inf or -Inf.
2134
2135 2006-03-08  DJ Delorie  <dj@redhat.com>
2136
2137         * config/m32c/addsub.md (addqi3): Disparage a0/a1.
2138         (addpsi3): Expand to include memory operands.  Remove
2139         reload-specific splits.
2140         * config/m32c/bitops.md (bset_qi, bset_hi, bclr_qi): New.
2141         (andqi3_16, andhi3_16, iorqi3_16, iorhi3_16): New.
2142         (andqi3_24, andhi3_24, iorqi3_24, iorhi3_24): New.
2143         (andqi3, andhi3, iorqi3, iorhi3): Convert to expanders.
2144         (shift1_qi, shift1_hi, insv): New.
2145         * config/m32c/cond.md (cbranchqi4, cbranchhi4): Remove.
2146         (cbranch<mode>4, stzx_16, stzx_24_<mode>, stzx_reversed,
2147         cmp<mode>, b<code>, s<code>, s<code>_24, movqicc, movhicc,
2148         cond_to_int): New.
2149         * config/m32c/m32c-protos.h: Update as needed.
2150         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Don't
2151         default the Rcr, Rcl, Raw, and Ral constraints.  Add Ra0 and Ra1.
2152         Fail for unrecognized R* constraints.
2153         (m32c_cannot_change_mode_class): Be more picky about pseudos.
2154         (m32c_const_ok_for_constraint_p): Add Imb, Imw, and I00.
2155         (m32c_extra_constraint_p2): Allow (mem (plus (plus fb int) int)).
2156         Add Sp constraint.
2157         (m32c_init_libfuncs): New.
2158         (m32c_legitimate_address_p): Add debug wrapper.
2159         (m32c_rtx_costs): New.
2160         (m32c_address_cost): New.
2161         (conversions): Add 'B' prefix.
2162         (m32c_print_operand): 'h' and 'H' pick lower and upper halves of
2163         operands, or word regnames for QI operands.  'B' prints bit
2164         position.
2165         (m32c_expand_setmemhi): New.
2166         (m32c_expand_movmemhi): New.
2167         (m32c_expand_movstr): New.
2168         (m32c_expand_cmpstr): New.
2169         (m32c_prepare_shift): Shift counts are limited to 16 bits at a time.
2170         (m32c_expand_neg_mulpsi3): Handle non-ints.
2171         (m32c_cmp_flg_0): New.
2172         (m32c_expand_movcc): New.
2173         (m32c_expand_insv): New.
2174         (m32c_scc_pattern): New.
2175         * config/m32c/m32c.h (reg classes): Add AO_REGS and A1_REGS.  Take
2176         a0/a1 out of SIregs.
2177         (STORE_FLAG_VALUE): New.
2178         * config/m32c/m32c.md: Add unspecs for string moves.  Define various mode and
2179         code macros.
2180         (no_insn): New.
2181         * config/m32c/mov.md: Make constraints more liberal.
2182         (zero_extendqihi2): Optimize r0/r1 case.
2183         * config/m32c/muldiv.md (mulpsi3): Check for intvals.
2184         * config/m32c/predicates.md (m32c_any_operand): New.
2185         (m32c_nonimmediate_operand): New.
2186         (m32c_hl_operand): New.
2187         (m32c_r3_operand): New.
2188         (ap_operand): New.
2189         (ma_operand): New.
2190         (memsym_operand): New.
2191         (memimmed_operand): New.
2192         (a_qi_operand): New.
2193         (m32c_eqne_operator): New.
2194         (m32c_1bit8_operand): New.
2195         (m32c_1bit16_operand): New.
2196         (m32c_1mask8_operand): New.
2197         (m32c_1mask16_operand): New.
2198         * config/m32c/blkmov.md: New file.
2199         * config/m32c/t-m32c (MD_FILES): Add blkmov.
2200
2201 2006-03-08  Andreas Tobler  <a.tobler@schweiz.ch>
2202
2203         * dwarf2out.c (expand_builtin_dwarf_sp_column): Make dwarf_regnum
2204         unsigned to fix signed/unsigned comparison issue in
2205         DWARF2_FRAME_REG_OUT.
2206         (expand_builtin_init_dwarf_reg_sizes): Make i unsigned to fix signed/
2207         unsigned comparison issue in DWARF2_FRAME_REG_OUT.
2208
2209         * tree-ssa-operands.c (finalize_ssa_def_ops): Move the declaration
2210         of ptr into the ENABLE_CHECKING section.
2211
2212 2006-03-08  Jeff Law  <law@redhat.com>
2213
2214         * tree-vrp.c (infer_value_range): Only count pointer uses
2215         and dereferences if -fdelete-null-pointer-checks is enabled.
2216
2217         * tree-vrp.c (find_assert_locations): Infer value ranges for
2218         single use pointers, but do not create ASSERT_EXPRs for them.
2219         When a non-null range is inferred for a pointer, backwards
2220         propagate that range to other equivalent pointers through the
2221         use-def chain.
2222
2223 2006-03-08  Paolo Bonzini  <bonzini@gnu.org>
2224
2225         PR bootstrap/26500
2226         * Makefile.in (dvi, html, install-info): Invoke the corresponding
2227         language hook targets.
2228         * ada/Make-lang.in, cp/Make-lang.in, objc/Make-lang.in,
2229         objcp/Make-lang.in: Create stub rules for dvi, html, install-info
2230         if language hook targets were missing.
2231
2232 2006-03-07  Zdenek Dvorak <dvorakz@suse.cz>
2233
2234         * tree-ssa-opfinalize.h: Removed.
2235         * Makefile.in (tree-ssa-operands.o): Remove tree-ssa-opfinalize.h
2236         dependency.
2237         * tree-ssa-operands.c: Do not include tree-ssa-opfinalize.h.
2238         (ALLOC_OPTYPE, APPEND_OP_AFTER, MOVE_HEAD_AFTER, MOVE_HEAD_TO_FREELIST,
2239         INITIALIZE_USE, add_def_op, add_use_op, add_vuse_op, add_maydef_op,
2240         add_mustdef_op, finalize_ssa_def_ops, finalize_ssa_use_ops,
2241         finalize_ssa_v_may_def_ops, finalize_ssa_vuse_ops,
2242         finalize_ssa_v_must_def_ops): New.
2243
2244 2006-03-07  Kenneth Zadeck <zadeck@naturalbridge.com>
2245
2246         * df-scan.c: (df_bb_refs_record): Fix obvious typo with wrong
2247         block as parameter.
2248
2249 2006-03-07  Geoffrey Keating  <geoffk@apple.com>
2250
2251         * varasm.c (assemble_end_function): Say that 'fnname' is unused.
2252
2253         * config/i386/i386.c (ix86_delegitimize_address): Handle Darwin
2254         addresses with offsets; reorganize.
2255
2256         * dwarf2out.c (DWARF2_FRAME_REG_OUT): Move up in file.
2257         (expand_builtin_dwarf_sp_column): Call DWARF2_FRAME_REG_OUT.
2258         (expand_builtin_init_dwarf_reg_sizes): Likewise.
2259
2260 2006-03-08  David Billinghurst <David.Billinghurst@riotinto.com>
2261
2262         PR target/26588
2263         * config/i386/cygwin.h (GOMP_SELF_SPECS): Define.
2264
2265 2006-03-08  Ben Elliston  <bje@au.ibm.com>
2266
2267         * config/fp-bit.h (CMPtype): Typedef to a word mode integer.
2268
2269 2006-03-07  Aldy Hernandez  <aldyh@redhat.com>
2270
2271         PR gomp/26238
2272         * doc/passes.texi (Tree-SSA passes): Document omp lowering and
2273         expansion.
2274
2275 2006-03-07  Richard Guenther  <rguenther@suse.de>
2276
2277         PR tree-optimization/26587
2278         * tree-ssa-structalias.c (handle_ptr_arith): Handle MINUS_EXPR.
2279
2280 2006-03-07  Richard Sandiford  <richard@codesourcery.com>
2281
2282         * varasm.c (assemble_variable): Fix setting of DECL_IN_TEXT_SECTION.
2283
2284 2006-03-07  Richard Sandiford  <richard@codesourcery.com>
2285
2286         * hooks.c (hook_bool_mode_rtx_true): New function.
2287         * hooks.h (hook_bool_mode_rtx_true): Declare.
2288         * toplev.c (compile_file): Call output_shared_constant_pool.
2289         * varasm.c (shared_constant_pool): New variable.
2290         (assemble_start_function, assemble_end_function): Remove arguments
2291         from call to output_constant_pool.
2292         (create_constant_pool): New function, split out from...
2293         (init_varasm_status): ...here.
2294         (force_const_mem): Choose between the shared and per-function constant
2295         pools.  Set current_function_uses_const_pool when reusing old entries
2296         as well as when creating new ones.
2297         (mark_constant): Ignore data argument.
2298         (mark_constants): Remove pool argument.
2299         (mark_constant_pool): Likewise.  Use current_function_uses_const_pool
2300         to decide whether the function uses a constant pool.
2301         (output_constant_pool_contents): New function, split out from...
2302         (output_constant_pool): ...here.
2303         (output_shared_constant_pool): New function.
2304         (init_varasm_once): Initialize shared_constant_pool.
2305         * output.h (output_constant_pool): Delete.
2306         (output_shared_constant_pool): Declare.
2307         * config/s390/s390-protos.h (s390_output_constant_pool): Delete.
2308         * config/i386/i386.c (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Override.
2309
2310 2006-03-06  Nick Clifton  <nickc@redhat.com>
2311
2312         * config/m32r/m32r.h (OPTIMIZATION_OPTIONS): Remove reference to
2313         flag_strength_reduce.
2314
2315 2006-03-06  Ben Elliston  <bje@au.ibm.com>
2316
2317         * config.gcc: Add t-dfprules to $tmake_file for i*86-*-linux* and
2318         x86_64-*-linux* configurations.
2319
2320         * config/dfp-bit.h (CMPtype): Typedef to a word mode integer.
2321         (LIBGCC2_WORDS_BIG_ENDIAN): Define.
2322
2323 2006-03-05  Kazu Hirata  <kazu@codesourcery.com>
2324
2325         * tree-ssa-threadupdate.c (rediscover_loops_after_threading):
2326         Remove.
2327         * basic-block.h: Remove the extern for
2328         rediscover_loops_after_threading.
2329
2330         * cfgloop.c (cancel_loop): Make it static.
2331         * cfgloop.h: Remove the prototype for cancel_loop.
2332
2333         * flow.c (recompute_reg_usage): Make it static.
2334         * rtl.h: Remove the prototype for recompute_reg_usage.
2335
2336         * function.c (use_return_register): Make it static.
2337         * function.h: Remove the prototype.
2338
2339 2006-03-05  Kazu Hirata  <kazu@codesourcery.com>
2340
2341         * recog.c (volatile_mem_p, validate_change_maybe_volatile):
2342         Remove.
2343         * recog.h: Remove the prototype for
2344         validate_change_maybe_volatile.
2345
2346 2006-03-05  Kazu Hirata  <kazu@codesourcery.com>
2347
2348         * rtlanal.c (replace_reg): Remove.
2349         * rtl.h: Remove the prototype for replace_reg.
2350
2351 2006-03-05  Kazu Hirata  <kazu@codesourcery.com>
2352
2353         * regclass.c (reg_scan_update): Remove.
2354         (reg_scan_mark_refs): Remove the last argument.
2355         * rtl.h: Remove the prototype for reg_scan_update.
2356
2357 2006-03-04  Kazu Hirata  <kazu@codesourcery.com>
2358
2359         * builtins.c, c-pragma.h, c-typeck.c, cgraph.c, cgraphunit.c,
2360         combine.c, common.opt, config/dfp-bit.c, config/i386/i386.c,
2361         config/m68k/m68k.c, config/m68k/m68k.md, config/mt/mt.c,
2362         config/mt/mt.h, config/s390/s390.md, df-core.c, df-problems.c,
2363         df-scan.c, df.h, diagnostic.c, expr.c, function.h, gimplify.c,
2364         loop-invariant.c, omp-low.c, opts.c, passes.c,
2365         rtl-factoring.c, rtlanal.c, struct-equiv.c, tree-cfgcleanup.c,
2366         tree-ssa-loop-niter.c, tree-ssa-loop-prefetch.c,
2367         tree-ssa-structalias.c, tree-ssa-threadedge.c,
2368         tree-ssa-threadupdate.c, tree-vect-patterns.c,
2369         tree-vect-transform.c, tree-vectorizer.h, tree-vrp.c,
2370         unwind-dw2.c: Fix comment typos.  Follow spelling conventions.
2371
2372 2006-03-04  Kazu Hirata  <kazu@codesourcery.com>
2373
2374         * dwarf2out.c (dwarf2out_add_library_unit_info): Remove.
2375         * dwarf2out.h: Remove the prototype for
2376         dwarf2out_add_library_unit_info.
2377
2378 2006-03-04  Kazu Hirata  <kazu@codesourcery.com>
2379
2380         * tree.c (add_var_to_bind_expr): Remove.
2381         * tree.h: Remove the prototype for add_var_to_bind_expr.
2382
2383 2006-03-04  Kazu Hirata  <kazu@codesourcery.com>
2384
2385         * regclass.c (n_non_fixed_regs): Remove.
2386         (init_reg_sets_1, globalize_reg): Remove all uses of
2387         n_non_fixed_regs.
2388         * hard-reg-set.h: Remove the extern for n_non_fixed_regs.
2389
2390 2006-03-04  Kazu Hirata  <kazu@codesourcery.com>
2391
2392         * rtlanal.c (insns_safe_to_move_p): Remove.
2393         * rtl.h: Remove the prototype for insns_safe_to_move_p.
2394
2395 2006-03-04  Kazu Hirata  <kazu@codesourcery.com>
2396
2397         * expmed.c (expand_mult_add): Remove.
2398         * expr.h: Remove the prototype for expand_mult_add.
2399
2400 2006-03-04  Jakub Jelinek  <jakub@redhat.com>
2401
2402         * unwind-dw2.h (_Unwind_FrameState): Add REG_SAVED_VAL_OFFSET
2403         and REG_SAVED_VAL_EXP constants.
2404         * unwind-dw2.c (struct _Unwind_Context): Add by_value array.
2405         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
2406         Handle regs stored by value.
2407         (_Unwind_SetGRValue, _Unwind_GRByValue): New functions.
2408         (execute_cfa_program): Handle DW_CFA_val_offset,
2409         DW_CFA_val_offset_sf and DW_CFA_val_expression.
2410         (uw_update_context_1): Handle REG_SAVED_REG with regs stored by
2411         value specially.  Handle REG_SAVED_VAL_OFFSET and REG_SAVED_VAL_EXP.
2412         (uw_install_context_1): Handle target regs stored by value.
2413
2414 2006-03-03  Daniel Berlin  <dberlin@dberlin.org>
2415
2416         * tree-sra.c (tree_sra): Return todoflags;
2417         (generate_one_element): Set TODO_update_smt_usage if needed.
2418         (pass_sra): Remove TODO_update_smt_usage.
2419         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Add some
2420         parameter.
2421         (tree_ssa_forward_propagate_single_use_vars): Return
2422         TODO_update_smt_usage if we need to update SMT usage.
2423         (pass_forwprop): Remove TODO_update_smt_usage.
2424         
2425 2006-03-03  Diego Novillo  <dnovillo@redhat.com>
2426
2427         * tree-ssa-operands.c: Tidy whitespace.  Fix spelling.
2428         (correct_use_link): Remove reference to get_stmt_operands.
2429         (update_stmt_operands): Likewise.
2430         (get_modify_expr_operands): New function factored out of
2431         parse_ssa_operands and get_expr_operands.
2432         Try to create V_MUST_DEFs for LHS by default.
2433         (get_expr_operands) <case MODIFY_EXPR>: Call
2434         get_modify_expr_operands.
2435         <case ARRAY_RANGE_REF>: Handle together with ARRAY_REF.
2436         <case BIT_FIELD_REF>: Clear opf_kill_def from FLAGS.
2437         (parse_ssa_operands) <case MODIFY_EXPR>: Call
2438         get_modify_expr_operands.
2439
2440 2006-03-03  Kazu Hirata  <kazu@codesourcery.com>
2441
2442         * tree-dfa.c (referenced_var_lookup_if_exists): Remove.
2443         * tree-flow.h: Remove the prototype for
2444         referenced_var_lookup_if_exists.
2445
2446 2006-03-03  Steve Ellcey  <sje@cup.hp.com>
2447
2448         PR rtl-optimization/26345
2449         PR target/19061
2450         * config/ia64/predicates.md (basereg_operand): Don't look in subregs.
2451
2452 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2453
2454         PR tree-optimization/26524
2455         * tree-scalar-evolution.c (interpret_rhs_modify_expr): Use
2456         fold_convert to create a constant of the appropriate type.
2457
2458 2006-03-03  Richard Sandiford  <richard@codesourcery.com>
2459
2460         * doc/tm.texi: Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of
2461         SYMBOL_REF_IN_BLOCK_P.
2462         * doc/rtl.texi: Likewise.  Refer to SYMBOL_FLAG_HAS_BLOCK_INFO instead
2463         of SYMBOL_FLAG_IN_BLOCK.
2464         * gengtype.c (adjust_field_rtx_def): Use SYMBOL_REF_HAS_BLOCK_INFO_P
2465         instead of SYMBOL_REF_IN_BLOCK_P.
2466         * explow.c (use_anchored_address): Likewise.
2467         * rtl.c (rtx_size): Likewise.
2468         * varasm.c (create_block_symbol): Set SYMBOL_FLAG_HAS_BLOCK_INFO
2469         instead of SYMBOL_FLAG_IN_BLOCK.
2470         (make_decl_rtl): Use SYMBOL_REF_HAS_BLOCK_INFO_P instead of
2471         SYMBOL_REF_IN_BLOCK_P.
2472         (assemble_variable): Likewise.
2473         (output_constant_def_contents): Likewise.
2474         (output_constant_pool): Likewise.
2475         (default_encode_section_info): Preserve SYMBOL_FLAG_HAS_BLOCK_INFO
2476         instead of SYMBOL_FLAG_IN_BLOCK.
2477         * rtl.h (block_symbol): Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of
2478         SYMBOL_REF_IN_BLOCK_P.
2479         (SYMBOL_REF_BLOCK): Likewise.
2480         (SYMBOL_REF_OFFSET): Likewise.
2481         (BLOCK_SYMBOL_CHECK): Use SYMBOL_REF_HAS_BLOCK_INFO_P instead of
2482         SYMBOL_REF_IN_BLOCK_P.
2483         (SYMBOL_FLAG_IN_BLOCK): Replace with...
2484         (SYMBOL_FLAG_HAS_BLOCK_INFO): ...this.
2485         (SYMBOL_REF_IN_BLOCK_P): Replace with...
2486         (SYMBOL_REF_HAS_BLOCK_INFO_P): ...this.
2487
2488 2006-03-03  Jakub Jelinek  <jakub@redhat.com>
2489
2490         * config/arm/unwind-arm.h (_Unwind_GetIPInfo): Fix pasto.
2491
2492 2006-03-02  Roger Sayle  <roger@eyesopen.com>
2493
2494         * simplify-rtx.c (simplify_unary_operation): When simplifying
2495         (neg (lt X 0)) into (ashiftrt X C) or (lshiftrt X C), make sure
2496         that we perform the right shift in the appropriate mode, and
2497         then extend or truncate the result to requested mode.
2498
2499 2006-03-03  Zdenek Dvorak <dvorakz@suse.cz>
2500
2501         * gengtype.c (main): Handle double_int type.
2502         * tree.h (struct tree_int_cst): Make type of int_cst double_int.
2503         * double-int.c: New file.
2504         * double-int.h: New file.
2505         * system.h: Include doubleint.h.
2506         * Makefile.in (SYSTEM_H): Include double-int.h.
2507         (double-int.o): Add.
2508
2509 2006-03-03  Joseph S. Myers  <joseph@codesourcery.com>
2510
2511         PR bootstrap/26478
2512         * Makefile.in (stmp-int-hdrs): Remove include/unwind.h before
2513         copying over it.
2514
2515 2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>
2516
2517         * tree-vrp.c (remove_range_assertions): Do not update statements
2518         unnecessarily.
2519
2520 2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>
2521
2522         * cse.c (rest_of_handle_cse): Do not pass CLEANUP_PRE_LOOP to cfg
2523         cleanup.
2524         * gcse.c (rest_of_handle_gcse): Ditto.
2525         * except.c (gate_handle_eh): Ditto.
2526         * cfgcleanup.c (rest_of_handle_jump2): Ditto.
2527         * basic-block.h (CLEANUP_PRE_LOOP): Remove.
2528
2529 2006-03-02  Eric Christopher  <echristo@apple.com>
2530
2531         * config/i386/i386.c (machopic_output_stub): Add indirection to
2532         jump.
2533
2534 2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>
2535
2536         * loop.c: Removed.
2537
2538 2006-03-02  David S. Miller  <davem@sunset.davemloft.net>
2539
2540         Sun Niagara specific optimizations.
2541         * config.gcc: Recognize niagara as target.
2542         * config/sparc/sparc.h (SPARC_RELAXED_ORDERING): Mention Niagara.
2543         (TARGET_CPU_niagara): Define.
2544         (CPP_CPU64_DEFAULT_SPEC): Define __sparc_v9__ for Niagara.
2545         (ASM_CPU64_DEFAULT_SPEC): Pass -Av9b for Niagara.
2546         (CPP_CPU_SPEC): Handle -mcpu=niagara.
2547         (ASM_CPU_SPEC): Likewise.
2548         (PROCESSOR_NIAGARA): New enum entry.
2549         (REGISTER_MOVE_COST): Handle Niagara.
2550         (BRANCH_COST, PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES): Likewise.
2551         * config/sparc/sparc.c (niagara_costs): New processor_costs entry.
2552         (sparc_override_options): Recognize "niagara", set appropriate
2553         default MASK_* values for it, and align functions to 32-bytes
2554         by default just like ULTRASPARC/ULTRASPARC3.
2555         (sparc_initialize_trampoline): Handle niagara like ultrasparc.
2556         (sparc64_initialize_trampoline): Likewise.
2557         (sparc_use_sched_lookahead): Use zero for niagara.
2558         (sparc_issue_rate): Use one for niagara.
2559         * config/sparc/niagara.md: New file.
2560         * config/sparc/sparc.md: Include it.
2561         * config/sparc/sol2-bi.h (CPP_CPU64_DEFAULT_SPEC,
2562         ASM_CPU32_DEFAULT_SPEC, ASM_CPU64_DEFAULT_SPEC): Set appropriately
2563         when default cpu is niagara.
2564         (CPP_CPU_SPEC): Handle -mcpu=niagara.
2565         (ASM_CPU_SPEC): Likewise.
2566         * config/sparc/sol2.h (ASM_CPU_DEFAULT_SPEC): Set appropriately
2567         when default cpu is niagara.
2568         (ASM_CPU_SPEC): Handle -mcpu=niagara.
2569         * config/sparc/linux64.h: Handle a default of TARGET_CPU_niagara
2570         just like v9/ultrasparc/ultrasparc3.
2571         * doc/invoke.texi: Add documentation for "niagara" and improve
2572         existing documentation for ultrasparc variants.
2573
2574 2006-03-02  Diego Novillo  <dnovillo@redhat.com>
2575
2576         * tree-ssa-operands.c (update_stmt_operands): Update documentation.
2577
2578 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
2579
2580         * doc/tm.texi (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Document.
2581         (ASM_OUTPUT_BSS): Describe the two ways of handling global BSS,
2582         and say that only one is needed.
2583         * doc/rtl.texi (SYMBOL_REF_BLOCK): Say that the block can be null.
2584         * target.h (have_switchable_bss_sections): New hook.
2585         * explow.c (use_anchored_address): Check that the symbol is in a block.
2586         * varasm.c (tls_comm_section, comm_section, lcomm_section)
2587         (bss_noswitch_section): New variables.
2588         (get_unnamed_section): Add SECTION_UNNAMED to the flags.
2589         (get_noswitch_section): New function.
2590         (get_block_for_section): Allow SECT to be null.
2591         (unlikely_text_section_p): Use SECTION_STYLE.
2592         (bss_initializer_p): New function.
2593         (get_variable_section): Move earlier in file.  Take a new argument,
2594         prefer_noswitch_p.  Move bss checks from assemble_variable to here.
2595         Return one of the new *_sections in such cases.
2596         (get_block_for_decl): New function, extracting some logic from
2597         use_blocks_for_decl_p.
2598         (change_symbol_section): Remove in favor of...
2599         (change_symbol_block): ...this new function.
2600         (use_blocks_for_decl_p): Remove checks now performed by
2601         get_block_for_decl.
2602         (make_decl_rtl): Use change_symbol_block and get_block_for_decl.
2603         (ASM_EMIT_LOCAL, ASM_EMIT_BSS, ASM_EMIT_COMMON): Delete in favor of...
2604         (emit_local, emit_bss, emit_common): ...these new functions.
2605         Return true if the alignment was honored.
2606         (emit_tls_common): New function.
2607         (asm_emit_uninitialised): Delete.
2608         (assemble_variable_noswitch): New function, split out from...
2609         (assemble_variable): ...here.  Don't make decisions about common
2610         variables here.  Globalize all public decls that go into non-common
2611         sections.  Check whether SYMBOL_REF_BLOCK is null.
2612         (output_constant_def_contents): Check whether SYMBOL_REF_BLOCK is null.
2613         (output_constant_pool): Likewise.
2614         (init_varasm_once): Initialize the new section variables.
2615         (have_global_bss_p): New function.
2616         (categorize_decl_for_section): Use bss_initializer_p.
2617         (switch_to_section): Use SECTION_STYLE.  Abort for SECTION_NOSWITCH.
2618         (place_block_symbol): Assert that the symbol must be in a block.
2619         * target-def.h (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): New macro.
2620         (TARGET_INITIALIZER): Include it.
2621         * rtl.h (SYMBOL_REF_BLOCK): Document the null alternative.
2622         * output.h (SECTION_STYLE_MASK, SECTION_COMMON): New macros.
2623         (SECTION_MACH_DEP): Bump by two.
2624         (SECTION_UNNAMED, SECTION_NOSWITCH): New macros.
2625         (unnamed_section): Mention SECTION_UNNAMED in comment.
2626         (named_section): Likewise SECTION_NAMED.
2627         (noswitch_section_callback): New type.
2628         (noswitch_section): New structure.
2629         (section): Add a noswitch_section alternative.
2630         (SECTION_STYLE): New macro.
2631         (tls_comm_section, comm_section, lcomm_section): Declare.
2632         (bss_noswitch_section, have_global_bss_p): Declare.
2633         * config/elfos.h (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Override.
2634         * config/iq2000/iq2000.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS):
2635         Override.
2636         * config/v850/v850.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Override.
2637         * config/stormy16/stormy16.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS):
2638         Override.
2639
2640 2006-03-02  Daniel Berlin <dberlin@dberlin.org>
2641
2642         * gcc/tree-vrp.c (execute_vrp): Return value.
2643         * gcc/regrename.c (rest_of_handle_regrename): Ditto.
2644         * gcc/tree-into-ssa.c (rewrite_into_ssa): Ditto.
2645         * gcc/tree-complex.c (tree_lower_complex): Ditto.
2646         (tree_lower_complex_O0): Ditto.
2647         * gcc/tracer.c (rest_of_handle_tracer): Ditto.
2648         * gcc/postreload-gcse.c (rest_of_handle_gcse2): Ditto.
2649         * gcc/postreload.c (rest_of_handle_postreload): Ditto.
2650         * gcc/tree-tailcall.c (execute_tail_recursion): Ditto.
2651         (execute_tail_calls): Ditto.
2652         * gcc/tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2653         * gcc/tree.h (init_function_for_compilation): Ditto.
2654         * gcc/ipa-cp.c (ipcp_driver): Ditto.
2655         * gcc/tree-scalar-evolution.c (scev_const_prop): Ditto.
2656         * gcc/tree-scalar-evolution.h (scev_const_prop): Ditto.
2657         * gcc/final.c (compute_alignments): Ditto.
2658         (rest_of_handle_final): Ditto.
2659         (rest_of_handle_shorten_branches): Ditto.
2660         (rest_of_clean_state): Ditto.
2661         * gcc/omp-low.c (execute_expand_omp): Ditto.
2662         (execute_lower_omp): Ditto.
2663         * gcc/tree-ssa-dse.c (tree_ssa_dse): Ditto.
2664         * gcc/ipa-reference.c (static_execute): Ditto.
2665         * gcc/tree-ssa-uncprop.c (tree_ssa_uncprop): Ditto.
2666         * gcc/reorg.c (rest_of_handle_delay_slots): Ditto.
2667         (rest_of_handle_machine_reorg): Ditto.
2668         * gcc/cgraphunit.c (rebuild_cgraph_edges): Ditto.
2669         * gcc/flow.c (recompute_reg_usage): Ditto.
2670         (rest_of_handle_remove_death_notes): Ditto.
2671         (rest_of_handle_life): Ditto.
2672         (rest_of_handle_flow2): Ditto.
2673         * gcc/tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
2674         * gcc/tree-ssa-ccp.c (do_ssa_ccp): Ditto.
2675         (do_ssa_store_ccp): Ditto.
2676         (execute_fold_all_builtins): Ditto.
2677         * gcc/mode-switching.c (rest_of_handle_mode_switching): Ditto.
2678         * gcc/modulo-sched.c (rest_of_handle_sms): Ditto.
2679         * gcc/ipa-pure-const.c (static_execute): Ditto.
2680         * gcc/cse.c (rest_of_handle_cse): Ditto.
2681         (rest_of_handle_cse2): Ditto.
2682         * gcc/web.c (rest_of_handle_web): Ditto.
2683         * gcc/tree-stdarg.c (execute_optimize_stdarg): Ditto.
2684         * gcc/tree-ssa-math-opts.c (execute_cse_reciprocals): Ditto.
2685         * gcc/tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
2686         * gcc/tree-nrv.c (tree_nrv): Ditto.
2687         (execute_return_slot_opt): Ditto.
2688         * gcc/tree-ssa-alias.c (compute_may_aliases): Ditto.
2689         (create_structure_vars): Ditto.
2690         * gcc/loop-init.c (rtl_loop_init): Ditto.
2691         (rtl_loop_done): Ditto.
2692         (rtl_move_loop_invariants): Ditto.
2693         (rtl_unswitch): Ditto.
2694         (rtl_unroll_and_peel_loops): Ditto.
2695         (rtl_doloop): Ditto.
2696         * gcc/gimple-low.c (lower_function_body): Ditto.
2697         (mark_used_blocks): Ditto.
2698         * gcc/tree-ssa-sink.c (execute_sink_code): Ditto.
2699         * gcc/ipa-inline.c (cgraph_decide_inlining): Ditto.
2700         (cgraph_early_inlining): Ditto.
2701         * gcc/global.c (rest_of_handle_global_alloc): Ditto.
2702         * gcc/jump.c (cleanup_barriers): Ditto.
2703         (purge_line_number_notes): Ditto.
2704         * gcc/ifcvt.c (rest_of_handle_if_conversion): Ditto.
2705         (rest_of_handle_if_after_reload): Ditto.
2706         * gcc/tree-ssa-loop.c (tree_ssa_loop_init): Ditto.
2707         (tree_ssa_loop_im): Ditto.
2708         (tree_ssa_loop_unswitch): Ditto.
2709         (tree_vectorize): Ditto.
2710         (tree_linear_transform): Ditto.
2711         (tree_ssa_loop_ivcanon): Ditto.
2712         (tree_ssa_empty_loop): Ditto.
2713         (tree_ssa_loop_bounds): Ditto.
2714         (tree_complete_unroll): Ditto.
2715         (tree_ssa_loop_prefetch): Ditto.
2716         (tree_ssa_loop_ivopts): Ditto.
2717         (tree_ssa_loop_done): Ditto.
2718         * gcc/predict.c (tree_estimate_probability): Ditto.
2719         * gcc/recog.c (split_all_insns_noflow): Ditto.
2720         (rest_of_handle_peephole2): Ditto.
2721         (rest_of_handle_split_all_insns): Ditto.
2722         * gcc/tree-eh.c (lower_eh_constructs): Ditto.
2723         * gcc/regmove.c (rest_of_handle_regmove): Ditto.
2724         (rest_of_handle_stack_adjustments): Ditto.
2725         * gcc/local-alloc.c (rest_of_handle_local_alloc): Ditto.
2726         * gcc/function.c (instantiate_virtual_regs): Ditto.
2727         (init_function_for_compilation): Ditto.
2728         (rest_of_handle_check_leaf_regs): Ditto.
2729         * gcc/gcse.c (rest_of_handle_jump_bypass): Ditto.
2730         (rest_of_handle_gcse): Ditto.
2731         * gcc/ipa-type-escape.c (type_escape_execute): Ditto.
2732         * gcc/alias.c (rest_of_handle_cfg): Ditto.
2733         * gcc/tree-if-conv.c (main_tree_if_conversion): Ditto.
2734         * gcc/profile.c (rest_of_handle_branch_prob): Ditto.
2735         * gcc/tree-ssa-phiopt.c (tree_ssa_phiopt): Ditto.
2736         * gcc/rtl-factoring.c (rest_of_rtl_seqabstr): Ditto.
2737         * gcc/bt-load.c (rest_of_handle_branch_target_load_optimize): Ditto
2738         * gcc/tree-dfa.c (find_referenced_vars): Ditto.
2739         * gcc/except.c (set_nothrow_function_flags): Ditto.
2740         (convert_to_eh_region_ranges): Ditto.
2741         (rest_of_handle_eh): Ditto.
2742         * gcc/emit-rtl.c (unshare_all_rtl): Ditto.
2743         (remove_unnecessary_notes): Ditto.
2744         * gcc/except.h (set_nothrow_function_flags): Ditto.
2745         (convert_to_eh_region_ranges): Ditto.
2746         * gcc/cfgexpand.c (tree_expand_cfg): Ditto.
2747         * gcc/tree-cfgcleanup.c (merge_phi_nodes): Ditto.
2748         * gcc/tree-ssa-pre.c (do_pre): Ditto.
2749         (execute_fre): Ditto.
2750         * gcc/cfgcleanup.c (rest_of_handle_jump): Ditto.
2751         (rest_of_handle_jump2): Ditto.
2752         * gcc/tree-sra.c (tree_sra): Ditto.
2753         * gcc/tree-mudflap.c (execute_mudflap_function_ops): Ditto.
2754         (execute_mudflap_function_decls): Ditto.
2755         * gcc/tree-ssa-copy.c (do_copy_prop): Ditto.
2756         (do_store_copy_prop): Ditto.
2757         * gcc/ipa-prop.h (ipcp_driver): Ditto.
2758         * gcc/cfglayout.c (insn_locators_initialize): Ditto.
2759         * gcc/tree-ssa-forwprop.c
2760         (tree_ssa_forward_propagate_single_use_vars): Ditto.
2761         * gcc/cfglayout.h (insn_locators_initialize): Ditto.
2762         * gcc/tree-ssa-dce.c (tree_ssa_dce): Ditto.
2763         * gcc/tree-ssa.c (execute_early_warn_uninitialized): Ditto.
2764         (execute_late_warn_uninitialized): Ditto.
2765         * gcc/rtl.h (cleanup_barriers): Ditto.
2766         (split_all_insns_noflow): Ditto.
2767         (purge_line_number_notes): Ditto.
2768         (unshare_all_rtl): Ditto.
2769         (remove_unnecessary_notes): Ditto.
2770         (recompute_reg_usage): Ditto.
2771         (variable_tracking_main): Ditto.
2772         * gcc/integrate.c (emit_initial_value_sets): Ditto.
2773         * gcc/integrate.h (emit_initial_value_sets): Ditto.
2774         * gcc/tree-optimize.c (execute_free_datastructures): Ditto
2775         (execute_free_cfg_annotations): Ditto.
2776         (execute_fixup_cfg): Ditto.
2777         (execute_cleanup_cfg_pre_ipa): Ditto.
2778         (execute_cleanup_cfg_post_optimizing): Ditto.
2779         (execute_init_datastructures): Ditto.
2780         * gcc/tree-object-size.c (compute_object_sizes): Ditto.
2781         * gcc/combine.c (rest_of_handle_combine): Ditto.
2782         * gcc/tree-outof-ssa.c (rewrite_out_of_ssa): Ditto.
2783         * gcc/bb-reorder.c (duplicate_computed_gotos): Ditto.
2784         (rest_of_handle_reorder_blocks): Ditto.
2785         (rest_of_handle_partition_blocks): Ditto.
2786         * gcc/var-tracking.c (variable_tracking_main): Ditto.
2787         * gcc/tree-profile.c (tree_profiling): Ditto.
2788         * gcc/tree-vect-generic.c (expand_vector_operations): Ditto.
2789         * gcc/reg-stack.c (rest_of_handle_stack_regs): Ditto.
2790         * gcc/sched-rgn.c (rest_of_handle_sched): Ditto.
2791         (rest_of_handle_sched2): Ditto.
2792         * gcc/basic-block.h (free_bb_insn): Ditto.
2793         * gcc/tree-ssa-structalias.c (ipa_pta_execute): Ditto.
2794         * gcc/tree-cfg.c (execute_build_cfg): Ditto.
2795         (remove_useless_stmts): Ditto.
2796         (split_critical_edges): Ditto.
2797         (execute_warn_function_return): Ditto.
2798         (execute_warn_function_noreturn): Ditto.
2799         * gcc/tree-ssa-reassoc.c (execute_reassoc): Ditto.
2800         * gcc/cfgrtl.c (free_bb_for_insn): Ditto.
2801         * gcc/passes.c (execute_one_pass): Run additional
2802         todos returned by execute function.
2803         * gcc/tree-pass.h (struct tree_opt_pass): Make execute
2804         return a value.
2805
2806 2006-03-02  Richard Guenther  <rguenther@suse.de>
2807
2808         * tree-ssa-alias.c (find_used_portions): Consider taking
2809         the address as making the variable not write-only.
2810
2811 2006-03-02  Nick Clifton  <nickc@redhat.com>
2812
2813         * config.gcc (default_use_cxa_atexit): Extend the description of
2814         this configure variable.  Set its default value to "yes" for
2815         Linux, NetBSD and ELF targets on the assumption that they will
2816         use C libraries with the __cxa_atexit function.
2817
2818 2006-03-02  Ben Elliston  <bje@au.ibm.com>
2819
2820         * config/rs6000/linux-unwind.h (frob_update_context): Mark `fs'
2821         parameter as unused to suppress a build warning.
2822
2823 2006-03-02  Ben Elliston  <bje@au.ibm.com>
2824
2825         * mklibgcc.in: Depend on config/dfp-bit.h in rules that compile
2826         config/dfp-bit.c.
2827
2828 2006-03-01  Roger Sayle  <roger@eyesopen.com>
2829
2830         PR other/26489
2831         * gthr-posix.h (__gthrw2): Define to take three parameters, the
2832         declared name, the weak reference name, and the typeof name.
2833         (__gthrw): Avoid expanding the declared name suffix.
2834         (__gthrw3): New Tru64 specific macro to simplify the OSF/1 decls.
2835
2836 2006-03-01  Jakub Jelinek  <jakub@redhat.com>
2837
2838         * dwarf2.h (DW_TAG_condition, DW_TAG_shared_type): New constants
2839         from DWARF 3.
2840         (DW_AT_description, DW_AT_binary_scale, DW_AT_decimal_scale,
2841         DW_AT_small, DW_AT_decimal_sign, DW_AT_digit_count,
2842         DW_AT_picture_string, DW_AT_mutable, DW_AT_threads_scaled,
2843         DW_AT_explicit, DW_AT_object_pointer, DW_AT_endianity,
2844         DW_AT_elemental, DW_AT_pure, DW_AT_recursive): New.
2845         (DW_OP_form_tls_address, DW_OP_call_frame_cfa, DW_OP_bit_piece): New.
2846         (DW_ATE_packed_decimal, DW_ATE_numeric_string, DW_ATE_edited,
2847         DW_ATE_signed_fixed, DW_ATE_unsigned_fixed): New.
2848         (DW_DS_unsigned, DW_DS_leading_overpunch, DW_DS_trailing_overpunch,
2849         DW_DS_leading_separate, DW_DS_trailing_separate): New.
2850         (DW_END_default, DW_END_big, DW_END_little): New.
2851         (DW_END_lo_user, DW_END_hi_user): Define.
2852         (DW_LNE_lo_user, DW_LNE_hi_user): Define.
2853         (DW_CFA_val_offset, DW_CFA_val_offset_sf, DW_CFA_val_expression): New.
2854         (DW_LANG_PLI, DW_LANG_ObjC, DW_LANG_ObjC_plus_plus, DW_LANG_UPC,
2855         DW_LANG_D): New.
2856
2857 2006-03-01  Diego Novillo  <dnovillo@redhat.com>
2858
2859         * tree.def (SYMBOL_MEMORY_TAG): Rename from TYPE_MEMORY_TAG.
2860         Update all users.
2861         * tree-pass.h (PROP_smt_usage): Rename from PROP_tmt_usage.
2862         Update all users.
2863         (TODO_update_smt_usage): Rename from TODO_update_tmt_usage.
2864         Update all users.
2865         * tree.h (SMT_USED_ALONE): Rename from TMT_USED_ALONE.
2866         Update all users.
2867         * tree-flow.h (struct var_ann_d): Rename field 'type_mem_tag'
2868         to 'symbol_mem_tag'.
2869         Update all users.
2870         * doc/tree-ssa.texi: Update documentation to reflect TMT->SMT
2871         rename.
2872
2873 2006-03-01  Roger Sayle  <roger@eyesopen.com>
2874
2875         * builtins.c (fold_builtin_copysign): Delete unreachable code.
2876
2877 2006-03-01  Andrew Pinski  <pinskia@physics.uc.edu>
2878
2879         PR target/25761
2880         * config/darwin.h (MACHOPIC_JUST_INDIRECT): Check just
2881         MACHO_DYNAMIC_NO_PIC_P.
2882         (MACHOPIC_PURE): Check flag_pic and not MACHO_DYNAMIC_NO_PIC_P.
2883
2884 2006-03-01  Andrew Pinski  <pinskia@physics.uc.edu>
2885
2886         PR target/26389
2887         * config/darwin-protos.h (darwin_asm_output_anchor):
2888         Declare.
2889         * config/darwin-sections.def (cstring_section):
2890         Add SECTION_MERGE to the flags.
2891         (literal4_section): Likewise.
2892         (literal8_section): Likewise.
2893         (objc_selector_refs_section): Likewise.
2894         (objc_cls_refs_section): Likewise.
2895         * config/darwin.c (darwin_asm_output_anchor): New
2896         function.
2897         * config/darwin.h (TARGET_ASM_OUTPUT_ANCHOR): Define.
2898
2899 2006-03-01  Daniel Berlin  <dberlin@dberlin.org>
2900
2901         Fix PR tree-optimization/26443
2902         * tree-vrp.c (pass_vrp): Add TODO_update_tmt_usage
2903         to todo and PROP_tmt_usage to properties_destroyed.
2904         * tree-ssa-ccp.c (pass_ccp): Ditto.
2905         (pass_store_ccp): Ditto.
2906         * tree-ssa-dom.c (pass_dominator): Ditto.
2907
2908 2006-03-01  Diego Novillo  <dnovillo@redhat.com>
2909
2910         * tree-ssa-operands.c: Cleanup whitespace.
2911         (get_asm_expr_operands): Move before first invocation.
2912         (get_indirect_ref_operands): Likewise.
2913         (get_tmr_operands): Likewise.
2914         (get_call_expr_operands): Likewise.
2915         (append_def): Likewise.
2916         (append_use): Likewise.
2917         (append_v_may_def): Likewise.
2918         (append_v_must_def): Likewise.
2919         (add_call_clobber_ops): Likewise.
2920         (add_call_read_ops): Likewise.
2921         (add_stmt_operand): Likewise.
2922         (add_virtual_operand): Likewise.
2923         (build_ssa_operands): Likewise.
2924
2925 2006-03-01  Andrew Pinski  <pinskia@physics.uc.edu>
2926
2927         PR middle-end/26022
2928         Revert:
2929         PR middle-end/24437
2930         * tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
2931         with a call expr to ...
2932         * fold-const.c (fold_ternary) <case CALL_EXPR>: Here.
2933
2934 2006-03-01  Diego Novillo  <dnovillo@redhat.com>
2935
2936         * tree-vrp.c (extract_range_from_assert): Remove special
2937         handling for types with super-types.
2938
2939 2006-03-01  Ben Elliston  <bje@au.ibm.com>
2940
2941         * config.gcc: Add t-dfprules to $tmake_file for powerpc-*-linux*
2942         and powerpc64-*-linux* configurations.
2943         * config/t-dfprules: New file.
2944
2945         * mklibgcc.in: Add logic to handle $DFP_ENABLE and $DFP_CFLAGS.
2946         Compile dfp-bit.c from the source directory using -DWIDTH and
2947         $DFP_CFLAGS to control the compilation of that file, rather than
2948         generating width-specific versions in the build directory.
2949         * Makefile.in (libgcc.mk): Pass down DFP_ENABLE and DFP_CFLAGS.
2950         (LIBGCC_DEPS): Replace $(D32PBIT) et al with config/dfp-bit.[hc].
2951
2952 2006-02-28  Zack Weinberg  <zackw@panix.com>
2953
2954         * doc/md.texi: Avoid use of @headitem so that makeinfo <4.7
2955         continues to work.
2956
2957 2006-02-28  Eric Christopher  <echristo@apple.com>
2958
2959         * config/rs6000/darwin.h (ENABLE_STACK_EXECUTE): Define.
2960         Set up IN_LIBGCC definition of TARGET_64BIT.
2961         * config/i386/darwin.h (ENABLE_STACK_EXECUTE): Define.
2962
2963 2006-02-28  Roger Sayle  <roger@eyesopen.com>
2964
2965         PR middle-end/14752
2966         * c-common.c (c_common_truthvalue_conversion) <MINUS_EXPR,
2967         BIT_XOR_EXPR, BIT_AND_EXPR>: Delete.  Let fold optimize these
2968         cases via the construction of "expr != 0".
2969
2970 2006-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
2971
2972         * alias.c (alias_invariant, alias_invariant_size): Remove.
2973         (record_base_value): Remove.
2974         (memrefs_conflict_p): Don't look at alias_invariant.
2975         (end_alias_analysis): Don't free it.
2976         * alias.h (record_base_value): Remove prototype.
2977
2978 2006-02-28  Paolo Bonzini  <bonzini@gnu.org>
2979             Adam Nemet  <anemet@caviumnetworks.com>
2980
2981         * rtl.h (truncated_to_mode): Declare it.
2982         (struct rtl_hooks): Add reg_truncated_to_mode hook.
2983         * rtlhooks-def.h (RTL_HOOKS_REG_TRUNCATED_TO_MODE): New macro.
2984         (RTL_HOOKS_INITIALIZER): Include it.
2985         * rtlhooks.c (reg_truncated_to_mode_general): New function.
2986         * combine.c (RTL_HOOKS_REG_TRUNCATED_TO_MODE): Override to
2987         reg_truncated_to_mode.
2988         * rtlanal.c (truncated_to_mode): Define it.
2989         * simplify-rtx.c (simplify_unary_operation_1): Use it.
2990
2991 2006-02-28  Jeff Law  <law@redhat.com>
2992
2993         * tree-chrec.c (chrec_convert_aggressive): Do not eliminate
2994         conversions where TYPE_MIN_VALUE/TYPE_MAX_VALUE do not cover
2995         the range allowed by TYPE_PRECISION.
2996
2997         * tree.h (strct phi_arg_d): Remove unused NONZERO field.
2998
2999 2006-02-28  Dorit Nuzman  <dorit@il.ibm.com>
3000
3001         PR tree-optimization/26419
3002         * doc/invoke.texi (ftree-vectorizer-verbose): Add information on
3003         values of n.
3004
3005 2006-02-27  Zack Weinberg  <zackw@panix.com>
3006
3007         * doc/md.texi: Fix typo in previous change.
3008
3009 2006-02-27  Kenneth Zadeck <zadeck@naturalbridge.com>
3010
3011         * df.c: Remove.
3012
3013 2006-02-27  Zack Weinberg  <zackw@panix.com>
3014
3015         * rtl.def (define_constraint, define_register_constraint)
3016         (define_memory_constraint, define_address_constraint): New MD forms.
3017         * gensupport.c (process_rtx): Put define_constraint etc on the
3018         predicate queue.
3019         * genpreds.c (process_define_predicate): Adjust comment.  Validate
3020         the name, and call validate_exp to validate the expression.
3021         (mark_mode_tests, write_extract_subexp): Can assume correct input.
3022         (write_predicate_expr): Likewise.  NAME argument no longer necessary;
3023         all callers changed.
3024         (validate_exp, needs_variable, struct constraint_data)
3025         (constraints_by_letter_table, first_constraint, last_constraint_ptr)
3026         (FOR_ALL_CONSTRAINTS, generic_constraint_letters, const_int_constraints)
3027         (const_dbl_constraints, constraint_max_namelen)
3028         (have_register_constraints, have_memory_constraints)
3029         (have_address_constraints, have_address_constraints)
3030         (have_extra_constraints, have_const_int_constraints)
3031         (have_const_dbl_constraints, mangle, add_constraint)
3032         (process_define_constraint, process_define_register_constraint)
3033         (write_enum_constraint_num, write_lookup_constraint)
3034         (write_insn_constraint_len, write_regclass_for_constraint)
3035         (write_constraint_satisfied_p, write_insn_const_int_ok_for_constraint)
3036         (write_insn_extra_memory_constraint)
3037         (write_insn_extra_address_constraint)
3038         (write_satisfies_constraint_fns): New.
3039         (write_tm_preds_h): If we have new-style constraint definitions,
3040         prototype the functions generated from them, and define the
3041         old constraint interface (still used by generic code) in terms of
3042         those functions.
3043         (write_insn_preds_c): If we have new-style constraint definitions,
3044         generate all relevant functions from those definitions.
3045         (main): Handle define_constraint etc.
3046         * genoutput.c (struct constraint_data, indep_constraints)
3047         (mdep_constraint_letters, constraints_by_letter_table, note_constraint)
3048         (mdep_constraint_len): New data structures and functions, defined
3049         #ifdef USE_MD_CONSTRAINTS.
3050         (check_constraint_len): Don't define #ifdef USE_MD_CONSTRAINTS.
3051         (validate_insn_alternatives): If USE_MD_CONSTRAINTS is defined,
3052         use new logic to validate operand constraints against constraint
3053         definitions.
3054         (main): Process define_constraint etc. if USE_MD_CONSTRAINTS is
3055         defined.
3056         * defaults.h: If none of the old-style constraint macros are
3057         defined, define USE_MD_CONSTRAINTS; do not provide defaults for any
3058         old-style macros; and poison REG_CLASS_FROM_LETTER,
3059         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P, and
3060         EXTRA_CONSTRAINT.
3061         * recog.c (reg_fits_class_p): If cl is NO_REGS, return 0 immediately.
3062         * doc/md.texi: Document new constraint-definition mechanism and the
3063         C interface it provides.  Remove references to old mechanism
3064         elsewhere in the document.
3065         (Machine Constraints): Use pathnames relative to gcc directory,
3066         i.e. config/ARCH/FILE.  Change i386 section to refer to
3067         config/i386/predicates.md; update that section to match docstrings.
3068         * doc/tm.texi: Move all documentation of the old constraint-
3069         definition macros to their own section, clearly mark as obsolete.
3070
3071         * config/i386/predicates.md (R, q, Q, l, a, b, c, d, S, D, A, f, t)
3072         (u, y, x, Y, I, J, K, L, M, N, O, G, C, e, Z): New constraint
3073         definitions.
3074         * config/i386/i386.h (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P)
3075         (CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
3076         * config/i386/i386.md (*movdf_nointeger): Remove stray 'H' from
3077         constraint strings.
3078         (splits and peepholes): Use satisfies_constraint_*.
3079         * config/i386/i386.c (memory_address_length)
3080         (ix86_attr_length_immediate_default): Use satisfies_constraint_*.
3081
3082 2006-02-27  Daniel Berlin  <dberlin@dberlin.org>
3083
3084         * lambda-code.c (can_convert_to_perfect_nest): Allow any type of
3085         scalar operation to be put back into the loop.
3086
3087 2006-02-27  Jakub Jelinek  <jakub@redhat.com>
3088
3089         PR other/26208
3090         * unwind-dw2.c (struct _Unwind_Context): Add signal_frame field.
3091         (extract_cie_info): Handle S flag in augmentation string.
3092         (execute_cfa_program): If context->signal_frame, execute also
3093         fs->pc == context->ra instructions.
3094         (uw_frame_state_for): If context->signal_frame, don't subtract one
3095         from context->ra to find FDE.
3096         (uw_update_context_1): Set context->signal_frame to
3097         fs->signal_frame.
3098         (_Unwind_GetIPInfo): New function.
3099         * unwind-dw2.h (_Unwind_FrameState): Add signal_frame field.
3100         * unwind-c.c (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead
3101         of _Unwind_GetIP.
3102         * unwind-sjlj.c (_Unwind_GetIPInfo): New function.
3103         * unwind-generic.h (_Unwind_GetIPInfo): New prototype.
3104         * unwind-compat.c (_Unwind_GetIPInfo): New function.
3105         * libgcc-std.ver (_Unwind_GetIPInfo): Export @@GCC_4.2.0.
3106         * config/ia64/unwind-ia64.c (_Unwind_GetIPInfo): New function.
3107         * config/arm/unwind-arm.h (_Unwind_GetIPInfo): Define.
3108         * config/i386/linux-unwind.h (x86_fallback_frame_state,
3109         x86_64_fallback_frame_state): Set fs->signal_frame.
3110         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Likewise.
3111         (MD_FROB_UPDATE_CONTEXT): Define unconditionally.
3112         (frob_update_context): Likewise.  Workaround missing S flag in
3113         Linux 2.6.12 - 2.6.16 kernel vDSOs.
3114         * config/s390/linux-unwind.h (s390_fallback_frame_state): Likewise.
3115         Remove the psw_addr + 1 hack.
3116
3117 2006-02-27  Daniel Berlin  <dberlin@dberlin.org>
3118
3119         * tree-ssa-structalias.c (get_constraint_for): Move code to deal
3120         with aggregates here.
3121         (find_func_aliases): Remove code for &<aggregate> from here.
3122
3123 2006-02-26  Roger Sayle  <roger@eyesopen.com>
3124
3125         * fold-const.c (fold_binary) <EQ_EXPR>:  Fold (~X & C) eq/ne 0 as
3126         (X & C) ne/eq 0, where C is a single bit, i.e. a power of two.
3127         Fold both "((X & C) ^ C) eq/ne 0" and "((X ^ C) & C) eq/ne 0"
3128         as (X & C) ne/eq 0.
3129
3130 2006-02-26  Roger Sayle  <roger@eyesopen.com>
3131
3132         PR middle-end/19983
3133         * real.c (real_nan): Allow both 0x and 0X as hexadecimal prefixes.
3134
3135 2006-02-26  Zdenek Dvorak <dvorakz@suse.cz>
3136
3137         * opts.c (decode_options): Do not handle flag_strength_reduce.
3138         (common_handle_option): Handle OPT_floop_optimize, OPT_frerun_loop_opt
3139         and OPT_fstrength_reduce.
3140         * tree-ssa-loop.c (tree_ssa_loop_prefetch): Only test
3141         flag_prefetch_loop_arrays for being nonzero.
3142         * common.opt (floop-optimize, frerun-loop-opt): Resurrected as
3143         no-ops.
3144         (fprefetch-loop-arrays-rtl): Removed.
3145         (flag_prefetch_loop_arrays): Do not specify the value.
3146
3147         * doc/passes.texi: Update documentation of loop optimizer
3148         passes.
3149         * doc/invoke.texi (-fstrength-reduce, -fprefetch-loop-arrays-rtl,
3150         -frerun-loop-opt): Remove.
3151
3152 2006-02-26  Richard Guenther  <rguenther@suse.de>
3153
3154         PR tree-optimization/26421
3155         * tree-ssa-alias.c (find_used_portions): Don't treat parameters
3156         in function calls that are ADDR_EXPRs as using the whole structure.
3157
3158 2006-02-26  Steven Bosscher  <stevenb.gcc@gmail.com>
3159
3160         * common.opt (-floop-optimize, -frerun-loop-opt): Remove.
3161         * tree-pass.h (pass_loop_optimize): Remove.
3162         * passes.c (pass_loop_optimize): Never run it.
3163         * toplev.c (backend_init): Don't call init_loop.
3164         * opts.c (flag_loop_optimize_set): Remove.
3165         (decode_options): Never set flag_loop_optimize or flag_rerun_loop_opt.
3166         (common_handle_option) <OPT_floop_optimize>: Remove.  Don't disable
3167         the old RTL loop optimizer when profiling enabled.
3168         * predict.c (tree_estimate_probability): Always strip builtin_expect.
3169         * cfgcleanup.c (try_forward_edges): Don't avoid killing loop
3170         pre-headers for the sake of the old RTL loop optimizer.
3171         * Makefile.in: Remove all references to loop.o.
3172
3173         * doc/invoke.texi: Remove all references to -floop-optimize
3174         and -frerun-loop-opt.
3175
3176 2006-02-26  Zack Weinberg  <zackw@panix.com>
3177
3178         * doc/md.texi (Machine Constraints): Refer to all files with paths
3179         relative to gcc directory (i.e. config/CPU/file).  Add missing
3180         @table @code ... @end table to M32C subsection.
3181
3182 2006-02-26  Roger Sayle  <roger@eyesopen.com>
3183
3184         * fold-const.c (fold_binary) <BIT_XOR_EXPR>: Fold (X & 1) ^ 1 as
3185         (X & 1) == 0.
3186         <BIT_AND_EXPR>: Fold (X ^ 1) & 1 and ~X & 1 as (X & 1) == 0.
3187
3188 2006-02-26  Roger Sayle  <roger@eyesopen.com>
3189             James A. Morrison  <phython@gcc.gnu.org>
3190
3191         PR middle-end/21137
3192         * fold-const.c (fold_binary) <EQ_EXPR>:  Fold ((X>>C1)&C2) eq/ne 0,
3193         when C2 is a power of two, as either (X&(C2<<C1)) eq/ne 0 if the
3194         new constant C2<<C1, or as (X<0) or (X,false) depending upon the
3195         signedness of the shift operation.
3196
3197 2006-02-26  Dorit Nuzman  <dorit@il.ibm.com>
3198
3199         PR tree-optimization/26359
3200         * tree-ssa-alias.c (new_type_alias): Set fields for new tag.
3201
3202 2006-02-25  Roger Sayle  <roger@eyesopen.com>
3203
3204         * simplify-rtx.c (simplify_relational_operation_1):  Simplify
3205         (X^Y) == 0 as X == Y and (X^Y) != 0 as X != Y.  Simplify (X^Y) == Y
3206         as X == 0, and some symmetry related transformations.
3207         Simplify (X^C1) == C2 as X == (C1^C2).  Split long comment line.
3208
3209 2006-02-25  Roger Sayle  <roger@eyesopen.com>
3210
3211         PR middle-end/23673
3212         * fold-const.c (fold_binary) <EQ_EXPR>:  Fold (X^Y) == 0 as X == Y
3213         and (X^Y) != 0 as X != Y.  Fold (X^Y) == Y as X == 0, and some
3214         symmetry related transformations.  Fold (X^C1) == C2 as
3215         X == (C1^C2).
3216
3217 2006-02-25  Juergen Weigert  <jw@suse.de>
3218         Richard Guenther  <rguenther@suse.de>
3219
3220         * scan-decls.c (scan_decls): Don't fetch new statement after CPP_EOF.
3221
3222 2006-02-24  Adam Nemet  <anemet@caviumnetworks.com>
3223
3224         * combine.c (gen_lowpart_or_truncate): Call
3225         simplify_gen_unary(TRUNCATE, ...) instead of gen_rtx_TRUNCATE.
3226
3227 2006-02-24  Diego Novillo  <dnovillo@redhat.com>
3228
3229         * doc/invoke.texi: Move -fopenmp description to "Options for
3230         Code Generation".
3231         Remove reference to -lgomp.
3232
3233 2006-02-24  David Edelsohn  <edelsohn@gnu.org>
3234
3235         * doc/install.texi: Require GNU tar version 1.14.
3236
3237 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
3238
3239         * doc/tm.texi (Run-time Target): Document C_COMMON_OVERRIDE_OPTIONS.
3240         * doc/invoke.texi (C++ Dialect Options): Document
3241         -fno-use-cxa-get-exception-ptr.
3242         * configure.ac: Define DEFAULT_USE_CXA_ATEXIT to 2 not 1.
3243         * configure: Regenerate.
3244         * c.opt (fuse-cxa-get-exception-ptr): New.
3245         * c-opts.c (c_common_handle_option): Handle
3246         OPT_fuse_cxa_get_exception_ptr.
3247         * c-common.c (flag_use_cxa_atexit): Update documentation.
3248         (flag_use_cxa_get_exception_ptr): New.
3249         * c-common.h (flag_use_cxa_get_exception_ptr): New.
3250         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Improve
3251         documentation.
3252         (C_COMMON_OVERRIDE_OPTIONS): New.
3253
3254 2006-02-24  Roger Sayle  <roger@eyesopen.com>
3255
3256         PR middle-end/24952
3257         * combine.c (try_combine): Explicitly check whether GET_CODE is
3258         a SET or a CLOBBER, instead on checking that it isn't a USE.
3259
3260 2006-02-24  Roger Sayle  <roger@eyesopen.com>
3261
3262         * fold-const.c (fold_comparison): New subroutine of fold_binary
3263         containing transformations common to both the equality and
3264         ordering relational operators, factored out of fold_binary.
3265         (fold_binary): Separate out the equality operators (EQ_EXPR
3266         and NE_EXPR) from the ordering operators (LT_EXPR, GT_EXPR,
3267         LE_EXPR and GE_EXPR), calling fold_comparison to perform the
3268         transformations common to both.
3269         (fold_div_compare): Fix latent bugs in the previously unreachable
3270         LT_EXPR and GE_EXPR cases.
3271
3272 2006-02-24  David Edelsohn  <edelsohn@gnu.org>
3273
3274         * config/rs6000/rs6000.c (rs6000_init_builtins): Change
3275         decl libname for clog to __clog on AIX.
3276
3277         * config/rs6000/xcoff.h (MAX_OFILE_ALIGNMENT): Define.
3278
3279 2006-02-24  Alan Modra  <amodra@bigpond.net.au>
3280
3281         PR target/26453
3282         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't
3283         output traceback table for thunks.  Localise rs6000_stack_info call.
3284
3285 2006-02-23  Roger Sayle  <roger@eyesopen.com>
3286             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3287
3288         * gthr-posix.h (__gthrw): Fix typo in comment.
3289
3290 2006-02-23  Geoffrey Keating  <geoffk@apple.com>
3291
3292         * doc/cpp.texi (Character sets): Document that we do support
3293         input files to be in any character set.
3294
3295 2006-02-23  Jeff Law  <law@redhat.com>
3296
3297         * tree.h (PHI_ARG_NONZERO): Remove.
3298         * tree-phinodes.c (add_phi_arg): No longer initialize PHI_ARG_NONZERO.
3299         (remove_phi_arg_num): No longer copy PHI_ARG_NONZERO from the old
3300         node to the new node.
3301
3302         PR tree-optimization/26425
3303         * tree-vrp.c (vrp_visit_assignment): If the LHS's type has a NULL
3304         min/max, then assume its varying.
3305
3306 2006-02-23  Zdenek Dvorak <dvorakz@suse.cz>
3307
3308         PR rtl-optimization/26316
3309         * rtlanal.c (enum may_trap_p_flags): New.
3310         (may_trap_p_1): Take flags instead of unaligned_mems argument.  Ignore
3311         MEM_NOTRAP_P if flags & MTP_AFTER_MOVE.
3312         (may_trap_p, may_trap_or_fault_p): Pass flags to may_trap_p_1.
3313         (may_trap_after_code_motion_p): New function.
3314         * loop-invariant.c (find_identical_invariants): Fix dump formating.
3315         (find_invariant_insn): Use may_trap_after_code_motion_p.
3316         * rtl.h (may_trap_after_code_motion_p): Declare.
3317
3318 2006-02-23  Zdenek Dvorak <dvorakz@suse.cz>
3319
3320         * emit-rtl.c (immed_double_const): Cleanup.
3321
3322 2006-02-23  Daniel Berlin  <dberlin@dberlin.org>
3323
3324         Fix PR tree-optimization/26376
3325         * tree-ssa-structalias.c (find_func_aliases):  Use get_id_for_tree,
3326         remove assert.
3327
3328 2006-02-23  Jakub Jelinek  <jakub@redhat.com>
3329
3330         PR middle-end/26412
3331         * gimplify.c (omp_add_variable): Guard variable size decl test with
3332         DECL_SIZE (decl) check.
3333
3334 2006-02-23  Richard Guenther  <rguenther@suse.de>
3335
3336         PR middle-end/26439
3337         * tree-ssa-structalias.c (find_func_aliases): Handle complex types
3338         like aggregate types.
3339
3340 2006-02-23  Jakub Jelinek  <jakub@redhat.com>
3341
3342         * configure.ac: Add --with{,out}-long-double-128 configure option.
3343         (TARGET_DEFAULT_LONG_DOUBLE_128): New test.
3344         * configure: Rebuilt.
3345         * config.in: Rebuilt.
3346         * doc/install.texi (Options specification): Document
3347         --with-long-double-128.
3348
3349         * config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128]
3350         (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
3351         * config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128]
3352         (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
3353
3354 2006-02-23  Aldy Hernandez  <aldyh@redhat.com>
3355
3356         * config/s390/s390.c (override_options): Handle
3357         TARGET_DEFAULT_LONG_DOUBLE_128.
3358
3359         * config/alpha/alpha.c (override_options): Handle
3360         TARGET_DEFAULT_LONG_DOUBLE_128.
3361
3362         * config/sparc/sparc.c (sparc_override_options): Handle
3363         TARGET_DEFAULT_LONG_DOUBLE_128.
3364
3365 2006-02-22  Daniel Jacobowitz  <dan@codesourcery.com>
3366
3367         * Makefile.in (stmp-fixinc): Use real-$(INSTALL_HEADERS_DIR).
3368         (real-install-headers-tar, real-install-headers-cpio)
3369         (real-install-headers-cp): New targets.
3370
3371 2006-02-22  Richard Sandiford  <richard@codesourcery.com>
3372
3373         * tree.h (variable_section): Delete.
3374         * varasm.c (variable_section): Delete.
3375
3376 2006-02-22  Paolo Bonzini  <bonzini@gnu.org>
3377
3378         * install.texi: Add notes on install.texi2html.
3379         (Building in parallel): Do not use footnotes.
3380
3381 2006-02-21  Aldy Hernandez  <aldyh@redhat.com>
3382
3383         PR libgomp/26234
3384         * doc/install.texi (Configuration): Document --disable-libgomp.
3385
3386 2006-02-21  Geoffrey Keating  <geoffk@apple.com>
3387
3388         * config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.
3389
3390 2006-02-21  Alexandre Oliva  <aoliva@redhat.com>
3391
3392         * config/i386/sse.md (vec_extractv2df_1_sse): New.
3393         (vec_extractv2df_0_sse): New.
3394
3395 2006-02-21  Alexandre Oliva  <aoliva@redhat.com>
3396
3397         * defaults.h (CFA_FRAME_BASE_OFFSET): Define.
3398         * config/ia64/ia64.h (CFA_FRAME_BASE_OFFSET): Override.
3399         * doc/tm.texi (CFA_FRAME_BASE_OFFSET): Document.
3400         * dwarf2out.c (build_cfa_loc): New offset parameter.  Add it
3401         to the result of the expression.
3402         (def_cfa_1): Adjust.
3403         (frame_pointer_cfa_offset): Rename to...
3404         (frame_pointer_fb_offset): ... this.  Adjust all uses.
3405         (convert_cfa_to_loc_list): Rename to...
3406         (convert_cfa_to_fb_loc_list): ... this.  New offset parameter.
3407         Pass it on to build_cfa_loc.
3408         (compute_frame_pointer_to_cfa_displacement): Rename to...
3409         (compute_frame_pointer_to_fb_displacement): ... this.  New
3410         offset parameter.  Use it in computation.
3411         (gen_subprogram_die): Compute cfa_fb_offset with the new
3412         macro, and use it to compute the fb loc list and the
3413         displacement.
3414
3415 2006-02-21  Bernd Schmidt  <bernd.schmidt@analog.com>
3416
3417         * config/bfin/predicates.md (cc_operand): Delete predicate.  All uses
3418         replaced with register_operand.
3419         * config/bfin/bfin.c (bfin_register_move_cost): Moving CC to any
3420         non-DREG is expensive.
3421         * config/bfin/bfin.h (FIXED_REGISTERS): CC isn't fixed.
3422         * config/bfin/bfin.md (movbi): Fix constraints and template for moves
3423         involving memory.
3424
3425 2006-02-21  Joseph S. Myers  <joseph@codesourcery.com>
3426
3427         * doc/install.texi2html: Use set -e.
3428
3429 2006-02-21  Richard Sandiford  <richard@codesourcery.com>
3430
3431         * doc/tm.texi (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_BSS)
3432         (ASM_OUTPUT_SHARED_LOCAL): Delete.
3433         * doc/invoke.texi (-fshared-data): Delete.
3434         * common.opt (fshared-data): Delete.
3435         * varasm.c (asm_emit_uninitialised): Remove flag_shared_data handling.
3436         (assemble_static_space): Remove #if 0 code.
3437         * system.h (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_BSS)
3438         (ASM_OUTPUT_SHARED_LOCAL): Poison.
3439         * config/cris/cris.h: Remove FIXME.
3440
3441 2006-02-21  Paolo Bonzini  <bonzini@gnu.org>
3442
3443         * doc/sourcebuild.texi (Front End Directory): No more double-colon
3444         hooks.
3445
3446 2006-02-21  Jakub Jelinek  <jakub@redhat.com>
3447
3448         PR middle-end/26379
3449         * combine.c (simplify_shift_const_1): Disable nested shifts
3450         optimization for vector shifts.
3451
3452 2006-02-20  Roger Sayle  <roger@eyesopen.com>
3453
3454         PR tree-optimization/26361
3455         * tree-vrp.c (extract_range_from_unary_expr): Handle NEGATE_EXPR
3456         of unsigned integer types.
3457
3458 2006-02-20  Sebastian Pop  <pop@cri.ensmp.fr>
3459
3460         * tree-chrec.c (eq_evolutions_p): New.
3461         * tree-chrec.h (eq_evolutions_p): Declared.
3462         * tree-data-ref.c: Fix formatting.
3463         (datadep_stats, dependence_stats): New.
3464         (gcd): Moved...
3465         (print_direction_vector): New.
3466         (dump_data_dependence_relation): Use print_direction_vector.
3467         (object_analysis, create_data_ref): Handle COMPONENT_REF.
3468         (compute_subscript_distance): Static.
3469         (initialize_data_dependence_relation): Static.  Get the number
3470         of loops surrounding the references from the callers, and initialize
3471         DDR_SIZE_VECT to nb_loops.  Use both base_addr_differ_p and
3472         base_object_differ_p analyzers.
3473         (analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
3474         compute_overlap_steps_for_affine_1_2,
3475         analyze_subscript_affine_affine): Count the classified dependences.
3476         Print a message when a test failed.
3477         (can_use_analyze_subscript_affine_affine): New.
3478         (analyze_siv_subscript): Compute the data dependences on symbolic
3479         scevs that verify can_use_analyze_subscript_affine_affine.
3480         (chrec_steps_divide_constant_p): Returns true, false, or unknown.
3481         (analyze_miv_subscript): Update use of chrec_steps_divide_constant_p.
3482         Handle symbolic scevs.
3483         (analyze_overlapping_iterations): Let symbolic affine scevs to be
3484         analyzed.
3485         (subscript_dependence_tester): Moved...
3486         (build_classic_dist_vector, build_classic_dir_vector): Don't use
3487         lambda_vector_clear on newly allocated vectors.  Get nb_loops from
3488         DDR_SIZE_VECT instead of getting it in parameter.
3489         (subscript_dependence_tester): ... here.  Take as a parameter
3490         loop_nest_depth.  Call build_classic_dist_vector and
3491         build_classic_dir_vector.
3492         (compute_affine_dependence): Update subscript_dependence_tester
3493         parameters.  Update datadep_stats counters.  Call
3494         compute_subscript_distance.
3495         (compute_self_dependence): Save the dist and dir vectors.  Call
3496         compute_subscript_distance.
3497         (ddr_p, DEF_VEC_P(ddr_p), DEF_VEC_ALLOC_P(ddr_p,heap)): Moved...
3498         (compute_all_dependences): Reorder parameters as they were before
3499         conversion to VEC.  Pass nb_loops and loop_nest_depth.  Don't call
3500         compute_subscript_distance.  Update the use of
3501         compute_affine_dependence and initialize_data_dependence_relation.
3502         (find_data_references_in_loop): Handle COMPONENT_REF.
3503         (compute_data_dependences_for_loop): Initialize dependence_stats.
3504         Don't call build_classic_dist_vector and build_classic_dir_vector.
3505         Update the parameters of initialize_data_dependence_relation and
3506         compute_all_dependences.  Print the statistics from datadep_stats.
3507         (analyze_all_data_dependences): Static.  Not used until the pass for
3508         checking the data dependences is contributed.
3509         * tree-data-ref.h (ddr_p, DEF_VEC_P(ddr_p),
3510         DEF_VEC_ALLOC_P(ddr_p,heap)): ... here.
3511         (initialize_data_dependence_relation, compute_affine_dependence,
3512         analyze_all_data_dependences, compute_subscript_distance): Removed.
3513         (print_direction_vector): New.
3514         * lambda.h (gcd): ... here.
3515         (lambda_vector_gcd): Moved here from gcd_vector.
3516         * lambda-code.c (gcd, gcd_vector): Removed.
3517         (lambda_compute_target_space): Use lambda_vector_gcd.  Fix formatting.
3518         * Makefile.in (tree-vect-patterns.o): Depends on TREE_DATA_REF_H.
3519
3520 2006-02-20  Diego Novillo  <dnovillo@redhat.com>
3521
3522         * ipa-type-escape.c: Tidy some comments and white space.
3523         * tree-ssa-operands.c: Likewise.
3524
3525 2006-02-20  Andrew Pinski  <pinskia@physics.uc.edu>
3526
3527         PR tree-opt/25879
3528         * tree-pretty-print.c (debug_tree_chain): Walk the chains.
3529         (dump_decl_name): Do not walk the decl tree chains.
3530         * tree-pass.h (TDF_CHAIN): Remove.
3531
3532 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
3533
3534         * Makefile.in (C): Remove
3535         (PROTO): Remove
3536         (.PHONY): Remove C and PROTO
3537
3538 2006-02-20  Roger Sayle  <roger@eyesopen.com>
3539
3540         PR middle-end/26236
3541         * doc/c-tree.texi (INTEGER_TYPE): Remove reference to the now
3542         deprecated CHAR_TYPE tree code.
3543
3544 2006-02-20  Paolo Bonzini  <bonzini@gnu.org>
3545
3546         * configure.ac (target_list): Add install-info, dvi, html.
3547         * configure: Regenerate.
3548
3549         * ada/Make-lang.in, cp/Make-lang.in, fortran/Make-lang.in,
3550         java/Make-lang.in, objc/Make-lang.in, objcp/Make-lang.in,
3551         treelang/Make-lang.in: Do not use double-colon rules.
3552
3553 2006-02-20  Daniel Berlin  <dberlin@dberlin.org>
3554
3555         * tree.h (struct tree_memory_tag): Add is_used_alone member.
3556         (TMT_USED_ALONE): New macro.
3557         * tree-pass.h (PROP_tmt_usage): New property.
3558         (TODO_update_tmt_usage): New todo.
3559         * tree-ssa-alias.c (updating_used_alone): New variable.
3560         (recalculate_used_alone): New function.
3561         (compute_may_aliases): Set updating_used_alone, call
3562         recalculate_used_alone.
3563         * tree-sra.c (pass_sra): Note that this pass destroys
3564         PROP_tmt_usage, and add TODO_update_tmt_usage.
3565         * tree-ssa-forwprop.c (pass_forwprop): Ditto.
3566         * tree-flow.h (updating_used_alone): Prototype.
3567         (recalculate_used_alone): Ditto.
3568         * passes.c (execute_todo): Add code to set updating_used_alone,
3569         and call recalculate.
3570         * tree-ssa-operands.c (add_virtual_operand): Only append bare def
3571         for clobber if used alone, and add assert to verify used_alone
3572         status.
3573
3574 2006-02-20  Angel Nunez Mencias  <anunez@de.ibm.com>
3575
3576         * config/s390/s390.c (legitimize_pic_address): Assertions checking
3577         for non tls symbols added.
3578         (legitimize_address): Do nothing for PLUS expressions if one of the
3579         addends is a tls symbol reference.
3580
3581 2006-02-20  Paolo Bonzini  <bonzini@gnu.org>
3582
3583         PR bootstrap/25476
3584
3585         * Makefile.in (LDFLAGS): Define from autoconf substitution.
3586
3587         * Makefile.in (BOOTSTRAPPING): New.
3588         (quickstrap): New definition if BOOTSTRAPPING=yes.
3589
3590         * Makefile.in (CONFIG_LANGUAGES): Substitute all_selected_languages.
3591         * configure.ac: Substitute all_selected_languages with the languages
3592         that were configured.  For all the other variables except
3593         lang_specs_files, include all the languages in the tree.
3594         * configure: Regenerate.
3595
3596         * Makefile.in (stmp-fixinc): Copy includes from the prev-gcc directory,
3597         if there is one.  Run the commands to run fixincludes in the same
3598         subshell.
3599
3600         * doc/makefile.texi: Document new makefile targets from toplevel bootstrap.
3601         * doc/install.texi: Document exact conventions for searching target tools.
3602         Document --with-build-time-tools.  Document toplevel bootstrap.  Document
3603         something more about building an Ada cross-compiler.  Don't list GNU Make
3604         requirements which affect all platforms.
3605
3606 2006-02-19  Roger Sayle  <roger@eyesopen.com>
3607
3608         PR middle-end/19543
3609         * varasm.c (compare_constant) <INTEGER_CST>: Integer constants are
3610         only equivalent if the have both the same mode and precision.
3611
3612 2006-02-20  Ben Elliston  <bje@au.ibm.com>
3613
3614         * doc/tree-ssa.texi (Interfaces): Describe low vs. high GIMPLE.
3615
3616 2006-02-19  Roger Sayle  <roger@eyesopen.com>
3617             Steven Bosscher  <stevenb.gcc@gmail.com>
3618
3619         * gcse.c (want_to_gcse_p): On STACK_REGS targets, look through
3620         constant pool references to identify stack mode constants.
3621         * rtlanal.c (constant_pool_constant_p): New predicate to check
3622         whether operand is a floating point constant in the pool.
3623         * rtl.h (constant_pool_constant_p): Prototype here.
3624         * loop.c (scan_loop): Avoid hoisting constants from the constant
3625         pool on STACK_REGS targets.
3626         (load_mems): Likewise.
3627         * loop-invariant.c (get_inv_cost): Make hoisting constant pool
3628         loads into x87 registers expensive in terms of register pressure.
3629
3630 2006-02-19  Roger Sayle  <roger@eyesopen.com>
3631
3632         * gthr-posix.h: On Tru64, map __gthr_foo as a weak reference to
3633         __foo and not foo when _PTHREAD_USE_MANGLED_NAMES_ is defined.
3634
3635 2006-02-19  David Edelsohn  <edelsohn@gnu.org>
3636
3637         * config/rs6000/xcoff.h (TARGET_ASM_OUTPUT_ANCHOR): Define.
3638         * config/rs6000/rs6000.c (rs6000_xcoff_asm_output_anchor): Define.
3639
3640 2006-02-19  Daniel Berlin  <dberlin@dberlin.org>
3641
3642         * doc/invoke.texi: Document -fipa-pta.
3643         * common.opt: Add ipa-pta option.
3644         * tree-ssa-structalias.c (DONT_PROPAGATE_WITH_ANYTHING): Removed.
3645         (do_sd_constraint): Enable DONT_PROPAGATE_WITH_ANYTHING code.
3646         (do_ds_constraint): Ditto.
3647         (get_constraint_for): Only add to referenced_vars if
3648         referenced_vars exists.
3649         (insert_into_field_list): Rewrite to do this unsorted.
3650         (insert_into_field_list_sorted): Rename old insert_into_field_list
3651         to this.
3652         (create_function_info_for): Use insert_into_field_list_sorted.
3653         (create_variable_info_for): Rewrite so it uses unsorted version,
3654         since the field list is sorted.
3655         (intra_create_variable_infos): Only add to referenced_vars if
3656         referenced_vars exists.
3657         (ipa_pta_execute): Init heapvars, and delete when done.
3658         * passes.c (init_optimization_passes): Add call to pass_ipa_pta.
3659
3660 2006-02-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3661
3662         * doc/install.texi: Add missing `@samp'.
3663
3664 2006-02-18  Andrew Pinski <pinskia@physics.uc.edu>
3665
3666         * config/rs6000/darwin.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P):
3667         Use the arguments.
3668
3669 2006-02-18  Mark Wielaard  <mark@klomp.org>
3670
3671         * doc/contrib.texi (Contributors): Add classpath/libgcj hackers
3672         who added new 4.1 features, bug fixes and integration support.
3673
3674 2006-02-18  David Edelsohn  <edelsohn@gnu.org>
3675
3676         PR target/26350
3677         * config/rs6000/rs6000.md (extenddftf2): Force 0.0 to validized
3678         MEM for ABI_V4 pic.
3679
3680 2006-02-18  Richard Sandiford  <richard@codesourcery.com>
3681
3682         * cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE.
3683         * emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx.
3684         (copy_insn_1): Likewise.  Don't copy each field individually.
3685         Reindent.
3686         * read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead
3687         of RTX_SIZE.
3688         * reload1.c (eliminate_regs): Use shallow_copy_rtx.
3689         * rtl.c (rtx_size): Rename variable to...
3690         (rtx_code_size): ...this.
3691         (rtx_size): New function.
3692         (rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE.
3693         (copy_rtx): Use shallow_copy_rtx.  Don't copy each field individually.
3694         Reindent.
3695         (shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE.
3696         * rtl.h (rtx_code_size): New variable.
3697         (rtx_size): Change from a variable to a function.
3698         (RTX_SIZE): Rename to...
3699         (RTX_CODE_SIZE): ...this.
3700
3701         PR target/9703
3702         PR tree-optimization/17106
3703         * doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document.
3704         (Anchored Addresses): New section.
3705         * doc/invoke.texi (-fsection-anchors): Document.
3706         * doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise.
3707         (SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise.
3708         (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise.
3709         * hooks.c (hook_bool_mode_rtx_false): New function.
3710         * hooks.h (hook_bool_mode_rtx_false): Declare.
3711         * gengtype.c (create_optional_field): New function.
3712         (adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when
3713         SYMBOL_REF_IN_BLOCK_P is true.
3714         * target.h (output_anchor, use_blocks_for_constant_p): New hooks.
3715         (min_anchor_offset, max_anchor_offset): Likewise.
3716         (use_anchors_for_symbol_p): New hook.
3717         * toplev.c (compile_file): Call output_object_blocks.
3718         (target_supports_section_anchors_p): New function.
3719         (process_options): Check that -fsection-anchors is only used on
3720         targets that support it and when -funit-at-a-time is in effect.
3721         * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL
3722         if the decl doesn't have one.
3723         * dwarf2out.c: Remove instantiations of VEC(rtx,gc).
3724         * expr.c (emit_move_multi_word, emit_move_insn): Pass the result
3725         of force_const_mem through use_anchored_address.
3726         (expand_expr_constant): New function.
3727         (expand_expr_addr_expr_1): Call it.  Use the same modifier when
3728         calling expand_expr for INDIRECT_REF.
3729         (expand_expr_real_1): Pass DECL_RTL through use_anchored_address
3730         for all modifiers except EXPAND_INITIALIZER.  Use expand_expr_constant.
3731         * expr.h (use_anchored_address): Declare.
3732         * loop-unroll.c: Don't declare rtx vectors here.
3733         * explow.c: Include output.h.
3734         (validize_mem): Call use_anchored_address.
3735         (use_anchored_address): New function.
3736         * common.opt (-fsection-anchors): New switch.
3737         * varasm.c (object_block_htab, anchor_labelno): New variables.
3738         (hash_section, object_block_entry_eq, object_block_entry_hash)
3739         (use_object_blocks_p, get_block_for_section, create_block_symbol)
3740         (use_blocks_for_decl_p, change_symbol_section): New functions.
3741         (get_variable_section): New function, split out from assemble_variable.
3742         (make_decl_rtl): Create a block symbol if use_object_blocks_p and
3743         use_blocks_for_decl_p say so.  Use change_symbol_section if the
3744         symbol has already been created.
3745         (assemble_variable_contents): New function, split out from...
3746         (assemble_variable): ...here.  Don't output any code for
3747         block symbols; just pass them to place_block_symbol.
3748         Use get_variable_section and assemble_variable_contents.
3749         (get_constant_alignment, get_constant_section, get_constant_size): New
3750         functions, split from output_constant_def_contents.
3751         (build_constant_desc): Create a block symbol if use_object_blocks_p
3752         says so.  Or into SYMBOL_REF_FLAGS.
3753         (assemble_constant_contents): New function, split from...
3754         (output_constant_def_contents): ...here.  Don't output any code
3755         for block symbols; just pass them to place_section_symbol.
3756         Use get_constant_section and get_constant_alignment.
3757         (force_const_mem): Create a block symbol if use_object_blocks_p and
3758         use_blocks_for_constant_p say so.  Or into SYMBOL_REF_FLAGS.
3759         (output_constant_pool_1): Add an explicit alignment argument.
3760         Don't switch sections here.
3761         (output_constant_pool): Adjust call to output_constant_pool_1.
3762         Switch sections here instead.  Don't output anything for block symbols;
3763         just pass them to place_block_symbol.
3764         (init_varasm_once): Initialize object_block_htab.
3765         (default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK.
3766         (default_asm_output_anchor, default_use_aenchors_for_symbol_p)
3767         (place_block_symbol, get_section_anchor, output_object_block)
3768         (output_object_block_htab, output_object_blocks): New functions.
3769         * target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro.
3770         (TARGET_ASM_OUT): Include it.
3771         (TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro.
3772         (TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros.
3773         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro.
3774         (TARGET_INITIALIZER): Include them.
3775         * rtl.c (rtl_check_failed_block_symbol): New function.
3776         * rtl.h: Include vec.h.  Declare heap and gc rtx vectors.
3777         (block_symbol, object_block): New structures.
3778         (rtx_def): Add a block_symbol field to the union.
3779         (BLOCK_SYMBOL_CHECK): New macro.
3780         (rtl_check_failed_block_symbol): Declare.
3781         (SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags.
3782         (SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates.
3783         (SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2.
3784         (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors.
3785         * output.h (output_section_symbols): Declare.
3786         (object_block): Name structure.
3787         (place_section_symbol, get_section_anchor, default_asm_output_anchor)
3788         (default_use_anchors_for_symbol_p): Declare.
3789         * Makefile.in (RTL_BASE_H): Add vec.h.
3790         (explow.o): Depend on output.h.
3791         * config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default.
3792         (TARGET_MAX_ANCHOR_OFFSET): Likewise.
3793         (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
3794         (rs6000_use_blocks_for_constant_p): New function.
3795
3796 2006-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3797
3798         * doc/install.texi (hppa*-hp-hpux*): Update for 4.1.0.
3799
3800 2006-02-18  Andrew Pinski  <pinskia@physics.uc.edu>
3801
3802         PR tree-opt/25680
3803         * tree-ssa-ccp.c (ccp_fold): Handle store CCP of REALPART_EXPR and
3804         IMAGPART_EXPR.
3805
3806 2006-02-18  Diego Novillo  <dnovillo@redhat.com>
3807
3808         * tree-flow.h (struct var_ann_d): Rename field is_alias_tag to
3809         is_aliased.
3810         Update all users.
3811
3812 2006-02-18  Jakub Jelinek  <jakub@redhat.com>
3813
3814         PR middle-end/26334
3815         * stmt.c (decl_overlaps_hard_reg_set_p): Use DECL_HARD_REGISTER
3816         instead of DECL_REGISTER.
3817
3818 2006-02-18  Olivier Hainque  <hainque@adacore.com>
3819
3820         PR ada/13408
3821         * pa.h (WIDEST_HARDWARE_FP_SIZE): Define.
3822
3823 2006-02-18  Joseph S. Myers  <joseph@codesourcery.com>
3824
3825         PR target/24837
3826         * config.gcc: Define UCLIBC_DEFAULT to 0 or 1.
3827         * opth-gen.awk: Handle Var and InverseMask together.
3828         * config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc).
3829         * config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT.
3830         (TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC.
3831         (CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc
3832         used together.
3833         (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
3834         LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
3835         * config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER,
3836         UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
3837         LINUX_DYNAMIC_LINKER): Define.
3838         (ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER.
3839         * config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to
3840         TARGET_GLIBC.
3841         * config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3842         (CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option.
3843         * config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3844         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3845         (TARGET_C99_FUNCTIONS): Don't define.
3846         * config/i386/linux.h (DYNAMIC_LINKER): Rename to
3847         GLIBC_DYNAMIC_LINKER.
3848         (SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER.
3849         * config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32,
3850         GLIBC_DYNAMIC_LINKER64): Define.
3851         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
3852         LINUX_DYNAMIC_LINKER64.
3853         * config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3854         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3855         * config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define.
3856         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3857         * config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3858         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3859         * config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32,
3860         GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32,
3861         UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define.
3862         (LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64
3863         and LINUX_DYNAMIC_LINKER32.
3864         * config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3865         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3866         * config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define.
3867         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3868         * config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to
3869         TARGET_GLIBC.
3870         * config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise.
3871         (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64,
3872         UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
3873         CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
3874         LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
3875         (LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32.
3876         (LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64.
3877         * config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER,
3878         UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
3879         LINUX_DYNAMIC_LINKER): Define.
3880         (LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE.
3881         * config/s390/linux.h (GLIBC_DYNAMIC_LINKER32,
3882         GLIBC_DYNAMIC_LINKER64): Define.
3883         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
3884         LINUX_DYNAMIC_LINKER64.
3885         * config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3886         (SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3887         * config/sparc/linux.h (GLIBC_DYNAMIC_LINKER,
3888         UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
3889         LINUX_DYNAMIC_LINKER): Define.
3890         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3891         (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
3892         * config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32,
3893         GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32,
3894         UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER,
3895         LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
3896         (LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32.
3897         (LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64.
3898         (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
3899         * config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define.
3900         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
3901         * doc/invoke.texi (-muclibc): Remove caveat about supported
3902         targets.
3903
3904 2006-02-17  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
3905
3906         * doc/cpp.texi (__TIMESTAMP__): Document.
3907
3908 2006-02-17  Roger Sayle  <roger@eyesopen.com>
3909
3910         PR middle-end/25600
3911         * fold-const.c (fold_binary): Fold (X >> C) != 0 into X < 0 when
3912         C is one less than the width of X (and related transformations).
3913         * simplify-rtx.c (simplify_unary_operation_1): Transform
3914         (neg (lt x 0)) into either (ashiftrt X C) or (lshiftrt X C)
3915         depending on STORE_FLAG_VALUE, were C is one less then the
3916         width of X.
3917
3918 2006-02-17  Daniel Berlin  <dberlin@dberlin.org>
3919
3920         Fix PR tree-optimization/26341
3921         * tree-ssa-operands.c (add_virtual_operand): Remove assert
3922         about NAME_MEMORY_TAG's.
3923
3924 2006-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3925
3926         PR target/26255
3927         * pa.md: Create separate HI and QI move patterns for 32-bit and 64-bit
3928         with hardware float support, and software float support.  Add fcpy
3929         alternative to hardware patterns.  Add alternatives to copy between
3930         general and floating-point registers to the 32-bit pattern.
3931         * pa.c (pa_secondary_reload): Don't abort if reload tries to find a
3932         secondary reload to load a QI or HI mode constant into a floating
3933         point register.
3934         * pa32-regs.h (VALID_FP_MODE_P): Allow QImode and HImode.
3935         * pa64-regs.h (VALID_FP_MODE_P): Likewise.
3936
3937 2006-02-17  Andrew Pinski  <pinskia@physics.uc.edu>
3938
3939         PR target/26272
3940         * config/rs6000/darwin.md (load_macho_picbase_si): Add
3941         pc to the pattern.
3942         (load_macho_picbase_di): Likewise.
3943
3944 2006-02-16  Jeff Law  <law@redhat.com>
3945
3946         * tree-vrp.c (set_value_range_to_nonnegative): New function.
3947         (vrp_expr_computes_nonnegative, ssa_name_nonnegative_p): Likewise.
3948         (ssa_name_nonzero_p): Likewise.
3949         (get_value_range): Return NULL if VRP is not running.
3950         (extract_range_from_expr): Fallback to tree_expr_XXX_p if
3951         VRP routines do not discover a range.
3952         (vrp_finalize): Clear VR_VALUE to indicate VRP is not running.
3953         * tree.h (ssa_name_nonzero_p, ssa_name_nonnegative_p): Prototype.
3954         * fold-const.c (tree_expr_nonzero_p): For SSA_NAMEs, query VRP.
3955         (tree_expr_nonnegative_p): Similarly.
3956         * tree-ssa-dom.c (nonzero_vars, nonzero_vars_stack): Remove.
3957         (restore_nonzero_vars_to_original_value): Remove.
3958         (unsafe_associative_fp_binop): Remove.
3959         (tree_ssa_dominator_optimize): Remove initialization and
3960         finalization of nonzero_vars and nonzero_vars_stack.
3961         (dom_opt_initialize_block): No longer push marker on
3962         nonzero_vars_stack.
3963         (dom_opt_finalize_block): No longer call
3964         restore_nonzero_vars_to_original_value.
3965         (record_equivalences_from_phis): No longer look for
3966         nonzero PHI arguments.
3967         (cprop_into_successor_phis): No longer propagate nonzero
3968         property into PHI arguments.  Lose unused argument.  Caller
3969         updated.
3970         (record_equivalences_from_stmt): No longer record nonzero
3971         values for SSA_NAMEs.
3972         (lookup_avail_expr): No longer use nonzero_vars.
3973
3974         * stor-layout.c (set_sizetype): Set TYPE_MAX_VALUE properly
3975         for sizetype when sizetype is unsigned.
3976
3977 2006-02-16  Denis Nagorny <denis_nagorny@linux.intel.com>
3978
3979         PR rtl-optimization/25603
3980         * reload.c (reg_inc_found_and_valid_p): New. Check REG_INC note.
3981         (regno_clobbered_p): Use it. Reusing SETS argument for REG_INC case.
3982         * reload1.c (choose_reload_regs): Added call of regno_clobbered_p
3983         with new meaning of SETS.
3984
3985 2006-02-16  Joseph S. Myers  <joseph@codesourcery.com>
3986
3987         PR target/20353
3988         PR target/24578
3989         PR target/24837
3990         * config/linux.opt: New file.
3991         * config/linux.h (CHOOSE_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,
3992         LINUX_DYNAMIC_LINKER): Define.
3993         (TARGET_C99_FUNCTIONS): Define depending on TARGET_GLIBC.
3994         * config.gcc (*-*-linux*): Define extra_options.
3995         (*-*-*uclibc*): Define UCLIBC_DEFAULT.
3996         (arm*-*-linux-gnueabi): Change to arm*-*-linux-*eabi.
3997         * config/arm/linux-eabi.h (LINUX_TARGET_INTERPRETER): Change to
3998         GLIBC_DYNAMIC_LINKER.
3999         * config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): Likewise.
4000         (LINUX_TARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
4001         * config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Define.
4002         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
4003         * doc/invoke.texi (GNU/Linux Options): New section.
4004
4005 2006-02-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
4006
4007         * config/sparc/sparc.md (setjmp): Rewrite.
4008         (setjmp_32): Delete.
4009         (setjmp_64): Likewise.
4010
4011 2006-02-16  Daniel Berlin <dberlin@dberlin.org>
4012
4013         * tree-ssa-operands.c (access_can_touch_variable): Fix typo in
4014          previous change.
4015
4016 2006-02-16  Zdenek Dvorak <dvorakz@suse.cz>
4017
4018         * loop-invariant.c (invariant_for_use, check_dependencies): Fail for
4019         read-write uses.
4020
4021 2006-02-16  Zdenek Dvorak <dvorakz@suse.cz>
4022
4023         PR rtl-optimization/26296
4024         * Makefile.in (loop-invariant.c): Add except.h dependency.
4025         * loop-invariant.c: Include except.h.
4026         (find_invariant_insn): Ignore insns satisfying can_throw_internal.
4027
4028 2005-02-16  Paul Brook  <paul@codesourcery.com>
4029
4030         * reload1.c (emit_reload_insns): Invalidate dead input registers used
4031         for reloads.
4032
4033 2006-02-16  Bernd Schmidt  <bernd.schmidt@analog.com>
4034
4035         PR rtl-optimization/25636
4036         * local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
4037         when deciding whether an insn is an initializing insn.
4038
4039 2006-02-15 Daniel Berlin  <dberlin@dberlin.org>
4040
4041         * tree.c (init_ttree): Add STRUCT_FIELD_TAG handling.
4042         (tree_code_size): Ditto.
4043         * tree.h (struct tree_memory_tag): Remove parent_var.
4044         (struct tree_struct_field_tag): New.
4045         (SFT_OFFSET): New.
4046         (SFT_SIZE): New.
4047         (union tree_node): Add sft member.
4048         * tree-ssa-alias.c (get_tmt_for): Don't handle TYPE_READONLY
4049         specially here.
4050         (create_sft): Add size and offset argument, set SFT_OFFSET and
4051         SFT_SIZE.
4052         (create_overlap_variables_for): Update for SFT_OFFSET/SFT_SIZE.
4053         * treestruct.def: Add TS_STRUCT_FIELD_TAG.
4054         * tree-flow-inline.h (get_subvar_at): Update for
4055         SFT_OFFSET/SFT_SIZE.
4056         (var_can_have_subvars): Ditto.
4057         (overlap_subvar): Ditto.
4058         * print-tree.c (print_node): Print out interesting things for
4059         SFT's.
4060         * tree-flow.h (struct subvar): Remove offset and size members.
4061         * tree-ssa-operands.c (get_expr_operands): Update for
4062         get_indirect_ref_operands changes.
4063         (get_indirect_ref_operands): Call add_virtual_operand instead of
4064         add_stmt_operand.  Only recurse on base var if requested.
4065         (access_can_touch_variable): New function.
4066         (add_stmt_operand): Split virtual operand handling into ...
4067         (add_virtual_operand): Here.  Add offset, size, and for_clobber
4068         arguments.  Prune alias sets.
4069         (add_call_clobber_ops): Call add_virtual_operand.
4070
4071 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
4072
4073         PR middle-end/26300
4074         * combine.c (make_extraction): Bail out if ORIG_POS is negative.
4075
4076         * tree.h (struct tree_omp_clause): Use OMP_CLAUSE_CODE rather
4077         than TREE_CODE as index into omp_clause_num_ops array.
4078
4079 2006-02-15  Uttam Pawar  <uttamp@us.ibm.com>
4080
4081         PR rtl-optimization/26184
4082         * modulo-sched.c (generate_reg_moves): Free bitmap vector
4083         uses_of_defs.
4084         * modulo-sched.c (sms_schedule): Free g_arr pointer.
4085         * modulo-sched.c (sms_schedule_by_order): Free bitmap pointers
4086         must_precede, must_follow and tobe_scheduled.
4087
4088         PR other/26147
4089         * opts.c (common_handle_option): Free new_option pointer.
4090         * df-core.c (df_analyze): Free postorder pointer.
4091
4092 2006-02-15  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
4093
4094         * Makefile.in: Fix the examples about the use of stamps
4095
4096 2006-02-15  Michael Matz  <matz@suse.de>
4097
4098         PR middle-end/22275
4099
4100         * stor-layout.c (layout_decl): Zero-width bitfields aren't
4101         influenced by maximum_field_alignment or DECL_PACKED.
4102         (update_alignment_for_field): Ditto.
4103         (place_field): Ditto.
4104         * doc/extend.texi (<#pragma pack>, <Type Attributes>): Document
4105         this behaviour.
4106
4107 2006-02-15  Paolo Bonzini  <bonzini@gnu.org>
4108
4109         * cfg.c (dump_flow_info): Get dump flags as an additional parameter.
4110         (debug_flow_info): Pass it.
4111         * alias.c (rest_of_handle_cfg): Adjust calls to dump_flow_info.
4112         * bb-reorder.c (reorder_basic_blocks): Likewise.
4113         * cfgcleanup.c (rest_of_handle_jump2): Likewise.
4114         * cse.c (rest_of_handle_cse, rest_of_handle_cse2): Likewise.
4115         * flow.c (life_analysis, recompute_reg_usage): Likewise.
4116         * gcse.c (gcse_main, bypass_jumps): Likewise.
4117         * ifcvt.c (rest_of_handle_if_conversion): Likewise.
4118         * local-alloc.c (rest_of_handle_local_alloc): Likewise.
4119         * loop-init.c (rtl_loop_init, rtl_loop_done): Likewise.
4120         * profile.c (compute_branch_probabilities, branch_prob): Likewise.
4121         * rtl.h (dump_flow_info): Adjust prototype.
4122         * tracer.c (rest_of_handle_tracer, tracer): Likewise.
4123         * var-tracking.c (variable_tracking_main): Likewise.
4124         * passes.c (execute_todo): Obey TDF_BLOCKS for RTL.
4125         * tree-dump.c (enable_rtl_dump_file): Enable the details and blocks
4126         options.
4127
4128 2006-02-15  Marcin Dalecki <martin@dalecki.de>
4129
4130         * tree-ssa-dom.c (dom_thread_across_edge): fix tag expression
4131         construction.
4132
4133 2006-02-14  Zdenek Dvorak <dvorakz@suse.cz>
4134
4135         PR tree-optimization/26209
4136         * tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg.
4137         * tree-cfgcleanup.c (cleanup_control_flow): Remove dead
4138         eh edges.
4139         * tree-cfg.c (replace_uses_by): Do not alter cfg.
4140
4141 2006-02-14  Roger Sayle  <roger@eyesopen.com>
4142
4143         PR middle-end/23670
4144         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Optimize (X&Y)|Y into
4145         (X,Y) and the corresponding symmetry related transformations.
4146         (fold_binary) <BIT_AND_EXPR>: Likewise, optimize (X|Y)&Y into
4147         (X,Y) and its symmetry related transformations.
4148
4149 2006-02-14  Roger Sayle  <roger@eyesopen.com>
4150
4151         * dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU
4152         and GEU.
4153
4154 2006-02-14  Adam Nemet  <anemet@caviumnetworks.com>
4155
4156         * simplify-rtx.c (simplify_subreg): Combine SUBREG and TRUNCATE.
4157
4158 2006-02-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4159
4160         PR bootstrap/26053
4161         * configure.ac (HAVE_COMDAT_GROUP): Don't assume non-GNU linkers
4162         support COMDAT group.
4163         * configure: Regenerate.
4164
4165 2006-02-14  Roger Sayle  <roger@eyesopen.com>
4166
4167         PR middle-end/26279
4168         PR middle-end/26280
4169         PR middle-end/26283
4170         * dojump.c (do_compare_rtx_and_jump): Handle multi-word LE.
4171
4172 2006-02-14  Daniel Berlin  <dberlin@dberlin.org>
4173
4174         Fix PR tree-optimization/26260
4175
4176         * doc/invoke.texi (max-fields-for-field-sensitive): Document
4177         param.
4178         * params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New.
4179         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto.
4180         * tree-ssa-structalias.c (create_variable_info_for): Use
4181         MAX_FIELDS_FOR_FIELD_SENSITIVE.
4182
4183 2006-02-14  Zdenek Dvorak <dvorakz@suse.cz>
4184
4185         * doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
4186         Document.
4187         * tree-ssa-loop-niter.c (number_of_iterations_ne,
4188         number_of_iterations_lt, number_of_iterations_cond): Remember the shape
4189         of the ending condition.
4190         * tree-ssa-loop-manip.c: Include params.h.
4191         (build_if_stmt, can_unroll_loop_p, determine_exit_conditions,
4192         tree_unroll_loop): New functions.
4193         * tree-pass.h (pass_loop_prefetch): Declare.
4194         * loop.c (rest_of_handle_loop_optimize): Test for
4195         -fprefetch-loop-arrays-rtl.
4196         * tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h.
4197         * timevar.def (TV_TREE_PREFETCH): New timevar.
4198         * tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch,
4199         pass_loop_prefetch): New.
4200         * tree-cfgcleanup.c: Include tree-scalar-evolution.h.
4201         (cleanup_tree_cfg_loop): Call scev_reset.
4202         * common.opt (fprefetch-loop-arrays-rtl): Add.
4203         * tree-ssa-loop-prefetch.c: New file.
4204         * tree-outof-ssa.c (struct value_expr_d): Add expr_vars field.
4205         (new_temp_expr_table): Initialize expr_vars.
4206         (free_temp_expr_table): Cleanup expr_vars.
4207         (check_replaceable, find_replaceable_in_bb): Prevent accumulating
4208         expressions from being merged into one.
4209         * tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h.
4210         (struct tree_niter_desc): Add control, bound and cmp fields.
4211         (tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop):
4212         Declare.
4213         * Makefile.in (tree-ssa-loop-prefetch.o): Add.
4214         (tree-cfgcleanup.o): Add SCEV_H dependency.
4215         (tree-ssa-loop-manip.o): Add PARAMS_H dependency.
4216         * passes.c (init_optimization_passes): Add pass_loop_prefetch.
4217
4218 2006-02-14  Richard Guenther  <rguenther@suse.de>
4219
4220         PR tree-optimization/26258
4221         * tree-ssa-structalias.c (find_func_aliases): Handle aggregates
4222         in PHI argument processing.
4223
4224 2006-02-13  Adam Nemet  <anemet@caviumnetworks.com>
4225
4226         * simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>: Return
4227         new expression in the requested machine mode.
4228
4229 2006-02-13  Roger Sayle  <roger@eyesopen.com>
4230
4231         * optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx
4232         directly, instead let do_compare_rtx_and_jump handle this for us.
4233         * expr.c (expand_expr_real_1): Likewise.
4234         * dojump.c (do_jump_by_parts_greater_rtx): Make static.  Move
4235         before do_jump_by_parts_greater.
4236         (do_jump_by_parts_greater): Move after do_jump_by_parts_greater_rtx.
4237         * expr.h (do_jump_by_parts_greater_rtx): Delete prototype.
4238
4239 2006-02-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4240
4241         * pa/quadlib.c: Use defines instead of enum qfcmp_magic.
4242
4243 2006-02-13  Zdenek Dvorak <dvorakz@suse.cz>
4244
4245         PR rtl-optimization/26235
4246         * loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats.
4247         (invariant_expr_equal_p): Handle 'i' and 'n' formats.  Fail on unknown
4248         format.
4249
4250 2006-02-13  Jeff Law  <law@redhat.com>
4251
4252         * tree-vrp.c (extract_range_from_binary_expr): Remove handling of
4253         TRUTH_XOR_EPR.
4254
4255 2006-02-13  Jakub Jelinek  <jakub@redhat.com>
4256
4257         PR middle-end/26092
4258         * gimplify.c (gimplify_call_expr): Don't call get_callee_fndecl
4259         twice if decl is a builtin.  When trying again, call get_callee_fndecl
4260         first to verify it is still a builtin.
4261
4262 2006-02-13  Geoffrey Keating  <geoffk@apple.com>
4263
4264         * dwarf2out.c (base_type_die): Don't add AT_name here.
4265         (subrange_type_die): Don't add AT_name here.
4266         (modified_type_die): Rearrange code flow.  Do add AT_name here.
4267
4268 2006-02-13  Zdenek Dvorak <dvorakz@suse.cz>
4269
4270         PR rtl-optimization/26247
4271         PR rtl-optimization/26248
4272         * loop-invariant.c (may_assign_reg_p): Do not allow VOIDmode.
4273
4274 2006-02-13  Richard Sandiford  <richard@codesourcery.com>
4275
4276         * config/floatunditf.c: Use if __LDBL_MANT_DIG__ == 113.
4277         * config/fixtfdi.c: Likewise.
4278         * config/fixunstfdi.c: Likewise.
4279         * config/floatditf.c: Likewise.
4280
4281 2006-02-13  Roger Sayle  <roger@eyesopen.com>
4282
4283         PR middle-end/24427
4284         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Transform (X&C1)|C2
4285         into (X,C2) if C1 is a subset of the bits of C2.  Transform
4286         (X&C1)|C2 into X|C2 if C1|C2 == ~0.  Canonicalize (X&C1)|C2 as
4287         (X&(C1&~C2))|C2.
4288         <BIT_AND_EXPR>: Canonicalize (X|C1)&C2 as (X&C2)|(C1&C2).
4289
4290 2006-02-13  Josh Conner  <jconner@apple.com>
4291
4292         PR target/25376
4293         * varasm.c (function_section): Check for section name before
4294         calling select_section on targets that define
4295         USE_SELECT_SECTION_FOR_FUNCTIONS.  On other targets, use
4296         unlikely_text_section instead of hot_function_section if
4297         first_function_block_is_cold.
4298
4299 2006-02-13  J"orn Rennecke <joern.rennecke@st.com>
4300
4301         PR middle-end/25335
4302         * reload1.c (gen_reload): Also use find_replacement in UNARY_P case.
4303
4304 2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>
4305
4306         PR rtl-optimization/26222
4307         * function.c (assign_stack_temp_for_type): Do not reuse stack slots
4308         after tree->rtl expansion.
4309         * loop-invariant.c (move_invariant_reg): Use force_operand on rhs
4310         before passing it to emit_move_insn.
4311
4312 2006-02-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4313
4314         * doc/invoke.texi (-Write-strings): Document that it is enabled by
4315         default.
4316         * c.opt (-Wwrite-strings): Declare variable warn_write_strings.
4317         Clarify documentation.
4318         * c-common.h (warn_write_strings): Remove.
4319         * c-common.c (warn_write_strings): Likewise.
4320         * c-opts.c (c_common_init_options): Enable -Wwrite-strings by
4321         default for C++.
4322
4323 2006-02-12  Roger Sayle  <roger@eyesopen.com>
4324
4325         PR middle-end/25724
4326         * dojump.c (do_jump): Call do_compare_rtx_and_jump.
4327         (do_jump_parts_zero_rtx): New function renamed from
4328         do_jump_parts_equality_rtx.  Made static.  Add a mode argument.
4329         (do_jump_parts_equality_rtx): New function split out from
4330         do_jump_parts_equality.  Old implementation renamed as above.
4331         Call do_jump_parts_zero_rtx if either operand is zero.
4332         (do_jump_parts_equality): Call do_jump_parts_equality_rtx to
4333         do all of the heavy lifting.
4334         (do_compare_rtx_and_jump): Handle multi-word comparisons by
4335         calling either do_jump_by_parts_greater_rtx or
4336         do_jump_by_parts_equality_rtx.
4337         * expr.h (do_jump_by_parts_equality_rtx): Remove prototype.
4338         * expmed.c (do_cmp_and_jump): Now multi-word optimization has
4339         moved to do_compare_rtx_and_jump, call it directly.
4340         * stmt.c (do_jump_if_equal): Remove static prototype.  Add a
4341         mode argument.  Call do_compare_rtx_and_jump.
4342         (emit_case_nodes): Update calls to do_jump_if_equal.
4343
4344 2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>
4345
4346         PR rtl-optimization/26225
4347         * loop-invariant.c (may_assign_reg_p): Do not allow BLKmode operands.
4348
4349 2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>
4350
4351         PR rtl-optimization/26232
4352         * loop-invariant.c (find_invariant_insn): Ignore insns that set CC0.
4353
4354 2006-02-11  Jason Merrill  <jason@redhat.com>
4355
4356         PR tree-opt/24365
4357         * tree-inline.c (declare_return_variable): Just don't use the
4358         modify target if it's a gimple complex reg and the return slot
4359         isn't.
4360
4361 2006-02-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4362
4363         * doc/contrib.texi: Update my entry.
4364
4365 2006-02-10  Geoffrey Keating  <geoffk@apple.com>
4366
4367         * config/i386/darwin.h (DBX_REGISTER_NUMBER): Define.
4368
4369 2006-02-10  Diego Novillo  <dnovillo@redhat.com>
4370
4371         * tree-inline.c (estimate_num_insns_1): Make OpenMP directives
4372         expensive.
4373
4374 2006-02-10  Zdenek Dvorak <dvorakz@suse.cz>
4375
4376         * doc/invoke.texi (-floop-optimize2): Removed.
4377         * toplev.c (process_options): Remove handling of flag_loop_optimize2.
4378         * loop-init.c (gate_handle_loop2): Do not test flag_loop_optimize2.
4379         Test flag_branch_on_count_reg only if HAVE_doloop_end.
4380         * common.opt (floop-optimize2): Removed.
4381         (fmove-loop-invariants): Enabled by default.
4382
4383 2006-02-10  Sebastian Pop  <pop@cri.ensmp.fr>
4384
4385         * tree-if-conv.c (combine_blocks): Free the result of
4386         get_loop_exit_edges.
4387
4388 2006-02-10  Jeff Law  <law@redhat.com>
4389
4390         * fold-const.c (tree_expr_nonzero_p): Fix thinko.
4391
4392         PR tree-optimization/26213
4393         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Do not
4394         loop trying to follow SSA_NAME_VALUE chains.
4395
4396 2006-02-10  Richard Guenther  <rguenther@suse.de>
4397
4398         * tree-dfa.c (get_ref_base_and_extent): When computing maxsize
4399         deal with structures that end in implicitly variable sized arrays.
4400
4401 2006-02-09  Zdenek Dvorak <dvorakz@suse.cz>
4402
4403         PR rtl-optimization/24762
4404         * df-scan.c (df_bb_refs_record): Record correct registers defined on
4405         eh edges.
4406
4407 2006-02-09  Zdenek Dvorak <dvorakz@suse.cz>
4408
4409         * tree-ssa-loop-ivopts.c (struct loop_data, loop_data): Removed.
4410         (struct ivopts_data): Add regs_used field.
4411         (tree_ssa_iv_optimize_init): Do not allocate aux fields for loops.
4412         (ivopts_global_cost_for_size, determine_set_costs): Use data->regs_used
4413         instead of loop_data->regs_used;
4414         (free_loop_data): Do not free aux fields for loops.
4415         (tree_ssa_iv_optimize): Do not pass loops to tree_ssa_iv_optimize_init
4416         and tree_ssa_iv_optimize_finalize.
4417
4418 2006-02-09  Kaz Kojima  <kkojima@gcc.gnu.org>
4419
4420         * config/sh/sh.h (FUNCTION_VALUE): Don't handle CHAR_TYPE.
4421
4422 2006-02-09  J"orn Rennecke <joern.rennecke@st.com>
4423
4424         PR target/26141
4425         * sh.c (sh_gimplify_va_arg_expr): Don't change the result type when
4426         computing the effective result type.
4427
4428 2006-02-09  J"orn Rennecke <joern.rennecke@st.com>
4429
4430         PR inline-asm/16194
4431         * tree.h (decl_overlaps_hard_reg_set_p) Don't declare.
4432         (tree_overlaps_hard_reg_set): Declare.
4433         * stmt.c (decl_overlaps_hard_reg_set_p): Now static.  Change return
4434         type and signature to match function type expected by walk_tree.
4435         (tree_overlaps_hard_reg_set): New function.
4436         (decl_conflicts_with_clobbers_p): Rename to:
4437         (tree_conflicts_with_clobbers_p).  Take HARD_REG_SET * argument.
4438         Use tree_overlaps_hard_reg_set.  Changed caller.
4439         * doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Replace
4440         decl_overlaps_hard_reg_set_p with tree_overlaps_hard_reg_set.
4441         * cris.c (cris_md_asm_clobbers): Likewise.
4442
4443 2006-02-09  Bernd Schmidt  <bernd.schmidt@analog.com>
4444
4445         * reload1.c (emit_input_reload_insns): Delete code that tries to
4446         inherit using find_equiv_reg.
4447
4448 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4449
4450         * c-common.h (flag_const_strings): Don't declare.
4451         * c-common.c (flag_const_strings): Remove.
4452         * c.opt (fconst_strings): Remove.
4453         * c-opts.c (c_common_handle_option): Remove <OPT_fconst_strings>.
4454         <OPT_Wwrite_strings>: Don't set flag_const_strings.
4455         (c_common_init_options): Don't set flag_const_strings.
4456         * doc/invoke.texi (-fno-const-strings): Remove documentation.
4457
4458 2006-02-09  Richard Earnshaw  <richard.earnshaw@arm.com>
4459
4460         * arm.md (tlobits_cbranch): New pattern.
4461         * arm.h (arm_select_cc_mode): For thumb, only return CC_Nmode if
4462         testing a single bit.
4463
4464 2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>
4465
4466         PR tree-opt/26179
4467         * tree-ssa-pre.c (create_component_ref_by_pieces):
4468         Handle RETURN_DECL like VAR_DECL.
4469
4470 2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>
4471
4472         PR middle-end/26134
4473         * fold-const.c (fold_indirect_ref_1): Fold
4474         "*(foo *)&complexfoo" to "__real__ complexfoo"
4475         and "((foo*)&complexfoo)[1]" to "__imag__ complexfoo".
4476
4477 2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>
4478
4479         * tree-flow-inline.h (var_can_have_subvars):
4480         Volatile variables should not have subvariables.
4481
4482 2006-02-09  Diego Novillo  <dnovillo@redhat.com>
4483
4484         PR 26180
4485         * tree-vrp.c (vrp_int_const_binop): Detect overflow when
4486         multiplying unsigned values.
4487         Tidy comments.
4488
4489 2006-02-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
4490
4491         * config/sparc/sparc.c (tls_call_delay): Fix oversight.
4492
4493 2006-02-08  Jason Merrill  <jason@redhat.com>
4494
4495         PR c++/25979
4496         * tree.def: Elaborate on difference from MODIFY_EXPR.
4497         * doc/c-tree.texi (INIT_EXPR): Likewise.
4498         * gimplify.c (internal_get_tmp_var): Use INIT_EXPR.
4499         (gimplify_decl_expr, gimplify_init_ctor_eval): Likewise.
4500         (gimplify_target_expr): Likewise.
4501         (gimplify_cond_expr): Remove target handling.
4502         (gimplify_modify_expr): Don't clobber INIT_EXPR code here.
4503         (gimplify_expr): Clobber it here.
4504         (gimplify_modify_expr_rhs): Push assignment into COND_EXPR here.
4505         Do return slot optimization if we have an INIT_EXPR.
4506
4507         PR tree-opt/24365
4508         * tree-inline.c (declare_return_variable): Also clear
4509         DECL_COMPLEX_GIMPLE_REG_P as needed in the modify_dest case.
4510
4511         PR c++/16405
4512         * gimplify.c (gimplify_modify_expr_rhs): Re-enable *& handling.
4513
4514         PR middle-end/22439
4515         * gimplify.c (gimplify_one_sizepos): Fix typo.
4516
4517 2006-02-08  Jeff Law  <law@redhat.com>
4518
4519         PR tree-optimization/21417
4520         * tree-ssa-threadedge.c (thread_across_edge): Reject threading
4521         across a backedge if the control statement at the end of the
4522         block is data dependent on other statements in the same block.
4523         (record_temporary_equivalences_from_stmts): Remove over-conservative
4524         test for threading across backedges.
4525
4526         * tree-ssa-dce.c (remove_dead_statement): When removing a dead
4527         control statement, handle all three special cases in the same
4528         manner as they all have the same desired solution.  No longer
4529         special case edge flag updating when the post dominator is
4530         the exit block.
4531
4532 2006-02-08  Roger Sayle  <roger@eyesopen.com>
4533
4534         * tree.def (CHAR_TYPE): Remove.
4535         * dbxout.c (dbxout_type): Delete dead handling of CHAR_TYPE.
4536         * dwarf2out.c (base_type_die, is_base_type): Likewise.
4537         (gen_type_die) <ARRAY_TYPE>: Remove handling of CHAR_TYPE arrays.
4538         (gen_string_type_die): Delete unreachable function.
4539
4540         * tree-pretty-print.c (dump_generic_node): Don't handle CHAR_TYPE.
4541         * tree.c (build_int_cst_wide, type_contains_placeholder_1,
4542         type_hash_eq, variably_modified_type_p, walk_type_fields): Likewise.
4543         * tree.h (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Likewise.
4544         * builtins.c (type_to_class): Likewise.
4545         * fold-const.c (fold_convert, build_range_check,
4546         merge_ranges): Likewise.
4547         * expr.c (count_type_elements): Likewise.
4548         * c-pretty-print.c (pp_c_type_specifier): Likewise.
4549         * stor-layout.c (layout_type): Likewise.
4550         * ipa-type-escape.c (type_to_consider): Likewise.
4551         * gimplify.c (omp_firstprivatize_type_sizes,
4552         gimplify_type_sizes): Likewise.
4553         * explow.c (promote_mode): Likewise.
4554         * tree-sra.c (is_sra_scalar_type): Likewise.
4555         * varasm.c (output_constant): Likewise.
4556         * tree-inline.c (remap_type_1): Likewise.
4557         * convert.c (convert_to_pointer, convert_to_real,
4558         convert_to_integer, convert_to_complex): Likewise.
4559
4560 2006-02-08  Daniel Berlin  <dberlin@dberlin.org>
4561
4562         * df-scan.c (df_def_record_1): A set destination may
4563         be a parallel regardless of mode.
4564
4565 2006-02-08  Roger Sayle  <roger@eyesopen.com>
4566
4567         PR target/22209
4568         * config/mips/mips.h (MIN_UNITS_PER_WORD): Don't define for libgcc.
4569         * config/mips/_tilib.c: Remove.
4570         * config/fixtfdi.c: New libgcc source file.
4571         * config/fixunstfdi.c: New source file.
4572         * config/floatditf.c: New source file.
4573         * config/floatunditf.c: New souce file.
4574         * config/mips/t-iris6 (LIB2FUNCS_EXTRA): Include the new source
4575         files above instead of config/mips/_tilib.c.
4576         * config/mips/t-linux64 (LIB2FUNCS_EXTRA): Likewise.
4577
4578 2006-02-08  Jeff Law  <law@redhat.com>
4579
4580         PR tree-optimization/26169
4581         * tree-vrp.c (execute_vrp): Perform any queued SSA updates before
4582         threading jumps.
4583
4584 2006-02-08  Zdenek Dvorak <dvorakz@suse.cz>
4585
4586         * df.h (DF_REG_SIZE): Return the length of the initialized
4587         part of the array.
4588
4589 2006-02-08  Nathan Sidwell  <nathan@codesourcery.com>
4590
4591         * gcc/config/m68k/lb1sf68.asm (__divsf3, __divdf3, __mulsf3,
4592         __muldf3): Return a correctly signed zero.
4593
4594 2006-02-08  Paolo Bonzini  <bonzini@gnu.org>
4595
4596         * passes.c (register_one_dump_file): Accept the current properties
4597         instead of pass number.  Adjust call to dump_register.  Remove
4598         duplicated code.
4599         (register_dump_files): Now a wrapper around...
4600         (register_dump_files_1): ... this one.  Do not modify the pass
4601         structure.
4602         (next_pass_1): Cosmetic fix.
4603         (execute_todo): Keep second parameter only.  Use curr_properties
4604         instead of fetching it from the pass structure.  Check and set
4605         last_verified.
4606         (execute_one_pass): Handle TODO_set_props.  Use curr_properties
4607         instead of fetching it from the pass structure.  Fix calls to
4608         execute_todo.  Update curr_properties and initialize .vcg RTL dump
4609         after running the pass.  Reset last_verified.
4610         * tree-dump.c (dump_files): Renumber consecutively.  Put .cgraph dump
4611         at the beginning.
4612         (FIRST_AUTO_NUMBERED_DUMP): New.
4613         (dump_register): Remove "num" parameter, assign it within the
4614         function.
4615         (get_dump_file_name): Modify template for dumps.
4616         * tree-dump.h (dump_register): Adjust prototype.
4617         * tree-pass.h (enum tree_dump_index): Move cgraph at the beginning.
4618         (PROP_trees): Add PROP_gimple_lomp.
4619         (TODO_set_props): New.
4620         * gimple-low.c (pass_lower_cf): Do not destroy PROP_gimple_lcf.
4621         * tree-eh.c (pass_lower_eh): Do not destroy PROP_gimple_leh.
4622         * cfgexpand.c (pass_expand): Destroy PROP_trees.
4623
4624 2006-02-08  Jakub Jelinek  <jakub@redhat.com>
4625
4626         * config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
4627         (sparc64-*-linux*): Likewise.
4628         * config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
4629         * config/sparc/t-linux: New file.
4630         * config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
4631         __floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
4632         (__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
4633         -m32 -mlong-double-128.
4634
4635         * config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
4636         * config/alpha/t-linux: New file.
4637         * config/alpha/libgcc-alpha-ldbl.ver: New file.
4638
4639         * config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
4640         __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
4641         (CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
4642         * config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
4643         __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
4644         (CPP_ARCH32_SPEC): Remove.
4645
4646 2006-02-07  Uttam Pawar  <uttamp@us.ibm.com>
4647
4648         PR tree-optimization/26145
4649         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Free
4650         bbs pointer.
4651
4652 2006-02-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4653
4654         PR target/26109
4655         * pa.c (attr_length_indirect_call): Don't return length 8 for distances
4656         >= 240000 when generating code for SOM runtime.
4657         (output_indirect_call): Don't use "b,l" instruction for indirect calls
4658         to $$dyncall when generating code for SOM runtime..
4659
4660 2006-02-07  Dirk Mueller  <dmueller@suse.com>
4661
4662         PR c++/18150
4663         * doc/invoke.texi (-Wsequence-point): Update documentation
4664         that -Wsequence-point is implemented for C++ as well.
4665
4666 2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
4667
4668         * config/sol26.h (CPP_SUBTARGET_SPEC): Accept -pthread.
4669         * config/sol2.h (CPP_SUBTARGET_SPEC): Likewise.
4670         (LIB_SPEC): Likewise.
4671         * doc/invoke.texi (SPARC options): Document -pthread.
4672
4673 2006-02-07  Geoffrey Keating  <geoffk@apple.com>
4674
4675         * config/i386/i386.c (ix86_delegitimize_address): Support Darwin
4676         PIC addresses.
4677
4678 2006-02-07  Roger Sayle  <roger@eyesopen.com>
4679
4680         * config/sparc/sparc.c (sparc_type_code): Don't handle CHAR_TYPE.
4681         Correct comment describing BOOLEAN_TYPE.
4682
4683 2006-02-07  Dirk Mueller  <dmueller@suse.com>
4684
4685         * c.opt: C++ frontend supports -Wdiv-by-zero.
4686         * c-opts.c (c_common_handle_option): Remove dead case.
4687
4688 2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
4689
4690         * configure.ac (TLS assembler check): Do not enable TLS by
4691         default on SPARC/Solaris before version 10.
4692         * configure: Regenerate.
4693
4694 2006-02-07  David Edelsohn  <edelsohn@gnu.org>
4695
4696         * doc/invoke.texi (xl-compat): Document conversion and support
4697         routine names.
4698
4699 2006-02-07  Jeff Law  <law@redhat.com>
4700
4701         * tree-vrp.c (find_conditional_asserts): Update comments.
4702         (simplify_stmt_for_jump_threading): New.
4703         (identify_jump_threads, finalize_jump_threads): New.
4704         (vrp_finalize): Call identify_jump_threads.
4705         (execute_vrp): Call finalize_jump_threads.
4706         * tree-ssa-dom.c (struct opt_stats_d): Remove num_iterations field.
4707         (vrp_element, vrp_data, vrp_element_p): Remove.
4708         (vrp_hash_elt, vrp_variables_stack): Remove.
4709         (vrp_hash, vrp_eq, record_range): Remove.
4710         (simplify_cond_and_lookup_avail_expr): Remove.
4711         (extract_range_from_cond): Remove.
4712         (thread_across_edge): Relocated into tree-ssa-threadedge.c.
4713         (simplify_stmt_for_jump_threading): New.
4714         (dom_thread_across_edge): New wrapper.
4715         (tree_ssa_dominator_optimize): No longer initialize or
4716         finalize any of the VRP datastructures.  Remove iteration
4717         step and simplify as a result of removal of iteration step.
4718         (pass_dominator): Perform a cfg cleanup after DOM.
4719         (dom_opt_finalize_block): Use the new common routines
4720         for threading jumps.  Simplify stack management slightly.
4721         No longer need to unwind VRP state.
4722         (record_equivalences_from_incoming_edge): No longer record
4723         VRP information.
4724         (eliminate_redundant_computations): No longer call
4725         simplify_cond_and_lookup_avail_expr.
4726         * tree-flow.h (potentially_threadable_block): Prototype.
4727         (thread_across_edge): Likewise.
4728         * Makefile.in (OBJS-common):  Add tree-ssa-threadedge.o
4729         (tree-ssa-threadedge.o): Add dependencies.
4730         * tree-ssa-threadedge.c: New file.
4731         * passes.c (init_optimization_passes): Merge PHIs before
4732         calling VRP.  Run VRP again late in the SSA optimization pipeline.
4733
4734 2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
4735
4736         * df-core.c (df_set_blocks): Do not dereference function pointers.
4737         (df_finish1): Likewise.
4738         (df_hybrid_search_forward): Likewise.
4739         (df_hybrid_search_backward): Likewise.
4740         (df_iterative_dataflow): Likewise.
4741         (df_analyze_problem): Likewise.
4742         (df_compact_blocks): Likewise.
4743         (df_dump): Likewise.
4744         * df-scan.c (df_rescan_blocks): Likewise.
4745         (df_record_entry_block_defs): Likewise.
4746
4747         * genconditions.c (write_conditions): Guard the definition of
4748         'insn_conditions' with the check on GCC version.
4749         (write_writer): Guard the traversal 'insn_conditions' with
4750         the check on GCC version.
4751
4752 2006-02-07  Richard Guenther  <rguenther@suse.de>
4753
4754         PR c++/26140
4755         Revert
4756         2006-01-30  Richard Guenther  <rguenther@suse.de>
4757         PR c++/23372
4758         * gimplify.c (gimplify_target_expr): Handle easy cases
4759         without creating a temporary.
4760
4761 2006-02-07  Pete Steinmetz  <steinmtz@us.ibm.com>
4762
4763         * sched-rgn.c (compute_dom_prob_ps, compute_trg_info): Eradicate
4764         use of float in probability computations.  Use edge probabilities
4765         in place of statically computed probabilities.
4766         (min_spec_prob): New static variable.
4767         (schedule_insns): Initialize it.
4768         (GET_SRC_PROB): Removed.
4769         * doc/invoke.texi (min-sched-prob): Renamed to min-spec-prob.
4770
4771 2006-02-07  Alexandre Oliva  <aoliva@redhat.com>
4772
4773         PR debug/24444
4774         * config/ia64/unwind-ia64.c: Revert last change.
4775         * config/ia64/ia64.h (ARG_POINTER_CFA_OFFSET): Removed.
4776         (INCOMING_FRAME_SP_OFFSET): Define.
4777
4778 2006-02-06  Roger Sayle  <roger@eyesopen.com>
4779
4780         * config/ia64/ia64.c (hfa_element_mode): Don't handle CHAR_TYPE.
4781
4782 2006-02-07  Ben Elliston  <bje@au.ibm.com>
4783
4784         * config/i386/i386.c (ix86_scalar_mode_supported_p): New.
4785         (TARGET_SCALAR_MODE_SUPPORTED_P): Define hook.
4786         (classify_argument): Handle SDmode, DDmode, TDmode for 64-bit.
4787         (ix86_return_in_memory): Handle TDmode.
4788         (ix86_libcall_value): Handle SDmode, DDmode, TDmode.
4789         (ix86_value_regno): Return non-TDmode decimal float modes in %eax.
4790
4791 2006-02-06  Richard Sandiford  <richard@codesourcery.com>
4792
4793         * reorg.c (dbr_schedule): Use dump_file instead of file.
4794
4795 2006-02-06  Steve Ellcey  <sje@cup.hp.com>
4796
4797         PR target/25917
4798         * config/ia64/predicates.md (extr_len_operand): New predicate.
4799         * config/ia64/ia64.md (extv): Tighten constraints.
4800         (extzv): Ditto.
4801         (*tbit_and_2): Ditto.
4802         (*tbit_and_3): Ditto.
4803         (*tbit_or_2): Ditto.
4804         (*tbit_or_3): Ditto.
4805         (*bit_zero): Ditto.
4806         (*bit_one): Ditto.
4807
4808 2006-02-06  Andrew Pinski  <pinskia@physics.uc.edu>
4809
4810         PR target/23359
4811         * config/i386/i386.md (trap): Use ASM_SHORT instead of .word.
4812
4813 2006-02-06  Zdenek Dvorak <dvorakz@suse.cz>
4814
4815         * tree-vrp.c (execute_vrp): Do not pass dump argument to.
4816         loop_optimizer_init and loop_optimizer_finalize
4817         * tree-ssa-sink.c (execute_sink_code): Ditto.
4818         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
4819         * tree-ssa-loop.c (tree_loop_optimizer_init, tree_ssa_loop_init,
4820         tree_ssa_loop_done): Ditto.
4821         * tree-ssa-pre.c (init_pre, fini_pre): Ditto.
4822         * sched-ebb.c: Include output.h.
4823         (schedule_ebbs): Do not use dump argument.
4824         * value-prof.h (struct profile_hooks): Remove profile_dump_file.
4825         * loop.c (loop_dump_stream): Removed.
4826         (loop_optimize, rest_of_handle_loop_optimize): Do not use dump
4827         argument.
4828         (scan_loop, move_movables, find_and_verify_loops, mark_loop_jump,
4829         emit_prefetch_instructions, loop_bivs_find, loop_bivs_check,
4830         final_biv_value, loop_biv_eliminable_p, loop_givs_rescan,
4831         loop_iterations, strength_reduce, record_biv, record_giv,
4832         final_giv_value, check_final_value, check_ext_dependent_givs,
4833         combine_givs, check_dbra_loop, maybe_eliminate_biv, load_mems,
4834         try_copy_prop, loop_delete_insns, try_swap_copy_prop): Use
4835         dump_file instead of loop_dump_stream.
4836         * ddg.c (print_ddg_edge, print_ddg, vcg_print_ddg): Do not call
4837         argument dump_file.
4838         * reorg.c (dbr_schedule, rest_of_handle_delay_slots): Do not use
4839         dump argument.
4840         * flow.c (life_analysis, rest_of_handle_life): Ditto.
4841         * haifa-sched.c: Include output.h
4842         (schedule_insns, sched_init): Do not use dump argument.
4843         * mode-switching.c (optimize_mode_switching): Ditto.
4844         * modulo-sched.c (stats_file): Removed.
4845         (print_node_sched_params): Do not call argument dump_file.
4846         (sms_schedule_by_order, loop_canon_p, sms_schedule,
4847         rest_of_handle_sms): Do not use dump argument.  Use dump_file instead
4848         of stats_file.
4849         * cse.c (cse_main, rest_of_handle_cse, rest_of_handle_cse2): Do not
4850         use dump argument.
4851         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize,
4852         rtl_loop_init, rtl_loop_done): Ditto.
4853         * global.c (global_alloc, rest_of_handle_global_alloc): Ditto.
4854         * predict.c (combine_predictions_for_bb, tree_estimate_probability):
4855         Ditto.
4856         * recog.c (peephole2_optimize, rest_of_handle_peephole2): Ditto.
4857         * lcm.c (pre_edge_lcm, pre_edge_rev_lcm): Ditto.
4858         * regmove.c (fixup_match_1, fixup_match_2, regmove_optimize,
4859         rest_of_handle_regmove, rest_of_handle_stack_adjustments): Ditto.
4860         * emit-rtl.c (renumber_insns): Ditto.
4861         * cfgexpand.c (add_reg_br_prob_note, expand_gimple_cond_expr,
4862         expand_gimple_basic_block, tree_expand_cfg): Ditto.
4863         * regclass.c (regclass): Ditto.
4864         * tree-outof-ssa.c (analyze_edges_for_bb, perform_edge_inserts,
4865         remove_ssa_form, rewrite_out_of_ssa): Ditto.
4866         * reg-stack.c (compensate_edge, compensate_edges, convert_regs_1,
4867         convert_regs_2, convert_regs, reg_to_stack, rest_of_handle_stack_regs):
4868         Ditto.
4869         * sched-rgn.c (schedule_insns, rest_of_handle_sched): Ditto.
4870         * local-alloc.c (rest_of_handle_local_alloc): Do not pass dump_file
4871         to regclass.
4872         * gcse.c (gcse_file, debug_stderr): Removed.
4873         (gcse_main, bypass_jumps, rest_of_handle_jump_bypass,
4874         rest_of_handle_gcse): Do not use dump argument.
4875         (cprop_jump, cprop_insn, do_local_cprop, cprop, find_implicit_sets,
4876         one_cprop_pass, bypass_block, compute_pre_data, insert_insn_end_bb,
4877         pre_edge_insert, pre_insert_copy_insn, pre_delete, one_pre_gcse_pass,
4878         compute_code_hoist_vbeinout, compute_code_hoist_data,
4879         one_code_hoisting_pass, trim_ld_motion_mems, update_ld_motion_stores,
4880         compute_store_table, build_store_vectors, insert_insn_start_bb,
4881         insert_store, remove_reachable_equiv_notes, replace_store_insn,
4882         store_motion): Use dump_file instead of gcse_file.
4883         * ipa-type-escape.c (type_escape_execute): Remove debugging comments.
4884         * profile.c (profile_dump_file): Removed.
4885         (branch_prob): Use dump_file instead of profile_dump_file.
4886         * ipa.c (cgraph_remove_unreachable_nodes): Do not call argument
4887         dump_file.
4888         * tree-ssa-copy.c (dump_copy_of): Ditto.
4889         * rtl-factoring.c (rtl_seqabstr, rest_of_rtl_seqabstr): Do not pass
4890         dump file to life_analysis.
4891         * bt-load.c (branch_target_load_optimize): Ditto.
4892         * cfgcleanup.c (rest_of_handle_jump2): Do not pass dump_file to
4893         renumber_insns.
4894         * rtl.h (cse_main, renumber_insns, schedule_insns, schedule_ebbs,
4895         regclass, dbr_schedule): Declaration changed.
4896         * sched-int.h (sched_init): Declaration changed.
4897         * tree-profile.c (tree_profile_dump_file): Removed.
4898         (tree_profile_hooks): Removed profile_dump_file hook.
4899         * rtl-profile (rtl_profile_dump_file): Removed.
4900         (rtl_profile_hooks): emoved profile_dump_file hook.
4901         * cfgloop.h (loop_optimizer_init, loop_optimizer_finalize): Declaration
4902         changed.
4903         * c-gimplify.c (c_genericize): Do not call local variable dump_file.
4904         * tree-cfg.c (build_tree_cfg): Ditto.
4905         * Makefile.in (haifa-sched.o, sched-ebb.o): Add output.h dependency.
4906         * basic-block.h (life_analysis, pre_edge_lcm, pre_edge_rev_lcm):
4907         Declaration changed.
4908         * config/sh/sh.c (sh_output_mi_thunk): Do not pass dump_file to
4909         life_analysis and schedule_insns.
4910         * config/m68hc11/m68hc11.c (m68hc11_reorg): Do not pass dump_file to
4911         life_analysis.
4912         * config/mt/mt.c (mt_machine_reorg): Do not pass dump_file to
4913         dbr_schedule.
4914         * config/mips/mips.c (mips_reorg): Ditto.
4915         * config/ia64/ia64.c (ia64_reorg): Do not pass dump_file to
4916         schedule_ebbs.
4917
4918 2006-02-06  Aldy Hernandez  <aldyh@redhat.com>
4919
4920         * config/s390/s390.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
4921         (s390_mangle_fundamental_type): New.
4922         * config/s390/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
4923         Define.
4924
4925         * config/alpha/alpha.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
4926         (alpha_mangle_fundamental_type): New.
4927         * config/alpha/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
4928         Define.
4929
4930         * config/sparc/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
4931         Define.
4932         * config/sparc/linux64.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
4933         Define.
4934         * config/sparc/sparc.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
4935         (sparc_mangle_fundamental_type): New.
4936
4937 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
4938
4939         * config.gcc (s390-*-linux*): Add s390/t-linux to tmake_file.
4940         (s390x-*-linux*): Likewise.
4941         * config/s390/t-linux64 (SHLIB_MAPFILES): Removed.
4942         * config/s390/t-linux: New file.
4943
4944 2006-02-02  Bernd Schmidt  <bernd.schmidt@analog.com>
4945
4946         * config/i386/sync.md (sync_add<mode>, sync_sub<mode>, sync_ior<mode>,
4947         sync_and<mode>, sync_xor<mode>): Operand 0 is in-out.
4948
4949 2006-02-06  Daniel Berlin  <dberlin@dberlin.org>
4950
4951         * tree-ssa-pre.c (bb_value_sets_t): Add antic_safe_loads.
4952         (ANTIC_SAFE_LOADS): New macro.
4953         (find_or_generate_expression): Add prototype.
4954         (set_contains_value): Allow null set for sake of not always having
4955         to allocate ANTIC_SAFE_LOADS.
4956         (phi_translate): Move placement of AGGREGATE_TYPE_P check.
4957         Allow COMPONENT_REF too.
4958         (valid_in_set): Allow COMPONENT_REF.
4959         Check ANTIC_SAFE_LOADS too.
4960         (compute_antic_aux): Print out ANTIC_SAFE_LOADS.
4961         (compute_rvuse_and_antic_safe): Add ANTIC_SAFE computation, and
4962         rename.
4963         (can_PRE_operation): Add COMPONENT_REF.
4964         (create_component_ref_by_pieces): New function.
4965         (create_expression_by_pieces): Use create_component_ref_by_pieces.
4966         (insert_aux): Move AGGREGATE_TYPE_P check here.
4967         (compute_avail): Set bb local stmt uids.
4968         (pass_pre): Use TODO_update_ssa_only_virtuals.
4969
4970 2006-02-06  Ben Elliston  <bje@au.ibm.com>
4971
4972         * configure.ac: Unconditionally disable decimal float by default.
4973         * configure: Regenerate.
4974
4975 2006-02-06  Ben Elliston  <bje@au.ibm.com>
4976
4977         * read-rtl.c (read_name): Terminate reading on EOF.
4978
4979 2006-02-06  Ben Elliston  <bje@au.ibm.com>
4980
4981         * dfp.c (decimal_real_arithmetic): Change second argument type
4982         from int to enum tree_code. Do not always return true, but now
4983         return result of any call to decimal_do helper functions.
4984         * dfp.h (decimal_real_arithmetic): Update prototype.
4985
4986 2006-02-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
4987
4988         * config/sparc/sol2-bi.h (SPARC_DEFAULT_CMODEL): Set to CM_MEDMID.
4989
4990 2006-02-05  Andrew Pinski  <pinskia@physics.uc.edu>
4991
4992         PR tree-opt/25251
4993         * tree-cfg.c (cleanup_dead_labels): Also don't remove
4994         forced labels.
4995
4996 2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>
4997
4998         * tree-vrp.c (cfg_loops): Removed.
4999         (adjust_range_with_scev, vrp_visit_assignment, execute_vrp):
5000         Use current_loops instead of cfg_loops.  Pass flags to
5001         loop_optimizer_init.
5002         * cfgloopmanip.c (fix_loop_structure): Update only available
5003         information.
5004         * tree-ssa-loop-ch.c (copy_loop_headers): Pass flags to
5005         loop_optimizer_init.
5006         * modulo-sched.c (build_loops_structure): Removed.
5007         (sms_schedule): Use loop_optimizer_init.
5008         * loop-init.c (loop_optimizer_init): Use flags to determine
5009         which properties of loops to prepare.
5010         (rtl_loop_init): Pass flags to loop_optimizer_init.
5011         * tree-ssa-sink.c (execute_sink_code): Ditto.
5012         * tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
5013         * tree-ssa-pre.c (init_pre): Ditto.
5014         * cfgloop.h (LOOPS_NORMAL): New.
5015         (loop_optimizer_init): Declaration changed.
5016
5017 2006-02-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5018
5019         * pa/x-ada-hpux10, pa/t-pa-hpux10, pa/t-pa-hpux11: New files.
5020         * config.gcc (hppa[12]*-*-hpux10*): Use pa/t-pa-hpux10 instead of
5021         pa/t-pa.
5022         * config.gcc (hppa[12]*-*-hpux11*): Use pa/t-pa-hpux11 instead of
5023         pa/t-pa.
5024         * config.host (hppa*-*-hpux10*): Use pa/x-ada-hpux10 instead of
5025         pa/x-ada.
5026         * pa/t-pa-hpux: Add lib2funcs.asm and quadlib.c rules.
5027         * pa/t-pa64: Delete quadlib.c rule.
5028         * pa/x-ada: Revert last change.
5029         * pa/t-pa: Revert last change.  Delete quadlib.c rule.
5030
5031 2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>
5032
5033         PR rtl-optimization/26087
5034         * rtlanal.c (canonicalize_condition): Do not cross basic block
5035         boundaries.
5036
5037 2006-02-04  Alexandre Oliva  <aoliva@redhat.com>
5038
5039         PR debug/24444
5040         * config/ia64/ia64.c: Include debug.h.
5041         (MAX_ARTIFICIAL_LABEL_BYTES): New.
5042         (ia64_label_after_insn, ia64_dwarf2out_def_steady_cfa): New.
5043         (IA64_CHANGE_CFA_IN_EPILOGUE): Define to 0.
5044         (process_epilogue, process_set, process_for_unwind_directive):
5045         Output unwind info only if requested.  Add CFA info if requested.
5046         Add new arguments as needed.  Adjust callers.
5047         * config/ia64/ia64.h (ARG_POINTER_CFA_OFFSET): Override
5048         incorrect default.
5049         (DWARF2_FRAME_INFO): Define to zero.
5050         * config/ia64/unwind-ia64.c: Remove code that compensated for
5051         the CFA offset error fixed above.
5052         * config/ia64/t-ia64 (ia64.o): Depend on debug.h.
5053         * dwarf2out.c (DWARF2_FRAME_INFO): Define default.
5054         (dwarf2out_do_frame): Require nonzero DWARF2_UNWIND_INFO for
5055         -funwind-tables and -fexceptions to enable frame info.
5056         (dwarf2out_frame_init): Define initial CFA even if
5057         DWARF2_UNWIND_INFO is disabled.  Call initial_return_save if
5058         DWARF2_UNWIND_INFO is nonzero, not just defined.
5059         (dwarf2out_frame_finish): Output non-EH call frame info only
5060         if DWARF2_FRAME_INFO is nonzero.
5061         (convert_cfa_to_loc_list,
5062         compute_frame_pointer_to_cfa_displacement): Define even if
5063         unwind info is not supported.
5064         (gen_subprogram_die): Use the above unconditionally.  Remove
5065         legacy alternate code.
5066         * toplev.c (compile_file): Compile in call to
5067         dwarf2out_frame_finish if DWARF2_DEBUGGING_INFO is defined.
5068         (lang_dependent_init): Ditto for dwarf2out_frame_init.
5069
5070 2006-02-04  David Edelsohn  <edelsohn@gnu.org>
5071             Jakub Jelinek  <jakub@redhat.com>
5072
5073         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Mangle
5074         IBM extended float format long double as "g" on powerpc*-linux.
5075
5076 2006-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5077
5078         PR target/25926
5079         * pa/x-ada (X_ADA_CFLAGS): Define _X_HPUX10 on HP-UX 10.
5080         * pa/t-pa (TARGET_LIBGCC2_CFLAGS): Define _T_HPUX10 on HP-UX 10.
5081
5082 2006-02-03  Jason Merrill  <jason@redhat.com>
5083
5084         PR c++/25979
5085         * gimplify.c (gimplify_modify_expr_rhs): Disable *& optimization for now.
5086
5087         PR middle-end/25977
5088         * gimplify.c (gimplify_modify_expr_rhs): It's not always safe to do RVO
5089         on the return slot if it's an NRV.
5090
5091 2006-02-03  Zdenek Dvorak <dvorakz@suse.cz>
5092
5093         * tree-ssa-loop-ivopts.c (enum use_type): Remove USE_OUTER.
5094         (dump_use, add_derived_ivs_candidates, determine_use_iv_cost,
5095         rewrite_use): Do not handle USE_OUTER.
5096         (find_interesting_uses_outer_or_nonlin, find_interesting_uses_outer,
5097         add_iv_outer_candidates, may_replace_final_value,
5098         determine_use_iv_cost_outer, rewrite_use_outer): Removed.
5099         (find_interesting_uses_op): Functionality of
5100         find_interesting_uses_outer_or_nonlin moved here.
5101         (find_interesting_uses_outside): Use find_interesting_uses_op.
5102
5103 2006-02-03  Alan Modra  <amodra@bigpond.net.au>
5104
5105         PR target/25960
5106         * config/rs6000/darwin-ldouble.c (__gcc_qadd): Preserve -0.0 result.
5107
5108 2006-02-03  Andreas Krebbel  <krebbel1@de.ibm.com>
5109             Ulrich Weigand  <uweigand@de.ibm.com>
5110
5111         PR target/25864
5112         * config/s390/2084.md ("x_fsimptf", "x_fmultf", "x_fdivtf",
5113         "x_floadtf", "x_ftrunctf", "x_ftruncdf"): New insn reservations.
5114         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): New functions.
5115         * config/s390/s390.c (struct processor_costs): Add mxbr, sqxbr, dxbr
5116         and dxr fields.
5117         (z900_cost, z990_cost, z9_109_cost): Values for the new fields added.
5118         (s390_rtx_costs): Use the new fields to calculate rtx costs.
5119         (s390_secondary_input_reload_class, s390_secondary_output_reload_class):
5120         Define secondary reloads for TFmode moves.
5121         (constant_modes): Add TFmode.
5122         (NR_C_MODES): Set to 8.
5123         * config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): Add __LONG_DOUBLE_128__
5124         builtin define.
5125         (LONG_DOUBLE_TYPE_SIZE): Set to 128 or 64.
5126         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE, WIDEST_HARDWARE_FP_SIZE): Define.
5127         (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS,
5128         CANNOT_CHANGE_MODE_CLASS): Consider TFmode.
5129         * config/s390/s390.md ("type" attribute): Add fsimptf, floadtf, fmultf,
5130         fdivtf, fsqrttf, ftrunctf, ftruncdf as possible values.
5131         (FPR mode macro): Add TFmode.
5132         (DSF mode macro): New.
5133         (<de>, <dee> mode attributes): Removed.
5134         (<xde>, <xdee>, <RRe>, <RXe>, <Rf> mode attributes): New.
5135         ("*cmp<mode>_ccs_0", "*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs",
5136         "*cmp<mode>_ccs_ibm", "fix_trunc<FPR:mode><GPR:mode>2_ieee",
5137         "floatdi<mode>2", "floatsi<mode>2_ieee", "*add<mode>3",
5138         "*add<mode>3_cc", "*add<mode>3_cconly", "*add<mode>3_ibm",
5139         "*sub<mode>3", "*sub<mode>3_cc", "*sub<mode>3_cconly",
5140         "*sub<mode>3_ibm", "*mul<mode>3_ibm", "*fmadd<mode>", "*fmsub<mode>",
5141         "*div<mode>3", "*div<mode>3_ibm", "*neg<mode>2_cc",
5142         "*neg<mode>2_cconly", "*neg<mode>2", "*neg<mode>2_ibm",
5143         "*abs<mode>2_cc", "*abs<mode>2_cconly", "*abs<mode>2",
5144         "*abs<mode>2_ibm", "*negabs<mode>2_cc", "*negabs<mode>2_cconly",
5145         "*negabs<mode>2", "sqrt<mode>2"):
5146         Changed <de> to <xde>. R constraint replaced by <Rf>.
5147         ("*mul<mode>3"): Changed <dee> to <xdee>. R constraint replaced by
5148         <Rf>.
5149         ("fix_trunc<FPR:mode>di2"): 'FPR:' removed.
5150         ("*fmadd<mode>", "*fmsub<mode>"): FPR mode replaced by DSF.
5151         ("*movtf_64", "*movtf_31"): New insn definitions followed by 5
5152         splitters.
5153         ("movtf", "reload_outtf", "reload_intf", "trunctfdf2", "trunctfsf2",
5154         "extenddftf2", "extendsftf2"): New expanders.
5155         ("*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
5156         "*trunctfsf2_ibm", "*extenddftf2_ieee", "*extenddftf2_ibm",
5157         "*extendsftf2_ieee", "*extendsftf2_ibm"): New insn patterns.
5158         * config/s390/s390.opt (mlong-double-128, mlong-double-64):
5159         New options.
5160         * config/s390/t-crtstuff (TARGET_LIBGCC2_CFLAGS): Macro defined.
5161         * config/s390/libgcc-glibc.ver (__divtc3, __multc3, __powitf2,
5162         __fixtfti, __fixunstfti, __floattitf, __fixtfdi, __fixunstfdi,
5163         __floatditf): Add a GCC_4.1.0 symbol version tag.
5164         * doc/invoke.texi (-mlong-double-128, -mlong-double-64): Document
5165         the new options.
5166
5167 2006-02-02  Andrew Pinski  <pinskia@physics.uc.edu>
5168
5169         PR target/25377
5170         * config/i386/i386.c (ix86_function_ok_for_sibcall):
5171         Use targetm.binds_local_p instead of TREE_PUBLIC.
5172
5173 2006-02-02  Roger Sayle  <roger@eyesopen.com>
5174
5175         * tree.h (TYPE_STRING_FLAG): Document that this field may be used
5176         on INTEGER_TYPEs to indicate that it denotes a character type.
5177         * tree.c (build_common_tree_nodes): Set TYPE_STRING_FLAG on
5178         signed_char_type_node, unsigned_char_type_node and char_type_node.
5179         * dwarf2out.c (base_type_die): Treat CHAR_TYPE identically to
5180         INTEGER_TYPE.  Use TYPE_STRING_FLAG to decide whether to emit
5181         a DW_ATE_[un]signed_char instead of a DW_ATE_[un]signed.
5182
5183 2006-02-02  Zdenek Dvorak <dvorakz@suse.cz>
5184             Daniel Berlin  <dberlin@dberlin.org>
5185
5186         * tree-tailcall.c (arg_needs_copy_p): New function.
5187         (eliminate_tail_call): Use arg_needs_copy_p.
5188         (tree_optimize_tail_calls_1): Ditto. Also call add_virtual_phis.
5189         (add_virtual_phis): New function.
5190
5191 2006-02-02  Jakub Jelinek  <jakub@redhat.com>
5192
5193         * config/sparc/sparc.c (sparc_output_scratch_registers): Use
5194         #ignore instead of #scratch for %g7 .register directive.
5195
5196 2006-02-02  Andreas Tobler  <a.tobler@schweiz.ch>
5197
5198         * config/sparc/freebsd.h (ENDFILE_SPEC): Add space to separate
5199         object files.
5200
5201 2006-02-02  Bernd Schmidt  <bernd.schmidt@analog.com>
5202
5203         * flow.c (calculate_global_regs_live): Assert that there aren't any
5204         EDGE_FAKE edges.
5205
5206 2006-02-02  Paolo Bonzini  <bonzini@gnu.org>
5207
5208         * tree-flow-inline.h (bsi_after_labels): Rewrite, return
5209         what its name says.
5210         * lambda-code.c (perfect_nestify): Use bsi_insert_before on
5211         bsi_after_labels iterator.
5212         * tree-if-conv.c (find_phi_replacement_condition,
5213         replace_phi_with_cond_modify_expr): Likewise.
5214         * tree-scalar-evolution.c (scev_const_prop): Likewise.
5215         * tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Likewise.
5216
5217 2006-02-02  Diego Novillo  <dnovillo@redhat.com>
5218
5219         * tree-inline.c (copy_tree_r): Also copy OMP_CLAUSE nodes.
5220
5221 2006-02-02  Diego Novillo  <dnovillo@redhat.com>
5222
5223         PR 25990
5224         * tree-cfg.c (move_block_to_fn): Clear out the basic block
5225         array after growing it.
5226
5227 2006-02-01  Steve Ellcey  <sje@cup.hp.com>
5228
5229         PR middle-end/24901
5230         * fold-const.c (fold_checksum_tree): Change type of buf.
5231
5232 2006-02-01  Bernd Schmidt  <bernd.schmidt@analog.com>
5233
5234         * reload.c (push_secondary_reload): Initialize t_icode.
5235
5236 2006-02-01  Jakub Jelinek  <jakub@redhat.com>
5237
5238         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For
5239         -msoft-float -mlong-double-128 only issue a warning, but don't
5240         swich to DFmode long double.
5241
5242 2006-02-01  Hans-Peter Nilsson  <hp@axis.com>
5243
5244         * cse.c (fold_rtx) <case RTX_COMM_COMPARE, RTX_COMPARE>: When arg1
5245         has a constant equivalent, iterate over equivalents for arg0,
5246         calling simplify_relational_operation and if there's a result
5247         cheaper than X, apply fold_rtx and return the result.
5248
5249 2006-02-01  Jan Hubicka  <jh@suse.cz>
5250
5251         * opts.c (no_unit_at_a_time_default): New global variable.
5252         (decode_options): Use it.
5253         * opts.h (no_unit_at_a_time_default): Declare.
5254
5255 2006-02-01  Paul Brook  <paul@codesourcery.com>
5256
5257         * function.c (assign_parm_setup_reg): Use function argument promotion
5258         rules.
5259         * expr.c (expand_expr_real_1): Use function argument promotion rules
5260         for PARM_DECLs.
5261
5262 2006-02-01  Steve Ellcey  <sje@cup.hp.com>
5263
5264         * gcc.c (process_command): Change j to 'unsigned int'.
5265
5266 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
5267
5268         PR middle-end/26001
5269         * expr.c (expand_expr_real_1) <case ARRAY_REF>:
5270         Use the corrected index for the character
5271         out of the string constant.
5272
5273 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
5274
5275         * mode-switching.c (optimize_mode_switching): Fix size
5276         allocated for bb_info[n_entities].
5277
5278 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
5279
5280         * gcc.c (main): Correct type that is allocated for
5281         explicit_link_files.
5282
5283 2006-01-31  Jakub Jelinek  <jakub@redhat.com>
5284
5285         * config/s390/s390.c (init_alignment_context): Set
5286         ALIAS_SET_MEMORY_BARRIER on the MEM.
5287         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Likewise.
5288
5289 2006-01-31  Uttam Pawar  <uttamp@us.ibm.com>
5290
5291         PR middle-end/25933
5292         * loop-unroll.c (unroll_loop_runtime_iterations): Free
5293         dom_bbs pointer.
5294         * tree-ssa-live.c (type_var_init): Allocate bitmap after
5295         call to tpa_init.
5296
5297 2006-01-31  Marcin Dalecki  <martin@dalecki.de>
5298
5299         * tree-vrp.c: Use XNEW/XCNEW allocation wrappers.
5300         * regrename.c: Ditto.
5301         * tree-ssa-loop-im.c: Ditto.
5302         * tree-dump.c: Ditto.
5303         * tree-complex.c: Ditto.
5304         * genrecog.c: Ditto.
5305         * tree-ssa-threadupdate.c: Ditto.
5306         * tracer.c: Ditto.
5307         * java/class.c: Ditto.
5308         * java/jcf-parse.c: Ditto.
5309         * java/resource.c: Ditto.
5310         * java/except.c: Ditto.
5311         * java/jvspec.c: Ditto.
5312         * java/jcf-write.c: Ditto.
5313         * java/jcf-path.c: Ditto.
5314         * java/gjavah.c: Ditto.
5315         * java/zextract.c: Ditto.
5316         * java/jcf-io.c: Ditto.
5317         * java/jcf.h: Ditto.
5318         * java/buffer.c: Ditto.
5319         * java/lang.c: Ditto.
5320         * java/parse-scan.y: Ditto.
5321         * java/lex.c: Ditto.
5322         * java/lex.h: Ditto.
5323         * cfgloopmanip.c: Ditto.
5324         * postreload-gcse.c: Ditto.
5325         * tree-ssa-loop-manip.c: Ditto.
5326         * postreload.c: Ditto.
5327         * tree-ssa-loop-ch.c: Ditto.
5328         * loop.c: Ditto.
5329         * ipa-cp.c: Ditto.
5330         * cppspec.c: Ditto.
5331         * diagnostic.c: Ditto.
5332         * final.c: Ditto.
5333         * genoutput.c: Ditto.
5334         * gcc.c: Ditto.
5335         * cfghooks.c: Ditto.
5336         * cfgloopanal.c: Ditto.
5337         * objc/objc-act.c: Ditto.
5338         * gcov.c: Ditto.
5339         * genextract.c: Ditto.
5340         * genautomata.c: Ditto.
5341         * pretty-print.c: Ditto.
5342         * genemit.c: Ditto.
5343         * cgraphunit.c: Ditto.
5344         * flow.c: Ditto.
5345         * df-scan.c: Ditto.
5346         * haifa-sched.c: Ditto.
5347         * dominance.c: Ditto.
5348         * dbxout.c: Ditto.
5349         * tree-ssa-loop-ivopts.c: Ditto.
5350         * df-core.c: Ditto.
5351         * mode-switching.c: Ditto.
5352         * modulo-sched.c: Ditto.
5353         * graph.c: Ditto.
5354         * ipa-pure-const.c: Ditto.
5355         * cse.c: Ditto.
5356         * fix-header.c: Ditto.
5357         * web.c: Ditto.
5358         * tree-stdarg.c: Ditto.
5359         * ipa-utils.c: Ditto.
5360         * loop-init.c: Ditto.
5361         * ipa-inline.c: Ditto.
5362         * cfganal.c: Ditto.
5363         * global.c: Ditto.
5364         * alloc-pool.c: Ditto.
5365         * dwarf2out.c: Ditto.
5366         * opts.c: Ditto.
5367         * genattrtab.c: Ditto.
5368         * tree-ssa-loop-ivcanon.c: Ditto.
5369         * predict.c: Ditto.
5370         * timevar.c: Ditto.
5371         * lcm.c: Ditto.
5372         * fortran/gfortranspec.c: Ditto.
5373         * regmove.c: Ditto.
5374         * local-alloc.c: Ditto.
5375         * langhooks.c: Ditto.
5376         * function.c: Ditto.
5377         * tree-vectorizer.c: Ditto.
5378         * gcse.c: Ditto.
5379         * ipa-type-escape.c: Ditto.
5380         * alias.c: Ditto.
5381         * tree-if-conv.c: Ditto.
5382         * profile.c: Ditto.
5383         * ipa.c: Ditto.
5384         * tree-data-ref.c: Ditto.
5385         * loop-unroll.c: Ditto.
5386         * treelang/treetree.c: Ditto.
5387         * calls.c: Ditto.
5388         * bt-load.c: Ditto.
5389         * ggc-common.c: Ditto.
5390         * except.c: Ditto.
5391         * coverage.c: Ditto.
5392         * cselib.c: Ditto.
5393         * tree-cfgcleanup.c: Ditto.
5394         * tree-ssa-pre.c: Ditto.
5395         * cfgcleanup.c: Ditto.
5396         * loop-invariant.c: Ditto.
5397         * loop-iv.c: Ditto.
5398         * ipa-prop.c: Ditto.
5399         * print-tree.c: Ditto.
5400         * conflict.c: Ditto.
5401         * ggc-page.c: Ditto.
5402         * sched-deps.c: Ditto.
5403         * regclass.c: Ditto.
5404         * tree-object-size.c: Ditto.
5405         * combine.c: Ditto.
5406         * bb-reorder.c: Ditto.
5407         * resource.c: Ditto.
5408         * var-tracking.c: Ditto.
5409         * cfgloop.c: Ditto.
5410         * df-problems.c: Ditto.
5411         * reg-stack.c: Ditto.
5412         * tlink.c: Ditto.
5413         * gccspec.c: Ditto.
5414         * sched-rgn.c: Ditto.
5415         * tree-ssa-structalias.c: Ditto.
5416         * tree-ssa-reassoc.c: Ditto.
5417         * config/darwin-c.c: Ditto.
5418         * config/darwin.c: Ditto.
5419         * config/arm/arm.c: Ditto.
5420         * cfgrtl.c: Ditto.
5421         * collect2.c: Ditto.
5422         * reload1.c: Ditto.
5423
5424 2006-01-31  Nicolas Pitre  <nico@cam.org>
5425
5426         * arm.md (smaxsi3): Make aware of smax_m1.
5427         (smax_m1): New.
5428
5429 2006-01-31  Nathan Sidwell  <nathan@codesourcery.com>
5430
5431         * gcc/config/m68k/lb1sf68.asm: Use moveq to load small constants.
5432
5433 2006-01-31  Richard Guenther  <rguenther@suse.de>
5434
5435         * doc/invoke.texi (-msselibm): Document.
5436         * target.h (expand_library_builtin): New target hook.
5437         * builtins.c (expand_builtin): Use expand_library_builtin.
5438         (default_expand_library_builtin): New function.
5439         * gcc.c (LINK_GCC_MATH_SPEC): Define.
5440         (LINK_COMMAND_SPEC): Handle %(link_gcc_math).
5441         (link_gcc_math_spec): Declare.
5442         (static_specs): Add link_gcc_math_spec.
5443         * expr.h (default_expand_library_builtin): Declare.
5444         * target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
5445         (TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
5446         * config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
5447         * config/i386/i386.opt (msselibm): New target option.
5448         * config/i386/i386.c (ix86_builtin_function_variants): New array.
5449         (ix86_init_sse_abi_builtins): New function.
5450         (ix86_expand_library_builtin): Likewise.
5451         (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
5452         (override_options): Handle error conditions wrt -msselibm.
5453         (ix86_builtins): Add function codes for SSE2 ABI builtins.
5454         (ix86_init_builtins): Call ix86_init_sse_abi_builtins.
5455         * doc/extend.texi (__builtin_sse2_*): Document new target specific
5456         builtins.
5457
5458 2006-01-31  Richard Guenther  <rguenther@suse.de>
5459         Paolo Bonzini  <bonzini@gnu.org>
5460
5461         * doc/install.texi (--disable-libgcc-math): Document.
5462
5463 2006-01-30  Marcin Dalecki  <martin@dalecki.de>
5464
5465         * expr.h (expand_normal): new inline function.
5466         * builtins.c: use it, use EXPAND_NORMAL explicitely.
5467         * dojump.c: use it.
5468         * dwarf2out.c: use it.
5469         * expr.c: use it.
5470         * calls.c: use it.
5471         * expmed.c: use it.
5472         * except.c: use it.
5473         * config/sparc/sparc.c: use it.
5474         * config/i386/i386.c: use it.
5475         * config/rs6000/rs6000.c: use it.
5476         * config/arm/arm.c: use it.
5477         * config/mips/mips.c: use it.
5478         * stmt.c: use it, use EXPAND_NORMAL explicitely.
5479
5480 2006-01-30  Roger Sayle  <roger@eyesopen.com>
5481
5482         * config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast
5483         argv to the appropriate type.
5484
5485 2006-01-30  Zdenek Dvorak <dvorakz@suse.cz>
5486
5487         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Remove
5488         unreachable code.
5489
5490 2006-01-30  Ulrich Weigand  <uweigand@de.ibm.com>
5491
5492         PR target/26018
5493         * config/s390/s390.c (struct machine_function): New flag
5494         decomposed_literal_pool_addresses_ok_p.
5495         (s390_reorg): Set it before final stage of literal pool transforms.
5496         (s390_decompose_address): Only accept displacements of the form
5497         (minus (label_ref ...) (label_ref ...)) if that flag is set.
5498
5499 2006-01-30  Carlos O'Donell  <carlos@codesourcery.com>
5500
5501         * optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias
5502         the comparison routine return.
5503
5504 2006-01-30  Michael Matz  <matz@suse.de>
5505
5506         * global.c (find_reg): Only evict for global regs.
5507         Take n_refs into account and dump more info.
5508
5509 2006-01-30  J"orn Rennecke <joern.rennecke@st.com>
5510
5511         PR target/14798:
5512         * sh.c (pragma_interrupt, trap_exit, sp_switch): Remove variable.
5513         (pragma_trap, pragma_nosave_low_regs): Likewise.
5514         (current_function_anonymous_args): Likewise.
5515         (sh_deferred_function_attributes): New variable.
5516         (sh_deferred_function_attributes_tail): Likewise.
5517         (print_operand): For '@', look up trap_exit attribute.
5518         (calc_live_regs): Look up trapa_handler attribute.  For trapa
5519         handlers, save/restore fpscr, but don't do any other
5520         interrupt-specific saves.
5521         Don't save r0..r7 if the nosave_low_regs attribute is in effect.
5522         Fix check for partially saved registers to check for SHmedia.
5523         (sh_expand_prologue, sh_expand_epilogue): Look up sp_switch attribute.
5524         (sh_output_function_epilogue): Don't clear any of the removed
5525         variables.
5526         (sh_insert_attributes): Don't check pragma_interrupt.
5527         Insert deferred attributes.  Check that interrupt attribute is
5528         present for other attributes that require its presence.
5529         (sh_attribute_table): Add new attributes trapa_handler and
5530         nosave_low_regs.
5531         (sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
5532         Don't check for pragma_interrupt.  Don't store argument.
5533         * sh.h (pragma_interrupt, sp_switch): Don't declare.
5534         (sh_deferred_function_attributes): Declare.
5535         (sh_deferred_function_attributes_tail): Likewise.
5536         * sh.md (sp_switch_1): Add operand.  Change generator caller.
5537         (sh_pr_interrupt, sh_pr_trapa, sh_pr_nosave_low_regs): Remove.
5538         (*return_i): Don't use when trap_exit attribute is in effect.
5539         (*return_trapa): New insn pattern.
5540         * sh-c.c: New file.
5541         * config.gcc (sh[123456ble]*-* | sh-*-*): New trailer stanza,
5542         setting c_target_objs and cxx_target_objs.
5543         * t-sh: Add rule for sh-c.o.
5544
5545 2006-01-30  Richard Guenther  <rguenther@suse.de>
5546
5547         PR c++/23372
5548         * gimplify.c (gimplify_target_expr): Handle easy cases
5549         without creating a temporary.
5550
5551 2006-01-30  Nathan Sidwell  <nathan@codesourcery.com>
5552
5553         * vec.h (safe_grow): Remove duplicated line.
5554
5555 2006-01-29  Diego Novillo  <dnovillo@redhat.com>
5556
5557         PR 25874
5558         * omp-low.c (execute_expand_omp): Move CFG cleanup code ...
5559         (expand_omp): ... here.
5560         (expand_omp_parallel): Only remove barriers for combined
5561         parallel+workshare constructs.
5562
5563 2006-01-29  Eric Botcazou  <ebotcazou@adacore.com>
5564
5565         Revert
5566
5567         2005-11-09  Eric Botcazou  <ebotcazou@adacore.com>
5568         * tree.c (build_qualified_type): Chain the new type to the original
5569         type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO linked lists if it is
5570         a POINTER_TYPE or a REFERENCE_TYPE respectively.
5571         (build_pointer_type_for_mode): Only return unqualified types.
5572         (build_reference_type_for_mode): Likewise.
5573
5574 2006-01-29  Gabriel Dos Reis  <gdr@integgrable-solutions.net>
5575
5576         * configure.ac (cxx_compat_warn): Set if -Wc++-compat is supported.
5577         * Makefile.in (CXX_COMPAT_WARN): Define.
5578         * configure: Regenerate.
5579
5580 2006-01-29  Dorit Nuzman  <dorit@il.ibm.com>
5581
5582         PR tree-opt/25911
5583         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
5584         to an if check.
5585
5586 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5587
5588         * toplev.c: Fix thinko.
5589
5590 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5591             Marcin Dalecki  <martin@dalecki.de>
5592
5593         * toplev.c (floor_log2, exact_log2): Don't define if __cplusplus.
5594         (push_srcloc): Use XNEW.
5595         (init_asm_output, default_get_pch_validity): Use XNEWVEC.
5596
5597 2006-01-29  Kenneth Zadeck <zadeck@naturalbridge.com>
5598
5599         * df-core.c (df_set_blocks): Deleted all variable.
5600
5601 2006-01-28  Ian Lance Taylor  <ian@airs.com>
5602
5603         * cgraphunit.c (cgraph_assemble_pending_functions): Call
5604         cgraph_output_pending_asms.
5605
5606 2006-01-28  Zack Weinberg  <zackw@panix.com>
5607
5608         * c.opt: Add -W(no-)overlength-strings.
5609         * doc/invoke.texi: Document it.
5610         * c-opts.c (c_common_handle_option): -pedantic implies
5611         -Woverlength-strings, if not explicitly disabled already.
5612         (c_common_post_options): -Woverlength-strings defaults to off, and
5613         is always off for C++.
5614         * c-common.c (fix_string_type): Issue warning about strings longer
5615         than is portable only if warn_overlength_strings.  Rearrange code
5616         a little for clarity.
5617         * configure.in: Check for -Wno-overlength-strings as well before
5618         enabling -pedantic in stage 1.
5619         * Makefile.in (STRICT2_WARN): Add -Wno-overlength-strings.
5620         (gcc.o-warn, insn-automata.o-warn, build/gencondmd.o-warn): Delete.
5621
5622         * genconditions.c (write_header, write_one_condition)
5623         (write_conditions, write_writer): Consolidate very long strings
5624         that were broken up to fit in C89 portable limit.  Don't use
5625         printf when fputs will do.
5626
5627 2006-01-28  Adam Nemet  <anemet@caviumnetworks.com>
5628
5629         * combine.c (simplify_comparison <AND>): Check
5630         TRULY_NOOP_TRUNCATION before start using a subreg.
5631
5632         * config/mips/mips.md (*branch_zero<mode>,
5633         *branch_zero<mode>_inverted, *branch_equality<mode>,
5634         *branch_equality<mode>_inverted, *branch_equality<mode>_mips16):
5635         Remove mode check from comparisons.
5636
5637 2006-01-28  Kenneth Zadeck <zadeck@naturalbridge.com>
5638
5639         * config/mips/mips-protos.h (mips_set_live_on_entry): Deleted.
5640
5641 2006-01-28  Kazu Hirata  <kazu@codesourcery.com>
5642
5643         * expmed.c (const_mult_add_overflow_p): Remove.
5644         * expr.h: Remove the prototype for const_mult_add_overflow_p.
5645
5646         * recog.c (validate_replace_rtx_subexp): Remove.
5647         * recog.h: Remove the prototype for
5648         validate_replace_rtx_subexp.
5649
5650         * integrate.h: Remove the prototype for
5651         copy_decl_for_inlining.
5652         * rtl.h: Remove the prototype for mark_constant_function.
5653         * tree-vectorizer.h: Remove the prototype for
5654         vect_strip_conversion.
5655
5656         * modulo-sched.c (create_partial_schedule,
5657         free_partial_schedule, reset_partial_schedule): Make them
5658         static.
5659
5660         * hooks.c (hook_bool_rtx_int_false): Remove.
5661         * hooks.h: Remove the prototype for hook_bool_rtx_int_false.
5662
5663 2006-01-28  David Edelsohn  <edelsohn@gnu.org>
5664
5665         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
5666         and -mlong-double-128 are incompatible.
5667         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
5668         * config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): Add ppc64-fp.c.
5669         (TARGET_LIBGCC2_CFLAGS): Define.
5670         * config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): Same.
5671         (TARGET_LIBGCC2_CFLAGS): Same.
5672         * config/rs6000/ppc64-fp.c: Compile for 64-bit AIX.
5673
5674 2006-01-28  Kazu Hirata  <kazu@codesourcery.com>
5675
5676         PR c/19606.
5677         * c-typeck.c (build_binary_op): Perform implicit casts of
5678         operands before shortening them.
5679
5680         * cfgloopmanip.c (split_loop_bb): Remove.
5681         * cfgloop.h: Remove the prototype for split_loop_bb.
5682
5683         * cfgloop.c (flow_loop_outside_edge_p): Remove.
5684         * cfgloop.h: Remove the prototype for
5685         flow_loop_outside_edge_p.
5686
5687         * emit-rtl.c (init_virtual_regs): Make it static.
5688         * function.h: Remove the prototype for init_virtual_regs.
5689
5690         * recog.c (peephole2_optimize): Make it static.
5691         * recog.h: Remove the prototype for peephole2_optimize.
5692
5693 2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>
5694
5695         * df-scan.c (df_record_entry_block_defs): Check if
5696         INCOMING_RETURN_ADDR_RTX is defined.
5697
5698 2006-01-27  Daniel Berlin  <dberlin@dberlin.org>
5699             Kenneth Zadeck <zadeck@naturalbridge.com>
5700
5701         PR rtl-optimization/24762
5702         * doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY.
5703         * targhooks.c (hook_void_bitmap): New hook prototype.
5704         * targhoohs.h (hook_void_bitmap): Ditto.
5705         * bitmap.h (bitmap_head_def): Moved to coretypes.h.
5706         * coretypes.h (bitmap_head_def): Moved from bitmap.h.
5707         * target.h (live_on_entry): New function pointer.
5708         * df-scan.c (df_all_hard_regs): Removed.
5709         (df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs.
5710         (df_scan_free_internal): Added df->entry_block_defs.
5711         (df_scan_alloc): Ditto.
5712         (df_scan_dump): Ditto.
5713         (df_uses_record): Plumbed flag field properly thru calls.
5714         Record EH_RETURN_DATA_REGNO in eh blocks unconditionally.
5715         This part fixes PR24762.
5716         (df_bb_refs_record): Added code to make the frame and arg
5717         pointers live in EH blocks.
5718         (df_refs_record): Added call to df_record_entry_block_defs.
5719         (df_record_entry_block_defs): New function.
5720         * df-core.c: Added comments to describe new artifical defs.
5721         * df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags.
5722         (entry_block_defs): New field in struct df.
5723         (df_all_hard_regs): Deleted.
5724         * target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY.
5725         * df-problems.c (df_ru_bb_local_compute_process_def):
5726         Added code to handle artifical defs in the entry to a function.
5727         (df_ru_bb_local_compute): Ditto.
5728         (df_rd_bb_local_compute_process_def):  Ditto.
5729         (df_rd_bb_local_compute): Ditto.
5730         (df_lr_bb_local_compute): Ditto.
5731         (df_ur_bb_local_compute): Ditto.
5732         (df_urec_bb_local_compute):  Ditto.
5733         (df_chain_create_bb):  Ditto.
5734         (df_ur_local_finalize): Removed entry.
5735         (df_urec_init): Ditto.
5736         (df_urec_local_finalize): Ditto.
5737         (df_ri_bb_compute): Added detection of last use of pseudos.
5738         * Makefile.in (df-scan.o): Updated dependencies.
5739         * config/mips/mips-protos.h (mips_set_live_on_entry): Added.
5740         * config/mips/mips.c (mips_set_live_on_entry): Added.
5741         * config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value
5742         for target hook.
5743         * dce.c (marked_insn_p): Added code to handle artifical defs.
5744
5745 2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>
5746
5747         * config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
5748         intrinsic.
5749         (_mm_cvtsi128_si64): Likewise.
5750         (_mm_cvtsd_si64): Likewise.
5751         (_mm_cvttsd_si64): Likewise.
5752         (_mm_cvtsi64_sd): Likewise.
5753         (_mm_cvtsi64_si128): Likewise.
5754         * config/i386/mmintrin.h (_m_from_int64): Likewise.
5755         (_mm_cvtsi64_m64): Likewise.
5756         (_m_to_int64): Likewise.
5757         (_mm_cvtm64_si64): Likewise.
5758         * config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
5759         (_mm_cvttss_si64): Likewise.
5760         (_mm_cvtsi64_ss): Likewise.
5761         (_mm_cvtss_f32): Likewise.
5762
5763 2006-01-27  Carlos O'Donell  <carlos@codesourcery.com>
5764
5765         * c-pragma.c (init_pragma) : Call c_register_pragma_with_expansion
5766         for pragma redefine_extname.
5767
5768 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
5769
5770         PR target/25864
5771         * libgcc-std.ver: Add GCC_4.1.0 symbol version.
5772         * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append
5773         -mno-minimal-toc to previous content.
5774         (bispecs): Remove goal.
5775         * config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h.
5776         * config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4
5777         compatibility aliases on powerpc-*-*gnu*.
5778         * config/rs6000/libgcc-ppc-glibc.ver: New file.
5779         * config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append
5780         libgcc-ppc-glibc.ver on powerpc*-*-*gnu*.
5781         (TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs.
5782         (ldblspecs): New goal.
5783         * config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed.
5784         * mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and
5785         _df_to_tf.
5786         * config/fp-bit.h (TMODES): Don't define if none of TFLOAT,
5787         L_sf_to_tf or L_df_to_tf is defined.
5788
5789 2006-01-27  David Edelsohn  <edelsohn@gnu.org>
5790             Alan Modra  <amodra@bigpond.net.au>
5791
5792         PR target/25864
5793         * config/rs6000/linux.h (POWERPC_LINUX): Define.
5794         * config/rs6000/linux64.h (POWERPC_LINUX): Define.
5795         * config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC.
5796         * config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero.
5797         * config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero.
5798         * config/rs6000/rs6000.c (rs6000_ieeequad): New variable.
5799         (rs6000_override_options): Initialize rs6000_ieeequad.
5800         Initialize TFmode format to ibm_extended_format if not
5801         TARGET_IEEEQUAD.
5802         (rs6000_handle_option): Accept -mabi= ibmlongdouble and
5803         ieeelongdouble.
5804         (rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts.
5805         (rs6000_return_in_memory): Only return IEEEQUAD in memory.
5806         (function_arg_advance): IBM long double passed in two FPRs, not
5807         split.
5808         (function_arg): IBM long double passed in FPRs.
5809         (rs6000_pass_by_reference): Only IEEEQUAD passed by reference.
5810         (rs6000_gimplify_va_arg): IBM long double passed in two FPRs.
5811         Only multireg GPR aligned.
5812         (rs6000_init_libfuncs): Enable IBM long double functions if not
5813         IEEEQUAD.
5814         (rs6000_generate_compare): Use IBM long double compare if not
5815         TARGET_IEEEQUAD.
5816         * config/rs6000/rs6000.h (rs6000_ieeequad): Declare.
5817         (TARGET_IEEEQUAD): Define.
5818         (CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if
5819         not TARGET_IEEEQUAD.
5820         * config/rs6000/rs6000.md: Enable TFmode patterns if
5821         !TARGET_IEEEQUAD.
5822         * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
5823         * config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
5824         and -mlong-double-128 are incompatible.
5825         * doc/invoke.texi (-mabi): Collect options together.  Add
5826         ibmlongdouble and ieeelongdouble.
5827
5828 2006-01-27  Richard Sandiford  <richard@codesourcery.com>
5829
5830         * doc/rtl.texi (SYMBOL_REF_DATA): Adjust documentation for new
5831         opaque type.
5832         * optabs.c (init_one_libfunc): Use SET_SYMBOL_REF_DECL.
5833         * varasm.c (make_decl_rtl, build_constant_desc): Likewise.
5834         (force_const_mem): Use SET_SYMBOL_REF_CONSTANT.
5835         * rtl.h (rtunion_def): Remove rt_ptr.
5836         (X0PTR): Delete.
5837         (SYMBOL_REF_DATA): Use X0ANY instead of X0PTR.
5838         (SET_SYMBOL_REF_DECL, SET_SYMBOL_REF_CONSTANT): New macros.
5839         * config/i386/winnt.c (i386_pe_mark_dllexport)
5840         (i386_pe_mark_dllimport): Use SET_SYMBOL_REF_DECL.
5841
5842 2006-01-27 Gabor Loki <loki@gcc.gnu.org>
5843
5844         * cfgcleanup.c (try_crossjump_to_edge): Fix comment typo.
5845
5846 2006-01-26 Alexandre Oliva  <aoliva@redhat.com>
5847
5848         PR other/24829
5849         PR target/24831
5850         * gthr-dce.h: Do not gthrw-ify pthread_once_init,
5851         pthread_key_delete.  From John David Anglin.  gthrw-ify
5852         pthread_getunique_np only if it it's not a macro.  Delete
5853         UNUSED macro.
5854         (__gthread_objc_condition_allocate, __gthread_objc_condition_deallocate,
5855         __gthread_objc_condition_wait, __gthread_objc_condition_broadcast,
5856         __gthread_objc_condition_signal, __gthread_key_delete): Add
5857         "__attribute__ ((__unused__))" to unused arguments.
5858         (__gthread_recursive_mutex_init_function): Add missing return.
5859         * gthr-dce.h, gthr-tpf.h, gthr-solaris.h, gthr-posix.h,
5860         gthr-posix95.h: Use macro-based approach for name redirection
5861         on targets missing weakref.
5862
5863 2006-01-26  Zack Weinberg  <zackw@panix.com>
5864
5865         * genconditions.c (write_header): In generated code, #ifdef out
5866         all includes and fake declarations, except includes of bconfig.h
5867         and system.h, unless GCC_VERSION >= 3001.  Do not include
5868         gensupport.h in any case.
5869         (write_conditions): Generate a definition of struct c_test.  Add
5870         a comment to the generated #endif.
5871         (write_one_condition): Escape backslashes in string too.
5872         (write_writer): Generated code must escape backslashes and quote
5873         marks (but not newlines) in the strings it writes.
5874         * Makefile.in (build/gencondmd.o): Update dependencies.
5875
5876 2006-01-26  Steve Ellcey  <sje@cup.hp.com>
5877
5878         PR target/25961
5879         * Makefile.in (insn-automata.o): Add header file dependencies.
5880         * genautomata.c: Add includes.
5881
5882 2006-01-26  Steve Ellcey  <sje@cup.hp.com>
5883
5884         PR target/25961
5885         * Makefile.in (insn-automata.o): Add -Wno-error flag.
5886
5887 2006-01-26  Paolo Bonzini  <bonzini@gnu.org>
5888
5889         * configure.ac: Expect target tools paths to be passed from the toplevel
5890         and wrap the detection into AS_SET_VAR_IF.  Extract side-effects out of
5891         AS_SET_VAR_IF.
5892         * acinclude.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL): Remove.
5893
5894 2006-01-26  Alexandre Oliva  <aoliva@redhat.com>
5895
5896         PR c/25892
5897         * c.opt (Wpointer-sign): Init to -1.
5898         * c-opts.c (c_common_handle_option): Set to 1 on OPT_Wall and
5899         OPT_pedantic, to 0 otherwise.
5900         * doc/invoke.texi: Update.
5901
5902 2006-01-26  Paolo Bonzini  <bonzini@gnu.org>
5903
5904         * config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Emit
5905         constants provided by 80387 instructions in the destination mode.
5906
5907 2006-01-26  Richard Guenther  <rguenther@suse.de>
5908             Andrew Pinski  <pinskia@physics.uc.edu>
5909
5910         PR tree-opt/21470
5911         partial PR tree-opt/17064
5912         * tree-ssa-structalias.c (intra_create_variable_infos):
5913         Create heap variables for incoming parameters if
5914         flag_argument_noalias > 1.
5915         (find_what_p_points_to): Look through default defs of
5916         parameter decls.
5917
5918 2006-01-26  Jeff Law  <law@redhat.com>
5919
5920         PR ada/25900
5921         * tree-vrp.c (extract_range_from_assert): When merging a VR_RANGE
5922         with a VR_ANTI_RANGE and the VR_ANTI_RANGE is completely contained
5923         within the VR_RANGE, use the VR_RANGE as the result, not the
5924         VR_ANTI_RANGE.
5925         (adjust_range_with_scev): Reject ranges from SCEV which are out of
5926         bounds for the type.
5927
5928 2006-01-26  Daniel Berlin  <dberlin@dberlin.org>
5929
5930         * tree-ssa-alias.c (maybe_create_global_var): Change
5931         subvar walking to an assertion that we don't have subvar'd variables.
5932
5933 2006-01-26  Andrew Pinski  <pinskia@physics.uc.edu>
5934
5935         PR C/25861
5936         * c-common.c (c_common_truthvalue_conversion) <case ADDR_EXPR>:
5937         Use a new variable, inner.  PARM_DECLs are always non-weak.
5938
5939 2006-01-26  Shantonu Sen  <ssen@opendarwin.org>
5940
5941         * tree.h (OMP_CLAUSE_SUBCODE_CHECK): Add definition for
5942         --disable-checking.
5943
5944 2006-01-26  Adam Nemet  <anemet@caviumnetworks.com>
5945
5946         * config/mips/mips.md (*clear_upper32): New combiner pattern.
5947
5948 2006-01-26  Richard Earnshaw  <richard.earnshaw@arm.com>
5949
5950         * arm.md (smaxsi3, sminsi3): Convert to define_expand.
5951         (smax_insn, smin_insn, smax_0, smin_0): New.
5952
5953 2006-01-26  Hans-Peter Nilsson  <hp@axis.com>
5954
5955         PR target/25947
5956         * config/cris/cris.c (cris_order_for_addsi3): New function.
5957         * config/cris/cris-protos.h: Prototype it.
5958         * config/cris/cris.md (split for "move.S1 [rx=rx+i],ry")
5959         (split for "move.S1 ry,[rx=rx+i]", split for "clear.[bwd] [rx=rx+i]")
5960         (split for "mov(s|u).S1 [rx=rx+i],ry", split for "op.S1 [rx=rx+i],ry")
5961         (split for "op.S1 [rx=rx+i],ry (swapped)")
5962         (split for "op(s|u).S1 [rx=rx+i],ry")
5963         (split for "op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)"):
5964         Apply cris_order_for_addsi3 when generating addsi3 insns.
5965
5966 2006-01-25  Diego Novillo  <dnovillo@redhat.com>
5967
5968         * tree.h (TREE_RANGE_CHECK): Fix range predicate.
5969         (TREE_BLOCK): Add call to EXPR_CHECK.
5970
5971 2006-01-25  Diego Novillo  <dnovillo@redhat.com>
5972
5973         PR 25886
5974         * tree-dump.c (dequeue_and_dump): Handle OMP_CLAUSE.
5975         * tree-pretty-print.c (dump_omp_clause): Extract from ...
5976         (dump_omp_clauses): ... here.
5977         (dump_generic_node): Handle OMP_CLAUSE.
5978         * tree.c (omp_clause_num_ops): New.
5979         (omp_clause_code_name): New.
5980         (tree_code_size): Handle OMP_CLAUSE.
5981         (tree_size): Likewise.
5982         (make_node): Document handling of OMP_CLAUSE.
5983         (tree_node_structure): Handle OMP_CLAUSE.
5984         (omp_clause_check_failed): New.
5985         (omp_clause_range_check_failed): New.
5986         (omp_clause_operand_check_failed): New.
5987         (build_omp_clause): New.
5988         (walk_tree): Adjust handling of OMP_CLAUSE_* nodes.
5989         * tree.h (enum omp_clause_code): Declare.
5990         (OMP_CLAUSE_SUBCODE_CHECK): Define.
5991         (OMP_CLAUSE_RANGE_CHECK): Define.
5992         (OMP_CLAUSE_ELT_CHECK): Define.
5993         (omp_clause_check_failed): Declare.
5994         (omp_clause_operand_check_failed): Declare.
5995         (omp_clause_range_check_failed): Declare.
5996         (OMP_CLAUSE_CHAIN): Do not use TREE_RANGE_CHECK.
5997         (OMP_CLAUSE_OPERAND): Use OMP_CLAUSE_RANGE_CHECK.
5998         (OMP_CLAUSE_PRIVATE_DEBUG): Use OMP_CLAUSE_SUBCODE_CHECK.
5999         (OMP_CLAUSE_LASTPRIVATE): Likewise.
6000         (OMP_CLAUSE_IF_EXPR): Likewise.
6001         (OMP_CLAUSE_NUM_THREADS_EXPR): Likewise.
6002         (OMP_CLAUSE_SCHEDULE_CHUNK_EXPR): Likewise.
6003         (OMP_CLAUSE_REDUCTION_CODE): Likewise.
6004         (OMP_CLAUSE_REDUCTION_INIT): Likewise.
6005         (OMP_CLAUSE_REDUCTION_MERGE): Likewise.
6006         (OMP_CLAUSE_REDUCTION_PLACEHOLDER): Likewise.
6007         Use tree_node.omp_clause.subcode instead of TREE_COMPLEXITY.
6008         (OMP_CLAUSE_SCHEDULE_KIND): Likewise.
6009         (OMP_CLAUSE_DEFAULT_KIND): Likewise.
6010         (OMP_CLAUSE_CODE): Define.
6011         (OMP_CLAUSE_SET_CODE): Define.
6012         (OMP_CLAUSE_CODE): Define.
6013         (OMP_CLAUSE_OPERAND): Define.
6014         (struct tree_omp_clause): Declare.
6015         (union tree_node): Add field 'omp_clause'.
6016         * treestruct.def (TS_OMP_CLAUSE): Define.
6017         * tree.def (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_SHARED
6018         OMP_CLAUSE_FIRSTPRIVATE, OMP_CLAUSE_LASTPRIVATE,
6019         OMP_CLAUSE_REDUCTION, OMP_CLAUSE_COPYIN,
6020         OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_IF,
6021         OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE,
6022         OMP_CLAUSE_NOWAIT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Remove.
6023         (OMP_CLAUSE): Define.
6024         * print-tree.c (print_node): Handle OMP_CLAUSE.
6025         * omp-low.c: Adapt all uses of OMP_CLAUSE_* nodes.
6026         * c-typeck.c: Likewise.
6027         * gimplify.c: Likewise.
6028         * c-omp.c: Likewise.
6029         * tree-nested.c: Likewise.
6030         * tree-inline.c: Likewise.
6031         * c-parser.c: Likewise.
6032         * gimple-low.c (lower_omp_directive): Do not set TREE_BLOCK on
6033         clauses.
6034
6035 2006-01-25  Roger Sayle  <roger@eyesopen.com>
6036
6037         PR rtl-optimization/25703
6038         * combine.c (try_combine): Handle zero_extract and strict_low_part
6039         of non-lowpart SUBREGs for constant reg_subword_p set optimization.
6040
6041 2006-01-25  Peter Bergner  <bergner@vnet.ibm.com>
6042
6043         * global.c: Fix comment typos.
6044
6045 2006-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
6046
6047         PR target/25758
6048         * config/i386/i386.c (output_pic_addr_const) <case SYMBOL_REF>:
6049         Use output_addr_const instead of assemble_name.
6050
6051 2006-01-25  Paolo Bonzini  <bonzini@gnu.org>
6052
6053         * Makefile.in (sched-vis.o): Update dependencies.
6054         * haifa-sched.c (sched_finish): Clear current_sched_info.
6055         * cfg.c (dump_bb_info): New, split from dump_flow_info.
6056         (dump_flow_info): Call it.
6057         * passes.c (execute_todo): Call print_rtl_slim_with_bb to make
6058         a slim RTL dump.
6059         * basic-block.h (dump_bb_info): Declare.
6060         * tree-dump.c (dump_enable_all): OR the flags of a -fdump-tree-all
6061         option, and apply options only for dump files whose TDF_RTL,
6062         TDF_TREE, or TDF_IPA bits match.
6063         * rtl.h: Declare new functions exported from sched-vis.c.
6064         * sched-vis.c: Enable also if scheduling is not used.
6065         (print_value): Print the mode of registers if not inside scheduling.
6066         (print_insn): Make it work outside the scheduler.  Beautify the output
6067         a bit.
6068         (dump_insn_slim, debug_insn_slim, print_rtl_slim_with_bb): New.
6069
6070 2006-01-25  Richard Sandiford  <richard@codesourcery.com>
6071
6072         * doc/rtl.texi (SYMBOL_REF_CONSTANT, SYMBOL_REF_DATA): Document.
6073         * gengtype.c (adjust_field_rtx_def): Garbage-collect field 2 of
6074         a SYMBOL_REF as either a tree or a constant_descriptor_rtx,
6075         depending on the value of CONSTANT_POOL_ADDRESS_P.
6076         * optabs.c (init_one_libfunc): Nullify SYMBOL_REF_DATA rather than
6077         SYMBOL_REF_DECL.
6078         * varasm.c (make_decl_rtl, build_constant_desc): Set SYMBOL_REF_DATA
6079         rather than SYMBOL_REF_DECL.
6080         (rtx_constant_pool): Remove const_rtx_sym_htab.
6081         (const_desc_rtx_sym_hash, const_desc_rtx_sym_eq): Delete.
6082         (init_varasm_status): Don't initialize const_rtx_sym_htab.
6083         (force_const_mem): Point SYMBOL_REF_DATA to the constant pool entry.
6084         Remove handling of const_rtx_sym_htab.
6085         (find_pool_constant): Delete.
6086         (get_pool_constant, get_pool_constant_mark): Use SYMBOL_REF_CONSTANT
6087         rather than find_pool_constant.
6088         (get_pool_constant_for_function): Delete.
6089         (get_pool_mode, mark_constant): Use SYMBOL_REF_CONSTANT rather than
6090         find_pool_constant.
6091         * rtl.h (rtunion_def): Add rt_constant and rt_ptr fields.
6092         (X0CONSTANT, X0PTR, SYMBOL_REF_DATA): New macros.
6093         (SYMBOL_REF_DECL): Return NULL if CONSTANT_POOL_ADDRESS_P.
6094         (SYMBOL_REF_CONSTANT): New macro.
6095         (get_pool_constant_for_function): Delete.
6096         * config/i386/winnt.c (i386_pe_mark_dllexport): Set SYMBOL_REF_DATA
6097         rather than SYMBOL_REF_DECL.
6098         (i386_pe_mark_dllimport): Likewise.
6099         * config/rs6000/rs6000.c (rs6000_emit_move): Copy SYMBOL_REF_DATA
6100         rather than SYMBOL_REF_DECL.
6101         * config/darwin.c (machopic_indirect_data_reference): Likewise.
6102         (machopic_indirect_call_target): Likewise.
6103
6104 2006-01-25  Eric Botcazou  <ebotcazou@adacore.com>
6105
6106         * flow.c (delete_noop_moves): Add missing EOL to dump message.
6107
6108 2006-01-25  Richard Sandiford  <richard@codesourcery.com>
6109
6110         * genattrtab.c (gen_bypass): Allow bypasses to contain whitespace.
6111
6112 2006-01-25  Kaz Kojima  <kkojima@gcc.gnu.org>
6113
6114         * config/sh/predicates.md (sh_register_operand): Accept CONST_DOUBLE.
6115
6116 2006-01-24  David Daney  <ddaney@avtrex.com>
6117
6118         PR java/25816
6119         * configure.ac (enable_tls): New enable option.
6120         (HAVE_AS_TLS): Don't do assembler check if enable_tls set.
6121         * configure: Regenerate.
6122         * doc/install.texi (--enable-tls): Document new option.
6123         (--disable-tls): Ditto.
6124
6125 2006-01-24  Richard Henderson  <rth@redehat.com>
6126
6127         * alias.h (ALIAS_SET_MEMORY_BARRIER): New.
6128         * alias.c (true_dependence): Respect it.
6129         (canon_true_dependence, write_dependence_p): Likewise.
6130         * builtins.c (get_builtin_sync_mem): Set it.
6131
6132 2006-01-25  Zdenek Dvorak <dvorakz@suse.cz>
6133
6134         * loop-iv.c (iv_analysis_loop_init): Use df analysis in a more
6135         efficient way.
6136
6137 2006-01-24  DJ Delorie  <dj@redhat.com>
6138
6139         * expmed.c (store_bit_field): Don't arbitrarily deny using insv
6140         for storing constants in single-bit bitfields.
6141
6142 2006-01-25  Ben Elliston  <bje@au.ibm.com>
6143
6144         * dfp.c (dfp_byte_swap): Use uint32_t and not unsigned long.
6145
6146 2006-01-24  Andrew Pinski  <pinskia@physics.uc.edu>
6147
6148         PR tree-opt/25860
6149         * tree-ssa-pre.c (phi_translate): Return NULL
6150         for AGGREGATE_TYPE's.
6151
6152 2006-01-24  Zack Weinberg  <zackw@panix.com>
6153
6154         * genautomata.c (process_state_for_insn_equiv_partition):
6155         Use xcalloc for insn_arcs_array.
6156         * vec.h (DEF_VEC_ALLOC_FUNC_I): New set of templates.
6157         (DEF_VEC_ALLOC_I): Use it, not DEF_VEC_ALLOC_FUNC_P.
6158
6159 2006-01-24  Richard Henderson  <rth@redhat.com>
6160
6161         * genextract.c (VEC_safe_set_locstr): Take VEC by reference;
6162         update all callers.
6163
6164 2006-01-23  Paolo Bonzini  <bonzini@gnu.org>
6165
6166         PR rtl-optimization/25890
6167         PR rtl-optimization/25905
6168         * combine.c (expand_compound_operation, expand_field_assignment):
6169         Fail if the bitfield's final position is out of bounds.
6170
6171 2006-01-24  Ian Lance Taylor  <ian@airs.com>
6172
6173         PR middle-end/25930
6174         * cgraphunit.c (cgraph_output_in_order): Don't clear
6175         cgraph_asm_nodes until after asm strings have been output.
6176
6177 2006-01-23  Adam Nemet  <anemet@caviumnetworks.com>
6178
6179         * fix-header.c (read_scan_file): Add new parameter imultilib when
6180         calling register_include_chains.
6181
6182 2006-01-23  Diego Novillo  <dnovillo@redhat.com>
6183
6184         * omp-low.c: Update documentation.
6185
6186 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
6187             Daniel Berlin  <dberlin@dberlin.org>
6188
6189         PR tree-opt/25315
6190         PR tree-opt/25857
6191         * tree-ssa-pre.c (insert_extra_phis): If an incomming edge is abnormal
6192         return from the function.
6193
6194 2006-01-22  Zack Weinberg  <zackw@panix.com>
6195
6196         * rtl.def (match_code): Add second argument.
6197         * genpreds.c (write_extract_subexp): New function.
6198         (write_match_code): Add path argument.  Use write_extract_subexp.
6199         (write_predicate_expr): Pass path to write_match_code.
6200         (mark_mode_tests): MATCH_CODE applied to a subexpression does
6201         not perform a mode test.
6202         * genrecog.c (compute_predicate_codes): MATCH_CODE applied to
6203         a subexpression does not constrain the top-level code set.
6204         * read-rtl.c (read_rtx_variadic): New function.
6205         (read_rtx_1): Use it; allow AND and IOR to be variadic.
6206         * doc/md.texi: Document new notation.
6207         * config/i386/predicates.md (cmpsi_operand_1): Fold into ...
6208         (cmpsi_operand): ... here, using new notation.
6209
6210 2006-01-22  Zack Weinberg  <zackw@panix.com>
6211
6212         * varray.c: Remove GENERATOR_FILE #ifdefs.
6213
6214 2006-01-22  Zack Weinberg  <zackw@panix.com>
6215
6216         * genautomata.c (output_reserved_units_table): Emit nothing if
6217         description->query_units_num is zero.  Remove extra blank line.
6218         (output_cpu_unit_reservation_p): Short circuit
6219         if description->query_units_num is zero.
6220
6221 2006-01-22  Zack Weinberg  <zackw@panix.com>
6222
6223         * genattrtab.c: Don't include genattrtab.h.  Define ATTR_NONE
6224         and ATTR_SPECIAL (from genattrtab.h).  Don't define num_dfa_decls
6225         nor any of the random handful of variables that used to be necessary
6226         when this program was linked with rtlanal.o.  Prune set of forward
6227         function declarations.
6228         (struct attr_desc): Remove static_p field.
6229         (hash_obstack, temp_obstack, attr_hash_table, attr_printf)
6230         (check_attr_test, make_internal_attr, make_numeric_value): Make static.
6231         (attr_string): Do not read the character one past the length of
6232         the string.
6233         (write_attr_get, find_attr, make_internal_attr): Don't touch static_p.
6234         (struct insn_reserv, all_insn_reservs, last_insn_reserv_p)
6235         (n_insn_reservs, gen_insn_reserv, struct bypass_list, all_bypasses)
6236         (n_bypasses, gen_bypass_1, gen_bypass, process_bypasses)
6237         (make_automaton_attrs): New.
6238         (main): Do not call into genautomata.  Call local gen_bypass
6239         and gen_insn_reserv as appropriate.  Call make_automaton_attrs.
6240         Remove special case for insn_alts.
6241         * genautomata.c: Include gensupport.h; not genattrtab.h nor
6242         varray.h (leftover from previous change).  Prune set of forward
6243         function declarations.  Remove state_alts fields from all
6244         structures.  Remove state_alts_table from struct automaton.
6245         Make everything except main static.  Do not maintain num_dfa_decls.
6246         Do not maintain state_alts fields of various structures.
6247         (process_decls): Don't validate condexp for dm_insn_reserv decls.
6248         (add_arc): Remove state_alts argument.  All callers updated.
6249         (output_reserved_units_table): Emit #ifdef here...
6250         (output_tables): ...not here.  Don't generate state_alts tables.
6251         (expand_automata): Don't generate attributes.
6252         (write_automata): Don't generate state_alts functions.
6253         (main): New function.
6254         (it_is_empty_reserv_sets, output_state_alts_full_vect_name)
6255         (output_state_alts_comb_vect_name, output_state_alts_check_vect_name)
6256         (AUTOMATON_STATE_ALTS_MACRO_NAME, INTERNAL_STATE_ALTS_FUNC_NAME)
6257         (STATE_ALTS_FUNC_NAME, INSN_DEFAULT_LATENCY_FUNC_NAME)
6258         (BYPASS_P_FUNC_NAME, output_state_alts_table)
6259         (output_automata_list_state_alts_code, output_internal_state_alts_func)
6260         (output_state_alts_func, make_insn_alts_attr, make_bypass_attr)
6261         (make_internal_dfa_insn_code_attr, make_default_insn_latency_attr):
6262         Delete.
6263         * genattr.c: Declare internal_dfa_insn_code in insn-attr.h.
6264         * genattrtab.h: Delete file.
6265         * Makefile.in (OBJS-common): Add insn-automata.o.
6266         (insn-automata.o): New rule.
6267         (simple_generated_c): Add insn-automata.c.
6268         (build/genattrtab.o, build/genautomata.o): Update dependencies.
6269         (genprogmd): Add automata.
6270         (build/genattrtab): Needs no extra objects nor libraries.
6271         (build/genautomata): Needs build/vec.o and -lm.
6272
6273 2006-01-22  Zack Weinberg  <zackw@panix.com>
6274
6275         * genautomata.c (process_state_longest_path, max_dfa_issue_rate)
6276         (output_dfa_max_issue_rate, locked_states_num): Delete.
6277         (struct automaton): Add locked_states field.
6278         (output_dead_lock_vect): Save number of locked states in
6279         automaton->locked_states.  If it is zero, don't print anything.
6280         (output_max_insn_queue_index_def): Define max_insn_queue_index const.
6281         (output_internal_dead_lock_func): Only test the dead_lock_vect
6282         for automata that have locked states.
6283         (output_statistics): Always print the number of locked states for
6284         each automaton.  Calculate total number of locked states here.
6285         (write_automata): Don't call output_dfa_max_issue_rate.
6286         * genattrtab.c: Define length_unit_log as a const variable.
6287         * genattr.c: Don't emit MAX_DFA_ISSUE_RATE.  Declare
6288         max_insn_queue_index const.
6289         * final.c (length_unit_log): Declare const.
6290         * doc/tm.texi: Remove all references to MAX_DFA_ISSUE_RATE.
6291
6292 2006-01-22  Zack Weinberg  <zackw@panix.com>
6293
6294         * genautomata.c:  Include vec.h, not varray.h.
6295         Delete vla_ptr_t, all of the VLA_PTR_ macros, and all of the
6296         VLA_HWINT_ macros.  Change vla_hwint_t to a typedef for
6297         VEC(vect_el_t,heap) *.  Convert all uses of VLA_* macros to
6298         VEC_* macros operating on appropriately typed vectors, or to
6299         malloced arrays when the size is known in advance.  Const-ify
6300         many char* variables and function arguments.  No functional changes.
6301         * Makefile.in (build/varray.o): Delete rule.
6302         (build/genattrtab): Depend on build/vec.o instead of build/varray.o.
6303         (build/genautomata.o): Depend on vec.h instead of $(VARRAY_H).
6304
6305 2006-01-22  Zack Weinberg  <zackw@panix.com>
6306
6307         * gensupport.c: Define get_insn_name and record_insn_name here.
6308         (read_md_rtx): Call record_insn_name as appropriate.
6309         * genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
6310         * genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
6311         * genpreds.c, genrecog.c: Don't define get_insn_name nor
6312         record_insn_name.
6313         * Makefile.in (BUILD_SUPPORT, BUILD_PRINT): Fold into BUILD_RTL.
6314         (BUILD_VARRAY): Delete.
6315         (genprognormal): Rename genprogmd.  Fold in all programs from
6316         genprognoprint; also attrtab.
6317         (build/genattrtab): Just mention genautomata.o and varray.o.
6318         Reorganize a bit, add comments to make the categories clearer.
6319
6320 2006-01-22  Zack Weinberg  <zackw@panix.com>
6321
6322         * genconditions.c (condition_table, add_condition): Delete.
6323         (write_conditions): Don't emit n_insn_conditions nor
6324         insn_elision_unavailable.  Issue the gcc version #ifdef here,
6325         inside the table, with no #else clause ...
6326         (write_header): ...not here.
6327         (write_writer): New function.
6328         (main): Don't initialize condition_table.  Use add_c_test.
6329         Call write_writer.
6330         * gensupport.c (init_md_reader_args_cb): Handle multiple input
6331         files on the command line.
6332         (maybe_eval_c_test): Don't check insn_elision_unavailable.
6333         Return -1 if there is no entry in the table, don't abort.
6334         (add_c_test, traverse_c_tests): New functions.
6335         * gensupport.h (insn_elision_unavailable, insn_conditions)
6336         (n_insn_conditions): Delete declarations.
6337         (add_c_test, traverse_c_tests): Declare.
6338         * read-rtl.c: Include gensupport.h.
6339         (read_conditions): New function.
6340         (read_rtx): If read_rtx_1 returns 0, treat as EOF.
6341         (read_rtx_1): If we get EOF when we were looking for an initial
6342         open paren, return 0.  Call read_conditions when appropriate.
6343         * Makefile.in: Kill BUILD_EARLY_SUPPORT and all references to
6344         dummy-conditions.o.  Eliminate references to insn-conditions.o,
6345         or change them to build/gencondmd.o, as appropriate.  Remove
6346         insn-constants.h from $(simple_generated_h) and insn-conditions.c
6347         from $(simple_generated_c).  For all files remaining in those
6348         two lists, add insn-conditions.md to the generator command line.
6349         Give insn-constants.h/s-constants their own rules.  Add rules
6350         for build/gencondmd.c, s-conditions, insn-conditions.md, s-condmd.
6351         (build/read-rtl.o): Depend on gensupport.h.
6352         (genprognormal): Include preds.
6353         (genprogearly): Rename genprognoprint; only difference is now that
6354         they don't link with $(BUILD_PRINT).
6355         * dummy-conditions.c: Delete.
6356
6357 2006-01-22  Zack Weinberg  <zackw@panix.com>
6358
6359         * genextract.c: Don't include insn-config.h.  Do include vec.h.
6360         Declare vectors of int, char, and locstr.
6361         (locstr): New typedef.
6362         (struct extraction): Make all array fields into bare pointers.
6363         (insn_name_ptr, insn_name_ptr_size): Move down by get_insn_name.
6364         (insn_code_number): Delete.
6365         (accum_extract): New struct.
6366         (VEC_safe_set_locstr, VEC_char_to_string): New functions.
6367         (gen_insn): Take insn_code_number as an argument.  Use an
6368         accum_extract structure instead of loading data directly into
6369         a struct extraction, and having to know how big it might get.
6370         (walk_rtx): Operate entirely on an accum_extract structure.
6371         (print_path): Avoid unnecessary use of printf.
6372         (print_header): New function, split out of main.  Distinguish
6373         more carefully between an unrecognizable insn and an insn that
6374         has the code number of a define_expand.
6375         (main): Pass insn_code_number to gen_insn.  Call print_header
6376         only after parsing.  Avoid unnecessary use of printf.
6377         * Makefile.in (build/vec.o): New rule.
6378         (build/genextract): Depend on build/vec.o.
6379         (build/genextract.o): Don't depend on insn-config.h.
6380
6381 2006-01-22  Zack Weinberg  <zackw@panix.com>
6382
6383         * Makefile.in: Consolidate most rules that use $(CC_FOR_BUILD) and/or
6384         $(RUN_GEN).  Use pattern rules to factor out as much boilerplate as
6385         practical.  Eliminate per-generator-program link rules.
6386
6387 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
6388
6389         PR middle-end/24437
6390         * tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
6391         with a call expr to ...
6392         * fold-const.c (fold_ternary) <case CALL_EXPR>: Here.
6393
6394 2006-01-23  Richard Guenther  <rguenther@suse.de>
6395
6396         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Add comment
6397         before make_edge with conditional EDGE_TRUE_VALUE.
6398
6399 2006-01-23  Steven Bosscher  <stevenb.gcc@gmail.com>
6400         Jan Hubicka  <jh@suse.cz>
6401         Richard Guenther  <rguenther@suse.de>
6402
6403         PR rtl-optimization/25654
6404         * cfgexpand.c (aggregate_contains_union_type): New function.
6405         (add_alias_set_conflicts): Call it.  Make sure to add conflicts
6406         for structure variables that contain a union type.
6407
6408 2006-01-23  Richard Sandiford  <richard@codesourcery.com>
6409
6410         * gengtype.c (new_structure): Return the structure.
6411         (create_option): Add an extra "next" argument.
6412         (create_field): New function.
6413         (adjust_field_rtx_def): Use create_option and create_field.
6414         Remove a now-unnecessary call to find_structure.
6415         (adjust_field_tree_def): Likewise.
6416         (note_yacc_type): Remove an unnecessary call to find_structure.
6417         * gengtype.h (new_structure): Return the structure.
6418         (create_option): Add an extra argument.
6419         * gengtype-yacc.y (type): Remove unnecessary calls to find_structure.
6420         (option): Adjust calls to create_option.
6421
6422 2006-01-22  David Edelsohn  <edelsohn@gnu.org>
6423
6424         * config/rs6000/aix.h (STACK_BOUNDARY): Define.
6425
6426 2006-01-22  Paul Brook  <paul@codesourcery.com>
6427         Peter Barada  <peter@the-baradas.com>
6428
6429         * config/m68k/m68k.md: Add Coldfire FPU support.
6430         Define FP mode macro and associated attributes.
6431         Use it for float mode patterns.
6432         * config/m68k/linux.h (FUNCTION_VALUE): Use m68k_function_value.
6433         (LIBCALL_VALUE): Use m68k_libcall_value.
6434         * config/m68k/m68k-protos.h (m68k_libcall_value): Add prototype.
6435         (m68k_function_value): Ditto.
6436         (emit_move_sequence): Ditto.
6437         * config/m68k/m68kemb.h (LIBCALL_VALUE): Use m68k_libcall_value.
6438         * config/m68k/m68k-none.h (ASM_SPEC): Add mcfv4e.
6439         * config/m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcfv4e.
6440         (MULTILIB_EXCEPTIONS): Ditto.
6441         * config/m68k/m68k.opt: Add mcfv4e.
6442         * config/m68k/m68k.c (m68k_handle_option): Handle OPT_mcfv4e.
6443         (m68k_compute_frame_layout): Include space for ColdFire FPU regs.
6444         (m68k_output_function_prologue): Save ColdFire FPU registers.
6445         (m68k_output_function_epilogue): Restore ColdFire FPU registers.
6446         (force_mode, fp_reg_operand, emit_move_sequence): New functions.
6447         (m68k_regno_mode_ok): Don't allow types larget than 8 bytes in
6448         ColdFire FPU registers.
6449         (m68k_libcall_value, m68k_function_value): New functions.
6450         * config/m68k/netbsd-elf.h (FUNCTION_VALUE): Use m68k_function_value.
6451         (LIBCALL_VALUE): Use m68k_libcall_value.
6452         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define __mcfv4e__.
6453         (MASK_COLDFIRE): Add MASK_CFV4E.
6454         (TARGET_COLDFIRE_FPU, TARGET_HARD_FLOAT, TARGET_FP_REG_SIZE): New.
6455         (MODES_TIEABLE_P): Use TARGET_HARD_FLOAT.
6456         (REG_CLASS_FROM_LETTER, PREFERRED_RELOAD_CLASS): Ditto.
6457         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Define.
6458         (GO_IF_LEGITIMATE_ADDRESS): Use it.
6459         (LEGITIMIZE_ADDRESS): Handle ColdFire FPU addresses.
6460         * doc/invoke.tex: Document -mcfv4e on m68k.
6461
6462 2006-01-22  Ranjit Mathew  <rmathew@gcc.gnu.org>
6463
6464         * doc/contribute.texi: Change CVS to SVN and update the corresponding
6465         URL.
6466
6467 2006-01-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6468
6469         PR c++/16190
6470         * c-opts.c (c_common_handle_option): Don't include
6471         -Wnon-virtual-dtor in -Wall; enable if -Weffc++.
6472         * doc/invoke.texi (C++ Dialect Options): Document that
6473         -Wnon-virtual-dtor is no longer included in -Wall.
6474
6475 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
6476
6477         * gcov.c (print_version), gcov-dump.c (print_version),
6478         mips-tdump.c (main), mips-tfile.c (main): Update copyright notice
6479         dates.
6480
6481 2006-01-21  Kenneth Zadeck <zadeck@naturalbridge.com>
6482
6483         * df-scan.c (problem_SCAN): Added NULL reset function.
6484         (df_scan_reset_blocks): Added code to call reset block function
6485         (df_bb_refs_delete) Fixed comment.
6486         (df_insn_refs_delete): Made tolerant of deleting non existent info
6487         for dataflow problems that need to be reset.
6488         * df-core.c (df_set_blocks): Ditto.
6489         * df.h (struct df_problem): Added reset_fun.
6490         * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
6491         problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field.
6492         (df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New
6493         functions to clear out all references to def-use or use-def chains.
6494
6495 2006-01-21  Ben Elliston  <bje@au.ibm.com>
6496
6497         * varasm.c (assemble_real): Initialise data array.
6498
6499 2006-01-20  Paul Brook  <paul@codesourcery.com>
6500
6501         Merge from csl-arm-branch.
6502         2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
6503         * config/arm/arm.md (movdi): Force operands[1] to a register
6504         if we have a non-register source.
6505         (*arm_movdi, *movdf_soft_insn): Require that one of the
6506         operands be a register.
6507         * config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
6508         * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
6509
6510 2006-01-20  DJ Delorie  <dj@redhat.com>
6511
6512         * varasm.c (initialize_constant_valid_p): Allow pointers
6513         initialized from integer constants of lesser precision.
6514         (output_constant): Allow non-int-sized pointer modes to be
6515         initialized from integer constants.
6516
6517 2006-01-20  Joseph S. Myers  <joseph@codesourcery.com>
6518
6519         PR libstdc++/25524
6520         * cppdefault.h (struct default_include): Add multilib flag.
6521         * cppdefault.c (cpp_include_defaults): Set it.
6522         * c.opt (-imultilib): New option.
6523         * c-opts.c (imultilib): New.
6524         (c_common_handle_option): Handle -imultilib.
6525         (c_common_post_options): Likewise.
6526         * c-incpath.c (add_standard_paths, register_include_chains):
6527         Likewise.
6528         * c-incpath.h (register_include_chains): Add extra parameter.
6529         * gcc.c (do_spec_1): Generate -imultilib option.
6530         (The Specs Language): Update %I description.
6531         (process_command): Update copyright notice.
6532         * doc/cppopts.texi (-imultilib): Document.
6533         * doc/invoke.texi (-imultilib): Include in option summary.
6534         (%I): Update specs documentation.
6535
6536 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
6537
6538         * loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.
6539
6540 2006-01-20  Richard Sandiford  <richard@codesourcery.com>
6541
6542         * stmt.c (case_bit_test_cmp): Stabilize the sort using code
6543         label numbers.
6544
6545 2006-01-20  Richard Guenther  <rguenther@suse.de>
6546         Steven Bosscher <stevenb.gcc@gmail.com>
6547
6548         PR rtl-optimization/24626
6549         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Don't set
6550         EDGE_TRUE_VALUE if in RTL mode.
6551
6552         Revert
6553         2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
6554         * cfgrtl.c (rtl_verify_flow_info_1): Fix.
6555
6556 2006-01-20  Dirk Mueller  <dmueller@suse.com>
6557
6558         PR c++/5520
6559         * c-parser.c (c_parser_if_body): Use build_empty_stmt()
6560         instead of a special NOP marker.
6561         * c-typeck.c (c_finish_if_stmt): Remove obsoleted special
6562         NOP marker handling.
6563         * c-common.h (empty_body_warning): Add forward declaration.
6564         * c-common.c (empty_body_warning): Add (from c_finish_if_stmt).
6565         Now uses IS_EMPTY_STMT() instead of special NOP markers.
6566
6567 2006-01-20  Paul Brook  <paul@codesourcery.com>
6568
6569         * Makefile.in (lang_checks): Keep going if mkdir fails.
6570
6571 2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
6572
6573         * df-scan.c (df_scan_free_bb_info): Added basic block parameter to
6574         be able to clean out basic block when not necessary.
6575         (df_scan_free): Fixed to properly delete information if df is
6576         unused before calling df_finish.
6577         (df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
6578         df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
6579         or comment typos.
6580         (df_bb_refs_delete): New function.
6581         (df_refs_delete): Moved per block code to df_bb_refs_delete.
6582         * df-core.c (df_set_blocks): Added code to properly clean out
6583         unused blocks if they are not part of the blocks to consider.
6584         Added additional null check.
6585         (df_compact_blocks): Added basic block parameter to free_bb_fun to
6586         be able to clean out basic block when not necessary
6587         * df.h (df_free_bb_function): Ditto.
6588         (df_bb_refs_delete): New function.
6589         * df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
6590         df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
6591         basic block parameter to be able to clean out basic block when not
6592         necessary.
6593         (df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
6594         (df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
6595         Fixed to properly delete information if df is unused before
6596         calling df_finish.
6597
6598 2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
6599
6600         PR rtl-optimization/25799
6601         * df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
6602         Corrected confluence operator to remove bits from op2 before oring
6603         with op1 rather than removing bits from op1.
6604         (df_ru_transfer_function): Corrected test on wrong bitmap which
6605         caused infinite loop.  Both of these problems were introduced in
6606         the dataflow rewrite.
6607
6608 2006-01-19  DJ Delorie  <dj@redhat.com>
6609
6610         * reload1.c (find_reload_regs): Note the details of reload
6611         failures in the dump file.
6612         (spill_failure): Likewise.
6613
6614 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
6615
6616         * loop-iv.c: Include df.h and hashtab.h.
6617         (enum iv_grd_result): New enum.
6618         (DF_REF_IV, DF_REF_IV_SET): New macros.
6619         (struct biv_entry): New.
6620         (df, bivs): New global variables.
6621         (struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no,
6622         assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p):
6623         Removed.
6624         (clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr,
6625         iv_analyze_result, iv_analyze_def, biv_hash, biv_eq,
6626         analyzed_for_bivness_p, record_biv): New functions.
6627         (iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p,
6628         get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op,
6629         iv_analyze, biv_p, iv_analysis_done): Work with df representation of
6630         UD chains.
6631         (iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set
6632         analysed.
6633         (iv_number_of_iterations): Use new interface to iv analysis.
6634         * loop-unroll.c: Do not include varray.h.
6635         (analyze_iv_to_split_insn): Use new interface to iv
6636         analysis.
6637         * loop-unswitch.c (may_unswitch_on): Ditto.
6638         * df.c (df_bitmaps_free): Only work for bbs for that structures are
6639         allocated.
6640         (df_bb_modify): Realloc tables to the new index.
6641         (df_find_use): New function.
6642         * df.h (df_find_use): Declare.
6643         * optabs.c (expand_unop): Make the mode of the REG_EQUAL node be
6644         outmode.
6645         * cfgloop.h (struct rtx_iv): Remove analysed field.
6646         (iv_get_reaching_def): Removed.
6647         (iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare.
6648         * Makefile.in (loop-unroll.o): Remove VARRAY_H dependency.
6649         (loop-iv.o): Add df.h and hashtab.h dependency.
6650         * df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation.
6651
6652 2006-01-20  Alan Modra  <amodra@bigpond.net.au>
6653
6654         PR target/25668
6655         * libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended
6656         Double TFmode.
6657         (__floatundisf, __floatundidf): Likewise.
6658         * libgcc2.h (IS_IBM_EXTENDED): Define.
6659
6660 2006-01-19  DJ Delorie  <dj@redhat.com>
6661
6662         * config/m32c/m32c.h (REG_ALLOC_ORDER): Define.
6663
6664 2006-01-19  Paul Brook  <paul@codesourcery.com>
6665
6666         * gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
6667         as nothrow when unwinding tables are disabled.
6668
6669 2006-01-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6670
6671         PR testsuite/25171
6672         * c-decl.c (check_bitfield_type_and_width): Don't issue pedwarn "type
6673         of bit-field" when in system header.
6674
6675 2006-01-19  DJ Delorie  <dj@redhat.com>
6676
6677         * config/m32c/m32c.c (m32c_prepare_shift): Add code to deal with
6678         the 16 bit shift limit of the m16c.
6679
6680 2006-01-19  Andrew Pinski  <pinskia@physics.uc.edu>
6681
6682         PR target/22099
6683         * config/i386/i386.md (builtin_setjmp_receiver): Don't emit the label.
6684         * config/i386/i386.c (output_set_got): Output the label if we have one
6685         for the TARGET_DEEP_BRANCH_PREDICTION case.
6686
6687 2006-01-19  Jan Hubicka  <jh@suse.cz>
6688             H.J. Lu  <hongjiu.lu@intel.com>
6689             Evandro Menezes <evandro.menezes@amd.com>
6690
6691         * invoke.texi (generic): Document
6692         (i686) Update.
6693         * config.gcc: Make x86_64-* and i686-* default to generic tunning.
6694         * i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC,
6695         TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros.
6696         (x86_use_incdec, x86_pad_returns): New variables
6697         (TARGET_CPU_DEFAULT_generic): New constant
6698         (TARGET_CPU_DEFAULT_NAMES): Add generic.
6699         (enum processor_type): Add generic32 and generic64.
6700         * i386.md (cpu attribute): Add generic32/generic64
6701         (movhi splitter): Behave sanely when both partial_reg_dependency and
6702         partial_reg_stall are set.
6703         (K8 splitters): Enable for generic as well.
6704         * predicates.md (incdec_operand): Use TARGET_INCDEC
6705         (aligned_operand): Avoid memory mismatch stalls.
6706         * athlon.md: Enable for generic64, new patterns for 128bit moves.
6707         * ppro.md: Enable for generic32
6708         * i386.c (generic64_cost, generic32_cost): New.
6709         (m_GENERIC32, m_GENERIC64, m_GENERIC): New macros.
6710         (x86_use_leave): Enable for generic64.  (x86_use_sahf,
6711         x86_ext_80387_constants): Enable for generic32.  (x86_push_memory,
6712         x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop,
6713         x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
6714         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
6715         x86_partial_reg_dependency, x86_memory_mismatch_stall,
6716         x86_accumulate_outgoing_args, x86_prologue_using_move,
6717         x86_epilogue_using_move, x86_arch_always_fancy_math_387,
6718         x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule):
6719         Enable for generic.
6720         (x86_use_incdec, x86_pad_returns): New.
6721         (override_options): Add generic32 and generic64, translate "generic"
6722         to generic32/generic64 and "i686" to "generic32", refuse
6723         "generic32"/"generic64" as arch target.
6724         (ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon.
6725         (ix86_reorg): Honor PAD_RETURNS.
6726
6727 2006-01-19  Diego Novillo  <dnovillo@redhat.com>
6728
6729         * tree-pretty-print.c (dump_generic_node): Handle
6730         OMP_PARALLEL_FN, OMP_PARALLEL_DATA_ARG and OMP_RETURN_EXPR.
6731         * cgraph.c (cgraph_expand_queue): Rename from
6732         cgraph_analyze_queue.  Update all users.
6733         * cgraphunit.c (cgraph_assemble_pending_functions): Process
6734         cgraph_expand_queue.
6735         (cgraph_expand_all_functions): Likewise.
6736         (cgraph_finalize_pending_functions): Remove.  Update callers.
6737
6738         * tree.h (OMP_DIRECTIVE_P): Define.
6739         (OMP_PARALLEL_FN): Define.
6740         (OMP_PARALLEL_DATA_ARG): Define.
6741         (OMP_SECTIONS_SECTIONS): Define.
6742         * tree-pass.h (pass_expand_omp): Declare.
6743         * omp-low.c (struct omp_region): Declare.
6744         (struct omp_context): Remove fields 'parallel_type',
6745         'parallel_start_ix' and 'parallel_start_additional_args'.
6746         Update all users.
6747         (struct omp_for_data): Rename from struct expand_omp_for_data.
6748         (omp_regions): New static variable.
6749         (root_omp_region): New static variable.
6750         (find_omp_clause): Make static.
6751         (is_in_combined_parallel_ctx): Remove.
6752         (is_combined_parallel): New.
6753         (extract_omp_for_data): Move earlier in the file.
6754         (workshare_safe_to_combine_p): New.
6755         (get_ws_args_for): New.
6756         (determine_parallel_type): Move earlier in the file.
6757         (omp_copy_decl_2): Do not set DECL_CONTEXT of new local to the
6758         child function.
6759         (omp_copy_decl): Likewise.
6760         (create_omp_child_function): Likewise.
6761         (lookup_omp_region): New.
6762         (dump_omp_region): New.
6763         (debug_omp_region): New.
6764         (debug_all_omp_regions): New.
6765         (new_omp_region): New.
6766         (scan_omp_parallel): If parallel_nesting_level > 1, the
6767         directive is nested within another parallel directive.
6768         Set OMP_PARALLEL_FN.
6769         (scan_omp_for): Do not try to handle combined parallel+for
6770         cases.
6771         Remove FIXME comment.
6772         (scan_omp_nested): Remove.
6773         (scan_omp_1): Do not call scan_omp_nested when
6774         parallel_nesting_level is > 1.
6775         Do not change the DECL_CONTEXT of local variables found.
6776         (lookup_decl_in_outer_ctx): New.
6777         (lower_rec_input_clauses): Rename from expand_rec_input_clauses.
6778         (lower_lastprivate_clauses): Rename from expand_lastprivate_clauses.
6779         (lower_reduction_clauses): Rename from expand_reduction_clauses.
6780         (lower_copyprivate_clauses): Rename from expand_copyprivate_clauses.
6781         If CTX is nested, lookup VAR in the outer context when
6782         building copy assignment.
6783         (lower_send_clauses): Rename from expand_send_clauses.
6784         If CTX is nested, lookup VAR in the outer context when
6785         building copy assignments.
6786         (lower_send_shared_vars): Rename from expand_send_shared_vars.
6787         If CTX is nested, lookup VAR in the outer context when
6788         building copy assignments.
6789         (expand_parallel_call): Rename from build_parallel_call.
6790         Handle combined parallel+workshare cases.
6791         Re-implement to emit code into the CFG.
6792         (list2chain): New.
6793         (expand_omp_parallel): Re-implement to emit code into the CFG.
6794         Call move_sese_region_to_fn to outline the sub-graph
6795         containing the parallel region.
6796         (expand_omp_for_1): Remove.
6797         (expand_omp_for_generic): Re-implement to emit code into the
6798         CFG.
6799         (expand_omp_for_static_nochunk): Likewise.
6800         (expand_omp_for_static_chunk): Likewise.
6801         (expand_omp_for): Likewise.
6802         (expand_omp_sections): Likewise.
6803         (remove_exit_barriers): New.
6804         (expand_omp_synch): New.
6805         (expand_omp): New.
6806         (build_omp_regions_1): New.
6807         (build_omp_regions): New.
6808         (execute_expand_omp): New.
6809         (gate_expand_omp): New.
6810         (pass_expand_omp): Define.
6811         (lower_omp_sections): Rename from expand_omp_sections.
6812         Set OMP_SECTIONS_SECTIONS.
6813         (lower_omp_single_simple): Rename from expand_omp_single_simple.
6814         (lower_omp_single_copy): Rename from expand_omp_single_copy.
6815         (lower_omp_single): Rename from expand_omp_simple.
6816         (lower_omp_master): Rename from expand_omp_master.
6817         (lower_omp_ordered): Rename from expand_omp_ordered.
6818         (lower_omp_critical): Rename from expand_omp_critical.
6819         (lower_omp_for_lastprivate): Rename from expand_omp_for_lastprivate.
6820         (lower_omp_for): Re-implement.
6821         (lower_omp_parallel): Re-implement.
6822         (lower_regimplify): Rename from expand_regimplify.
6823         (lower_omp_1): Rename from expand_omp_1.
6824         If there are syntax errors in the program, replace every
6825         OpenMP directive with NOP.
6826         Call lower_omp_* instead of expand_omp_*.
6827         (lower_omp): Rename from expand_omp.
6828
6829         * tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN_EXPR.
6830         * tree-gimple.h (enum omp_parallel_type): Remove.
6831         (gimple_boolify): Declare extern.
6832         (find_omp_clause, determine_parallel_type): Remove.
6833
6834         * gimple-low.c (lower_omp_directive): New.
6835         (lower_stmt): Call it.
6836         (record_vars_into): Move from ...
6837         (record_vars): ... here.
6838         Call record_vars_into with current_function_decl.
6839
6840         * gimplify.c (struct gimplify_ctx): Remove fields
6841         combined_pre_p and combined_ctxp.  Update users.
6842         (get_formal_tmp_var): Add documentation.
6843         (gimple_boolify): Make extern.
6844         (gimplify_expr_in_ctx): Remove.  Update callers.
6845         (gimplify_omp_parallel): Do not assume that OMP_PARALLEL_BODY
6846         will always be a BIND_EXPR.
6847         (gimplify_expr): Handle OMP_RETURN_EXPR.
6848         * tree.def (BLOCK): Remove documentation about BLOCK_TYPE_TAGS.
6849         (OMP_PARALLEL): Add 3 operands.
6850         (OMP_SECTIONS): Add 1 operand.
6851         (OMP_RETURN_EXPR): Define.
6852
6853         * tree-inline.c (estimate_num_insns_1): Handle OpenMP directives.
6854         (copy_tree_r): Restore TREE_CHAIN in OMP_CLAUSE_*.
6855         * tree-iterator.c (alloc_stmt_list): Assert that we are not
6856         creating a circular free list.
6857         (free_stmt_list): Assert that we are not freeing stmt_list_cache.
6858
6859         * tree-flow.h (move_sese_region_to_fn): Declare.
6860         (record_vars_into): Declare.
6861         * tree-cfg.c (make_omp_sections_edges): New.
6862         (make_exit_edges): Handle OMP_PARALLEL, OMP_FOR, OMP_SINGLE,
6863         OMP_MASTER, OMP_ORDERED, OMP_CRITICAL, OMP_RETURN_EXPR,
6864         OMP_SECTIONS and OMP_SECTION.
6865         (is_ctrl_altering_stmt): Return true for OMP_DIRECTIVE_P.
6866         (set_bb_for_stmt): Undo change to check currently_expanding_to_rtl.
6867         (verify_stmt): Do not handle OMP_DIRECTIVE_P.
6868         (gather_blocks_in_sese_region): New.
6869         (struct move_stmt_d): Declare.
6870         (move_stmt_r): New.
6871         (move_block_to_fn): New.
6872         (move_sese_region_to_fn): New.
6873
6874         * passes.c (init_optimization_passes): Schedule
6875         pass_expand_omp after pass_init_datastructures.
6876
6877         * tree-ssa-operands.c (get_expr_operands): Handle
6878         OMP_PARALLEL, OMP_SECTIONS, OMP_FOR, OMP_RETURN_EXPR,
6879         OMP_SINGLE, OMP_MASTER, OMP_ORDERED, OMP_CRITICAL.
6880
6881 2006-01-19  Jeff Law  <law@redhat.com>
6882
6883         * tree-vrp.c (extract_range_from_assert): Refine the result range
6884         if the variable referenced by the ASSERT_EXPR has a range and
6885         either the tentative result range or the previous range is a
6886         VR_ANTI_RANGE.
6887
6888 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
6889
6890         * c-decl.c (add_flexible_array_elts_to_size): Simplify vector accesses.
6891
6892 2006-01-19  Jan Hubicka  <jh@suse.cz>
6893
6894         * tree-vect-patterns.c (vect_pattern_recog_1): Prevent parse error.
6895
6896 2006-01-19  Paolo Bonzini  <bonzini@gnu.org>
6897
6898         * combine.c (try_combine): Do not worry about MEMs wrapped by USEs.
6899         (expand_compound_operation, expand_field_assignment): Fail if the
6900         bit lengths of an extract operation are out of range.
6901         (make_extraction): Compute wanted_inner_mode based on the position
6902         and length of the extraction.  Make it extraction_mode for non-constant
6903         positions, and do not modify offset in that case.  When generating a
6904         new MEM, use a mode that can hold the extraction while keeping correct
6905         alignment.  Remove code that supported MEMs wrapped by USEs.
6906         (simplify_shift_const_1, force_to_mode) <case USE>: Remove.
6907
6908 2006-01-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6909
6910         * config/s390/s390.md ("Y", "y"): New mode attribute.
6911         ("*cmpdi_ccs", "*cmpsi_ccs", "*adddi3_imm_cc", "*adddi3_carry1_cc",
6912         "*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly",
6913         "*adddi3_cc", "*adddi3_cconly", "*adddi3_cconly2", "*adddi3_64",
6914         "*addsi3_imm_cc", "*addsi3_carry1_cc",
6915         "*addsi3_carry1_cconly", "*addsi3_carry2_cc", "*addsi3_carr2_cconly",
6916         "*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
6917         "*subdi3_borrow_cc", "*subdi3_borrow_cconly", "*subdi3_cc",
6918         "*subdi3_cc2", "*subdi3_cconly", "*subdi3_cconly2", "*subdi3_64",
6919         "*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
6920         "*subsi3_cc2", "*subsi3_cconly", "*subsi3_cconly", "*subsi3_cconly2",
6921         "addsi3", "subsi3"): Insn patterns removed.
6922         ("*add<mode>3_carry1_cc", "*add<mode>3_carry1_cconly",
6923         "*add<mode>3_carry2_cc", "*add<mode>3_carry2_cconly", "*add<mode>3_cc",
6924         "*add<mode>3_cconly", "*add<mode>3_cconly2", "*add<mode>3_imm_cc",
6925         "*sub<mode>3_borrow_cc", "*sub<mode>3_borrow_cconly",
6926         "*sub<mode>3_cc", "*sub<mode>3_cc2", "*sub<mode>3_cconly",
6927         "*sub<mode>3_cconly2"): New insn patterns.
6928         ("addsi3", "subsi3"): New expanders.
6929
6930 2006-01-19  Dorit Nuzman  <dorit@il.ibm.com>
6931
6932         * Makefile.in (tree-vect-patterns.o): Add rule for new file.
6933         * tree-vect-analyze.c (vect_determine_vectorization_factor): Use
6934         existing STMT_VINFO_VECTYPE if available.
6935         (vect_mark_relevant): Add special handling for stmts that are
6936         marked as STMT_VINFO_IN_PATTERN_P.
6937         (vect_analyze_loop): Call vect_pattern_recog.
6938         * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
6939         * tree-vectorizer.h (in_pattern_p, related_stmt): New fields in
6940         stmt_info.
6941         (STMT_VINFO_IN_PATTERN_P, STMT_VINFO_RELATED_STMT): New macros.
6942         (vect_recog_func_ptr): New function-pointer type.
6943         * tree-vect-patterns.c: New file.
6944         (vect_recog_widen_sum_pattern, vect_recog_widen_mult_pattern):
6945         (vect_recog_dot_prod_pattern, vect_pattern_recog):
6946         (vect_pattern_recog_1): New functions.
6947         (vect_pattern_recog_funcs): New array of function pointers.
6948
6949         * tree-vectorizer.h (ternary_op): New enum value.
6950         * tree-vect-transform.c (vect_create_epilog_for_reduction): Added
6951         declaration. Revised documentation. Removed redundant dump prints.
6952         Removed redundant argument. Added support for reduction patterns.
6953         (vectorizable_reduction): Added support for reduction patterns.
6954         (vect_transform_stmt): Added support for patterns.
6955
6956         * expr.c (expand_expr_real_1): Added case for DOT_PROD_EXPR.
6957         * genopinit.c (udot_prod_optab, sdot_prod_optab): Initialize.
6958         * optabs.c (optab_for_tree_code): Added case for DOT_PROD_EXPR.
6959         (expand_widen_pattern_expr): New function.
6960         (init_optabs): Initialize new optabs udot_prod_optab,
6961         sdot_prod_optab.
6962         * optabs.h (OTI_sdot_prod, OTI_udot_prod): New.
6963         (sdot_prod_optab, udot_prod_optab): Define new optabs.
6964         (expand_widen_pattern_expr): New function declaration.
6965         * tree.def (DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR): New
6966         tree-codes.
6967         * tree-inline.c (estimate_num_insns_1): Added cases for new
6968         tree-codes DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
6969         * tree-pretty-print.c (dump_generic_node): Likewise.
6970         (op_prio): Likewise.
6971         (op_symbol): Added cases for WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
6972         * tree-ssa-operands.c (get_expr_operands): Added case for
6973         DOT_PROD_EXPR.
6974         * tree-vect-patterns.c (widened_name_p): New function.
6975         (vect_recog_dot_prod_pattern): Added function implementation.
6976         * tree-vect-transform.c (get_initial_def_for_reduction): Added
6977         cases for DOT_PROD_EXPR, WIDEN_SUM_EXPR.
6978         * config/rs6000/altivec.md (udot_prod<mode>, sdot_prodv8hi): New.
6979         * config/i386/sse.md (sdot_prodv8hi, udot_prodv4si): New.
6980
6981         * expr.c (expand_expr_real_1): Added case for WIDEN_SUM_EXPR.
6982         * genopinit.c (widen_ssum_optab, widen_usum_optab): Initialize.
6983         * optabs.c (optab_for_tree_code): Added case for WIDEN_SUM_EXPR.
6984         (init_optabs): Initialize new optabs widen_ssum_optab,
6985         widen_usum_optab.
6986         * optabs.h (OTI_widen_ssum, OTI_widen_usum): New.
6987         (widen_ssum_optab, widen_usum_optab): Define new optabs.
6988         * tree-vect-generic.c: (expand_vector_operations_1): Check type of
6989         use instead of type of def.
6990         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Added
6991         function implementation.
6992         * config/rs6000/altivec.md (widen_usum<mode>, widen_ssumv16qi,
6993         widen_ssumv8hi): New.
6994
6995         * doc/tm.texi (ssum_widen, usum_widen, sdot_prod, udot_prod): New
6996         patterns.
6997
6998 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
6999
7000         PR c/25805
7001         * c-decl.c (add_flexible_array_elts_to_size): New function.
7002         (finish_decl): Use it.
7003
7004 2006-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
7005
7006         * diagnostic.h: Include options.h.
7007         * config/rs6000/x-darwin (host-ppc-darwin.o): Correct the
7008         dependancies for diagnostic.h.
7009         * Makefile.in (DIAGNOSTIC_H): Add options.h.
7010
7011 2006-01-16  Daniel Berlin  <dberlin@dberlin.org>
7012
7013         * tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
7014         (ssa_ro_call_cache_valid): Ditto.
7015         * tree-ssa-alias.c (sort_tags_by_id): New function.
7016         (init_transitive_clobber_worklist): Ditto.
7017         (add_to_worklist): Ditto.
7018         (mark_aliases_call_clobbered): Ditto.
7019         (compute_tag_properties): Ditto.
7020         (set_initial_properties): Ditto.
7021         (compute_call_clobbered): Ditto.
7022         (compute_may_aliases):  Call compute_call_clobbered and grouping.
7023         (compute_flow_sensitive_aliasing): Remove clobbering related code.
7024         (compute_flow_insensitive_aliasing): Grouping now happens in our
7025         caller.
7026         (setup_pointers_and_addressables): Remove clobbering related code.
7027         (add_may_alias): Ditto.
7028         (replace_may_alias): Ditto.
7029         (get_nmt_for): Ditto.
7030         (create_global_var):
7031         (is_escape_site): Return an escape_type enumeration.
7032         * tree-flow-inline.h (is_call_clobbered):  Global var does not
7033         imply call clobbered.
7034         (mark_call_clobbered): Take a reason for marking this. Remove
7035         marking of globalness, and cache invalidation.
7036         (clear_call_clobbered): Remove cache invalidation code.
7037         * tree-dfa.c (dump_variable): If details is on, dump the reason
7038         for escaping.
7039         * tree-outof-ssa.c (create_temp): Copy escape mask from original
7040         variable.
7041         * tree-flow.h (struct ptr_info_def): Add escape mask member.
7042         (struct var_ann_d): Ditto.
7043         (enum escape_type): New.
7044         (mark_call_clobbered): Adjust prototype.
7045         * tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
7046         are never call clobbered.
7047         Record reasons for escaping.
7048         * tree-ssa-structalias.h (is_escape_site): Update prototype.
7049         * tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
7050         (ssa_ro_call_cache_valid): Ditto.
7051         (clobbered_v_may_defs): Ditto.
7052         (clobbered_vuses): Ditto.
7053         (ro_call_vuses): Ditto.
7054         (clobber_stats): New.
7055         (init_ssa_operands): Zero out clobber stats.
7056         (fini_ssa_operands): Print out clobber stats.
7057         (get_call_expr_operands): Pass callee fndecl to
7058         add_call_read_ops).
7059         (add_call_clobber_ops): Remove use of cache.
7060         Add use of PURE_CONST information.
7061         (add_call_read_ops): Remove use of cache.
7062         Add use of static not_read information.
7063
7064 2006-01-18  Alexandre Oliva  <aoliva@redhat.com>
7065
7066         Introduce TLS descriptors for i386 and x86_64.
7067         * config/i386/i386.h (TARGET_GNU2_TLS): New macro.
7068         (TARGET_ANY_GNU_TLS): New macro.
7069         (enum tls_dialect): Added TLS_DIALECT_GNU2.
7070         (struct machine_function): Add tls_descriptor_call_expanded_p.
7071         (ix86_tls_descriptor_calls_expande_in_cfun): New macro.
7072         (ix86_current_function_calls_tls_descriptor): Likewise.
7073         * config/i386/i386.c (ix86_tls_dialect): Fix typo in comment.
7074         (override_options): Introduce gnu2 tls dialect.
7075         (ix86_frame_pointer_required): Functions containing TLSCALLs are
7076         not leaves.
7077         (ix86_select_alt_pic_regnum, ix86_compute_frame_layout):
7078         Likewise.
7079         (legitimize_tls_address): Adjust logic for GNU2 TLS.
7080         (ix86_init_machine_status): Initialize new field.
7081         (ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS.
7082         (ix86_tls_module_base): New.
7083         * config/i386/i386-protos.h (ix86_tls_module_base): Declare it.
7084         * config/i386/i386.md (UNSPEC_TLSDESC): New constant.
7085         (tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS.
7086         (tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise.
7087         (tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns.
7088         (*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise.
7089         (tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise.
7090         (*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise.
7091         * config/i386/predicates.md (tls_modbase_operand): New.
7092         (tp_or_register_operand): New.
7093
7094 2006-01-18  Daniel Berlin  <dberlin@dberlin.org>
7095
7096         * ipa-reference.c (check_operand):  Allow FUNCTION_DECL.
7097         (look_for_address_of): Ditto.
7098         (ipa_init): Walk the function decls.
7099         (static_execute): Don't set readonly on FUNCTION_DECL's.
7100
7101 2006-01-18  Roger Sayle  <roger@eyesopen.com>
7102
7103         * config/i386/i386.md (shift spliter): Fix a a typo in the splitter
7104         for shifts where the source and destination registers are different.
7105
7106 2006-01-18  Paul Brook  <paul@codesourcery.com>
7107
7108         Merge from csl-arm-branch.
7109         2005-03-14  Julian Brown  <julian@codesourcery.com>
7110         * config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
7111         (aeabi_llsl): Likewise.
7112         (ashrdi3): Likewise.
7113         (aeabi_lasr): Likewise.
7114         (lshrdi3): Likewise.
7115         (aeabi_llsr): Likewise.
7116         2005-03-10  Julian Brown  <julian@codesourcery.com>
7117         * config.gcc: Disable shared libgcc for SymbianOS.
7118         * config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.
7119
7120 2006-01-18  DJ Delorie  <dj@redhat.com>
7121
7122         * c-pragma.c (handle_pragma_diagnostic): New.
7123         (init_pragma): Register it.
7124         * doc/extend.texi: Document it.
7125
7126         * diagnostic.def: Add DK_UNSPECIFIED and DK_IGNORED.
7127         * diagnostic.h (diagnostic_classify_diagnostic): Declare.
7128         (diagnostic_context): Add classify_diagnostic[].
7129         * diagnostic.c (diagnostic_count_diagnostic): Don't count warnings
7130         as errors if they're overridden to DK_WARNING.
7131         (diagnostic_initialize): Initialize classify_diagnostic[].
7132         (diagnostic_set_kind_override): New.
7133         (diagnostic_report_diagnostic): Check for kind changes.
7134         * opts.c (common_handle_option): Take lang_mask.  Update callers.
7135         Handle OPT_Werror_.
7136         * common.opt (Werror=): New.
7137         * doc/invoke.texi: Document -Werror=*
7138
7139 2006-01-18  Jeff Law  <law@redhat.com>
7140
7141         * tree-vrp.c (test_for_singularity): Correct test for new
7142         min limit.  Use operand_equal_p rather than pointer equality
7143         for testing if new min/max values are equal.
7144
7145         * tree-ssa-propagate.c (substitute_and_fold): Delay simplifications
7146         using range information until after propagation and folding.
7147
7148 2006-01-18  Richard Henderson  <rth@redhat.com>
7149             Aldy Hernandez  <aldyh@redhat.com>
7150             Jakub Jelinek  <jakub@redhat.com>
7151             Diego Novillo  <dnovillo@redhat.com>
7152
7153         * omp-low.c: New file.
7154         * c-omp.c: New file.
7155
7156 2006-01-18  Richard Henderson  <rth@redhat.com>
7157             Jakub Jelinek  <jakub@redhat.com>
7158             Diego Novillo  <dnovillo@redhat.com>
7159
7160         * doc/invoke.texi: Document -fopenmp.
7161         * tree-dump.h (debug_function): Declare.
7162         * hooks.c (hook_bool_tree_bool_false): New function.
7163         (hook_tree_tree_null): Remove.
7164         (hook_tree_tree_tree_null): New.
7165         * hooks.h: Update to match.
7166         * tree-pretty-print.c (debug_tree_chain): New.
7167         (print_generic_expr): Handle TDF_CHAIN.
7168         (dump_generic_node): Handle BLOCK.
7169         Do not abort with incomplete SWITCH_EXPRs.
7170         Do not dump body of an OpenMP directive if TDF_SLIM is given.
7171         <case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
7172         print space after directive name.
7173         <OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
7174         Handle OMP_MASTER and OMP_ORDERED.
7175         Handle printing of OMP_BODY just in one place, goto
7176         dump_omp_body in the rest of OMP_* nodes that have
7177         OMP_BODY.
7178         Don't handle clause nodes here.  Update omp statements to
7179         use dump_omp_clauses.
7180         Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
7181         OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
7182         OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
7183         GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
7184         GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
7185         GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
7186         Adjust output for GOMP_PARALLEL.
7187         (dump_omp_clauses): New.
7188         (print_declaration): Dump DECL_VALUE_EXPR.
7189         (op_symbol_1): Split out of op_symbol.
7190         (dumping_stmts): Remove.  Update all users.
7191         * cgraph.c (cgraph_analyze_queue): New.
7192         (cgraph_add_new_function): New.
7193         * cgraph.h (cgraph_analyze_queue): Declare.
7194         (cgraph_add_new_function): Declare.
7195         (cgraph_lower_function): Remove.
7196         * tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
7197         nodes.  Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
7198         and TYPE_P nodes in its default clause.
7199         (empty_body_p): New.
7200         (tree_range_check_failed): New.
7201         (build5_stat): New.
7202         * tree.h (OMP_CLAUSE_REDUCTION_INIT,
7203         OMP_CLAUSE_REDUCTION_MERGE,
7204         OMP_CLAUSE_REDUCTION_PLACEHOLDER,
7205         OMP_CLAUSE_PRIVATE_DEBUG,
7206         OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
7207         OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
7208         OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
7209         OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
7210         OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
7211         OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
7212         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
7213         OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
7214         OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
7215         OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
7216         OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
7217         OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
7218         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
7219         OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
7220         (TREE_RANGE_CHECK): New.
7221         (empty_body_p): Declare.
7222         (enum omp_clause_default_kind): New.
7223         (build_string_literal): Declare.
7224         (enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
7225         (build5_stat, build5): Declare.
7226         * tree-pass.h (TDF_CHAIN): Define.
7227         * tree-pass.h (PROP_gimple_lomp): Define.
7228         (pass_lower_omp): Declare.
7229         * diagnostic.h (debug_tree_chain): Declare.
7230         * builtins.c (get_builtin_sync_mode): Use 0 as last argument to
7231         mode_for_size.
7232         (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
7233         * builtins.c (build_string_literal): Make extern.
7234         * gcc.c (include_spec_function): New.
7235         (static_spec_functions): Add it.
7236         (main): Move load of libgomp.spec ...
7237         (LINK_COMMAND_SPEC): ... here.
7238         (link_gomp_spec): New.
7239         (static_specs): Include it.
7240         (LINK_COMMAND_SPEC): Add link_gomp.
7241         (GOMP_SELF_SPECS): New.
7242         (driver_self_specs): Include it.
7243         (switch_matches): Don't mark inline.
7244         (main): Load libgomp.spec.
7245         * tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
7246         OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
7247         and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
7248         * tree-gimple.h (enum omp_parallel): Declare.
7249         (determine_parallel_type): Declare.
7250         (omp_firstprivatize_variable): Declare.
7251         (omp_reduction_init): Declare.
7252         (diagnose_omp_structured_block_errors): Declare.
7253         (struct walk_stmt_info): Add want_return_expr.
7254         (struct walk_stmt_info): Add want_bind_expr, want_locations.
7255         (find_omp_clause): Declare.
7256         (insert_field_into_struct): Declare.
7257         (struct walk_stmt_info): Move from tree-nested.c
7258         (walk_stmts): Declare.
7259         * c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
7260         to 200505.
7261         * cgraphunit.c (cgraph_lower_function): Make static.
7262         (cgraph_finalize_pending_functions): New.
7263         (cgraph_finalize_function): Call it.
7264         (cgraph_finalize_compilation_unit): Likewise.
7265         * builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
7266         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
7267         (BT_FN_UINT_UINT): New.
7268         (DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
7269         DEF_FUNCTION_TYPE_VAR_4): Document.
7270         (BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
7271         BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
7272         BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
7273         BT_FN_VOID_OMPFN_PTR_UINT_UINT,
7274         BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
7275         BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
7276         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
7277         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
7278         * builtins.def: Update DEF_BUILTIN comment to include COND argument.
7279         Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
7280         into separate files.
7281         (DEF_GOMP_BUILTIN): New.
7282         (BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
7283         BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
7284         BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
7285         BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
7286         BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
7287         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
7288         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
7289         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
7290         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
7291         BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
7292         BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
7293         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
7294         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
7295         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
7296         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
7297         BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
7298         BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
7299         BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
7300         BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
7301         BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
7302         BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
7303         BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
7304         BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
7305         BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
7306         BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
7307         BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
7308         * sync-builtins.def: New file, moved from builtins.def.
7309         * omp-builtins.def: New file, moved from builtins.def.
7310         * c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
7311         * gimple-low.c (lower_function_body): Clear data.
7312         (lower_stmt): Do not handle COMPOUND_EXPR.
7313         Remove call to print_node_brief.
7314         * c-tree.h (c_finish_omp_clauses): New prototype.
7315         (C_DECL_THREADPRIVATE_P): Define.
7316         (lookup_name_no_remap, c_omp_remap_private): Remove
7317         (c_begin_omp_parallel, c_finish_omp_parallel): Update.
7318         (check_for_loop_decls): Update decl.
7319         (lookup_name_no_remap, c_omp_remap_private): Declare.
7320         (build_indirect_ref, build_modify_expr, pushdecl,
7321         pushdecl_top_level): Move to c-common.h.
7322         * dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
7323         before the switch, but just in the 2 places that need it.
7324         * c-decl.c (diagnose_mismatched_decls): Do not check for
7325         mismatched thread-local attributes when OLDDECL is marked
7326         threadprivate and NEWDECL has no thread-local attributes.
7327         (merge_decls): Merge C_DECL_THREADPRIVATE_P.
7328         (c_gimple_diagnostics_recursively): Rename from
7329         c_warn_unused_result_recursively.  Invoke
7330         diagnose_omp_structured_block_errors.
7331         (check_for_loop_decls): Return a singular decl found.
7332         * langhooks.c (lhd_omp_predetermined_sharing): Return
7333         OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
7334         (lhd_omp_firstprivatize_type_sizes): New.
7335         (lhd_omp_assignment): New.
7336         (lhd_omp_predetermined_sharing): New.
7337         * langhooks.h (struct gimplify_omp_ctx): Forward declare.
7338         (struct lang_hooks_for_types): Add
7339         omp_firstprivatize_type_sizes, omp_privatize_by_reference,
7340         omp_predetermined_sharing, omp_disregard_value_expr,
7341         omp_private_debug_clause, omp_clause_default_ctor,
7342         omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
7343         (c_finish_omp_clauses): New.
7344         (c_finish_bc_stmt): Diagnose break within omp for.
7345         (c_begin_omp_parallel, c_finish_omp_parallel): New.
7346         (build_unary_op): Return error_mark after reporting
7347         a readonly_error.
7348         (build_modify_expr): Likewise.
7349         * gimplify.c: Include optabs.h and pointer-set.h.
7350         (enum gimplify_omp_var_data): Declare.
7351         (struct gimplify_omp_ctx): Declare.
7352         (struct gimplify_ctx): Add fields prev_context, combined_pre_p
7353         and combined_ctxp.
7354         (gimplify_ctxp, gimplify_omp_ctxp): New local variables.
7355         (push_gimplify_context, pop_gimplify_context): Allow nesting.
7356         (splay_tree_compare_decl_uid): New.
7357         (new_omp_context): New.
7358         (delete_omp_context): New.
7359         (gimple_add_tmp_var): Call omp_add_variable.
7360         (gimplify_bind_expr): Likewise.
7361         (gimplify_var_or_parm_decl): If omp_notice_variable returned
7362         true, disregard DECL_VALUE_EXPR on the decl if any.
7363         (gimplify_expr_in_ctx): New.
7364         (omp_firstprivatize_variable, omp_firstprivatize_type_sizes
7365         omp_add_variable, omp_notice_variable, omp_is_private
7366         gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
7367         gimplify_adjust_omp_clauses, gimplify_omp_parallel
7368         gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
7369         gimplify_omp_atomic_fetch_op, goa_stabilize_expr
7370         gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
7371         gimplify_omp_atomic): New.
7372         (gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
7373         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
7374         OMP_CRITICAL and OMP_ATOMIC.
7375         (gimplify_body): Verify gimplify_ctxp is empty after gimplification.
7376         * c-pragma.h (enum pragma_kind): Add
7377         PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
7378         PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
7379         PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
7380         PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
7381         PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
7382         PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
7383         PRAGMA_OMP_THREADPRIVATE.
7384         * tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
7385         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
7386         OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
7387         OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
7388         OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
7389         OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
7390         OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
7391         OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
7392         OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
7393         * print-tree.c (print_node): Dump DECL_VALUE_EXPR.
7394         * tree-ssa-dce.c (find_control_dependence): Do not assume that
7395         ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
7396         * tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
7397         OpenMP directives.
7398         (struct nesting_info): Add field_map,
7399         suppress_expansion, debug_var_chain.
7400         (create_nesting_tree): Initialize them.
7401         (lookup_field_for_decl): Use field_map.
7402         (get_nonlocal_debug_decl, get_local_debug_decl): New.
7403         (convert_local_omp_clauses): New.
7404         (finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
7405         (walk_body): Split out of walk_function.
7406         (convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
7407         (convert_nonlocal_reference): Handle omp statements.
7408         (convert_local_reference): Likewise.
7409         (unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
7410         (unnest_nesting_tree): New.
7411         (lower_nested_functions): Call it.
7412         (insert_field_into_struct): Make extern.
7413         (struct walk_stmt_info): Move to tree-gimple.h.
7414         (walk_stmts): Make extern.
7415         * omp-builtins.def: New file.
7416         * tree-iterator.c (expr_only): Clarify comment.
7417         * c-common.h (pushdecl_top_level, pushdecl,
7418         build_modify_expr, build_indirect_ref,
7419         c_finish_omp_master, c_finish_omp_critical,
7420         c_finish_omp_ordered, c_finish_omp_barrier,
7421         c_finish_omp_atomic, c_finish_omp_flush,
7422         c_finish_omp_for, c_split_parallel_clauses,
7423         omp_clause_default_kind, c_omp_sharing_predetermined,
7424         c_omp_remap_decl): Declare.
7425         * Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
7426         (OBJS-common): Add omp-low.o.
7427         (c-omp.o, omp-low.o): Add.
7428         (gimplify.o): Add dependency on $(OPTABS_H).
7429         (GTFILES): Add omp-low.c.
7430         (gt-stringpool.h): Add.
7431         * tree-cfg.c (set_bb_for_stmt): Do not update the
7432         block-to-labels map if we are currently expanding to RTL.
7433         (tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
7434         checks.
7435         Handle IDENTIFIER_NODE.
7436         (tree_verify_flow_info): Do not ICE when emitting error
7437         messages about invalid labels.
7438         (dump_function_to_file): Reset CFUN before emitting the body
7439         of the function.
7440         (debug_function): New.
7441         * passes.c (init_optimization_passes): Schedule
7442         pass_lower_omp.
7443         * langhooks-def.h (lhd_omp_predetermined_sharing,
7444         lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
7445         Declare.
7446         (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
7447         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
7448         (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
7449         LANG_HOOKS_OMP_PREDETERMINED_SHARING,
7450         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
7451         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
7452         LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
7453         LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
7454         LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
7455         LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
7456         (LANG_HOOK_DECLS): Use them.
7457
7458 2006-01-18  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
7459             Richard Henderson  <rth@redhat.com>
7460             Jakub Jelinek  <jakub@redhat.com>
7461             Diego Novillo  <dnovillo@redhat.com>
7462
7463         * c-parser.c (pragma_omp_clause): Define.
7464         (c_parser_declaration_or_fndef): Document OpenMP syntax.
7465         (c_parser_compound_statement): Likewise.
7466         (c_parser_statement): Likewise.
7467         (c_parser_pragma): Handle omp pragmas.
7468         (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
7469         OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
7470         (c_parser_omp_clause_name, check_no_duplicate_clause,
7471         c_parser_omp_variable_list,
7472         c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
7473         c_parser_omp_clause_copyprivate,
7474         c_parser_omp_clause_default,
7475         c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
7476         c_parser_omp_clause_lastprivate,
7477         c_parser_omp_clause_nowait,
7478         c_parser_omp_clause_num_threads,
7479         c_parser_omp_clause_ordered, c_parser_omp_clause_private,
7480         c_parser_omp_clause_reduction,
7481         c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
7482         c_parser_omp_all_clauses, c_parser_omp_structured_block,
7483         c_parser_omp_atomic, c_parser_omp_barrier,
7484         c_parser_omp_critical, c_parser_omp_flush,
7485         c_parser_omp_for_loop, c_parser_omp_for,
7486         c_parser_omp_master, c_parser_omp_ordered,
7487         c_parser_omp_sections_scope, c_parser_omp_sections,
7488         c_parser_omp_parallel, c_parser_omp_single,
7489         c_parser_omp_construct, c_parser_omp_threadprivate): New.
7490         * c-pragma.c (init_pragma): Do omp pragma registration here.
7491         * c.opt (fopenmp): New flag.
7492
7493 2006-01-18  Eric Christopher  <echristo@apple.com>
7494
7495         * gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
7496         * config/darwin.h (GOMP_SELF_SPECS): Define.
7497
7498 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
7499
7500         * rtl.h: Remove the prototype for reg_alloc.
7501
7502 2006-01-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7503
7504         PR target/25731
7505         * config.gcc (hppa*-*-linux*, hppa[12]*-*-hpux10*, hppa*64*-*-hpux11*,
7506         hppa[12]*-*-hpux11*): Override default shared libgcc version for both
7507         sjlj and dwarf2 exception handling.
7508         * pa/t-hpux-shlib (SHLIB_SOVERSION): New make variable.
7509         Rework to allow overriding SHLIB_EXT and SHLIB_SOVERSION.
7510         * pa/pa.c (function_value): Treat complex and vector types as
7511         aggregates.
7512         (function_arg): Likewise.  Only pass scalar floats in the floating
7513         point argument registers.
7514         * pa/t-slibgcc-dwarf-ver: New file.
7515         * pa/t-slibgcc-sjlj-ver: New file.
7516         * pa/t-slibgcc-elf-ver: Delete file.
7517
7518 2006-01-19  Alan Modra  <amodra@bigpond.net.au>
7519
7520         * config/rs6000/rs6000.c (rs6000_assemble_integer): Correct
7521         unlikely_test_section_p test.
7522
7523 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
7524
7525         * mode-switching.c (optimize_mode_switching): Make it static.
7526         * basic-block.h: Remove the prototype for
7527         optimize_mode_switching.
7528
7529         * modulo-sched.c (sms_schedule): Make it static.
7530         * rtl.h: Remove the prototype for sms_schedule.
7531
7532         * postreload-gcse.c (gcse_after_reload_main): Make it static.
7533         * rtl.h: Remove the prototype for gcse_after_reload_main.
7534
7535         * reg-stack.c (reg_to_stack): Make it static.
7536         * rtl.h: Remove the prototype for reg_to_stack.
7537
7538         * regrename.c (regrename_optimize, copyprop_hardreg_forward):
7539         Make them static.
7540         * rtl.h: Remove the prototypes for regrename_optimize and
7541         copyprop_hardreg_forward.
7542
7543 2006-01-18  Eric Botcazou  <ebotcazou@adacore.com>
7544
7545         * config/alpha/alpha.c (alpha_split_tfmode_pair): Rename into
7546         alpha_split_tmode_pair.  Add 'mode' and 'fixup_overlap' arguments.
7547         Test against the appropriate null constant for the mode.
7548         If 'fixup_overlap' is true, swap the operands if they overlap.
7549         (alpha_split_tfmode_frobsign): Adjust call to alpha_split_tfmode_pair.
7550         * config/alpha/alpha-protos.h (alpha_split_tfmode_pair): Rename into
7551         alpha_split_tmode_pair and adjust for above change.
7552         * config/alpha/alpha.md (movtf_internal): Adjust call to
7553         alpha_split_tfmode_pair and rely on it to swap the operands.
7554         (movti_internal): New insn and post-reload splitter.
7555         (movti): New expander.
7556
7557 2006-01-18  Philippe De Muyter  <phdm@macqel.be>
7558
7559         * config/m68k/m68k.md (*addsi3_5200): Allow addq/subq to memory
7560         operands.
7561
7562 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
7563
7564         * rtlanal.c (global_reg_mentioned_p_1,
7565         global_reg_mentioned_p): Remove.
7566         * rtl.h: Remove the prototype for global_reg_mentioned_p.
7567
7568         * flow.c (initialize_uninitialized_subregs): Make it static.
7569         * rtl.h: Remove the prototype for
7570         initialize_uninitialized_subregs.
7571
7572         * function.c (instantiate_virtual_regs): Make it static.
7573         * function.h: Remove the prototype for
7574         instantiate_virtual_regs.
7575
7576         * regmove.c (regmove_optimize, combine_stack_adjustments):
7577         Make them static.
7578         * rtl.h: Remove the prototypes for regmove_optimize and
7579         combine_stack_adjustments.
7580
7581 2006-01-17  Roger Sayle  <roger@eyesopen.com>
7582
7583         * config/i386/i386.c (COSTS_N_BYTES): New macro.
7584         (size_cost): Encode costs in bytes so that a reg-reg addition is
7585         equivalent to COSTS_N_INSNS(1).
7586         (override_options): Use the size_cost.branch_cost as the default
7587         ix86_branch_cost when optimizing for size.
7588
7589 2006-01-18  Ben Elliston  <bje@au.ibm.com>
7590
7591         * Makefile.in (D32PBIT_FUNCS): New.
7592         (D64PBIT_FUNCS, D128PBIT_FUNCS): Likewise.
7593         (libgcc.mk): Set D32PBIT, D64PBIT, D128PBIT, D32PBIT_FUNCS,
7594         D64PBIT_FUNCS and D128PBIT_FUNCS.
7595         (LIBGCC_DEPS): Include $(D32PBIT), $(D64PBIT), $(D128PBIT).
7596         * mklibgcc.in Bring in the DFP support code if D32PBIT, D64PBIT or
7597         D128PBIT are set.
7598         (decnumber_dep): Define.
7599         * doc/libgcc.texi (Decimal float library routines): New node.
7600         * config/dfp-bit.h, config/dfp-bit.c: New files.
7601
7602 2006-01-18  Ben Elliston  <bje@au.ibm.com>
7603
7604         * expr.c (emit_move_change_mode): Always adjust addresses, not
7605         just during reload.  Copy replacements only during reload.
7606         (emit_move_insn_1): Move MODE_DECIMAL_FLOAT modes by invoking
7607         emit_move_via_integer.
7608
7609 2006-01-17  Shantonu Sen  <ssen@opendarwin.org>
7610
7611         * Makefile.in (check-%, check-consistency): Use $${srcdir}
7612         instead of $(srcdir) and ${srcdir}.
7613
7614 2006-01-17  Richard Earnshaw  <rearnsha@arm.com>
7615
7616         PR target/592
7617         PR middle-end/11135
7618         * arm.h (struct machine_function): Add pic_reg.
7619         * arm.c (arm_pic_register): Make unsigned.
7620         (arm_override_options): Only set arm_pic_register if
7621         TARGET_SINGLE_PIC_BASE.
7622         (use_return_insn): Only test for a pic register if it is fixed.
7623         (arm_compute_save_reg0_reg12_mask): Likewise.
7624         (thumb_compute_save_reg_mask): Likewise.
7625         (legitimate_pic_operand): Factor out some known invariants.
7626         (legitimize_pic_address): If we don't have a fixed pic register,
7627         then set up a pseudo in the function entry sequence.  Handle the
7628         pic base being in a pseudo.
7629         (arm_load_pic_register): Handle the pic register being in a pseudo.
7630         (arm_expand_prologue): Only set up the pic register if it is fixed.
7631         (thumb_expand_prologue): Likewise.
7632         * arm.md (pic_load_addr_based): Handle the pic base being a pseudo.
7633         (pic_load_addr_based_insn): Likewise.
7634         (builtin_setjmp_receiver): Don't restore the pic base if it isn't
7635         fixed.
7636
7637 2006-01-18  Ben Elliston  <bje@au.ibm.com>
7638
7639         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
7640         decimal float modes for all floating point registers.
7641
7642         * config/rs6000/predicates.md (reg_or_mem_operand): Pair up
7643         match_code "mem" with match_test "macho_lo_sum_memory_operand".
7644
7645 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
7646
7647         PR c/25682
7648         * c-typeck.c (build_unary_op): Fold offsetof-like expressions
7649         even when the pointer is not NULL.
7650
7651 2006-01-16  Ian Lance Taylor  <ian@airs.com>
7652
7653         * common.opt (ftoplevel-reorder): New option.
7654         * cgraph.c (cgraph_asm_nodes): New global variable.
7655         (cgraph_asm_last_node): New static variable.
7656         (cgraph_order): New global variable.
7657         (cgraph_create_node): Set new order field.
7658         (cgraph_varpool_node): Likewise.
7659         (decide_is_variable_needed): Return true if not
7660         flag_toplevel_reorder.
7661         (cgraph_add_asm_node): New function.
7662         * cgraph.h (struct cgraph_node): Add order field.
7663         (struct cgraph_varpool_node): Add order field.
7664         (struct cgraph_asm_node): Define.
7665         (cgraph_asm_nodes, cgraph_order): Declare.
7666         (cgraph_add_asm_node): Declare.
7667         * cgraphunit.c (cgraph_varpool_assemble_decl): New static
7668         function.
7669         (cgraph_varpool_assemble_pending_decls): Call it.
7670         (cgraph_output_pending_asms): New static function.
7671         (cgraph_finalize_compilation_unit): Call it.
7672         (struct cgraph_order_sort): Define.
7673         (cgraph_output_in_order): New static function.
7674         (cgraph_optimize): Call cgraph_output_pending_asms.  Add code for
7675         !flag_toplevel_reorder case.
7676         * c-parser.c: Include "cgraph.h".
7677         (c_parser_asm_definition): Call cgraph_add_asm_node rather than
7678         assemble_asm.
7679         * Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
7680         than -fno-unit-at-a-time.
7681         * doc/invoke.texi (Option Summary): Mention
7682         -fno-toplevel-reorder.
7683         (Optimize Options): Document -fno-toplevel-reorder.  Mention it in
7684         -funit-at-a-time documentation.
7685
7686 2006-01-17  Hans-Peter Nilsson  <hp@axis.com>
7687             Kazu Hirata  <kazu@codesourcery.com>
7688
7689         * Makefile.in (FUNCTION_H, LAMBDA_H): Use $(TREE_H), not tree.h.
7690
7691 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
7692
7693         * Makefile.in (FUNCTION_H): New.  Use it instead of
7694         function.h throughout the file.
7695         * function.h: Include tree.h.
7696
7697 2006-01-17  Ben Elliston  <bje@au.ibm.com>
7698
7699         * recog.c: Separate some functions with whitespace.
7700
7701 2006-01-16  Richard Henderson  <rth@redhat.com>
7702
7703         Merge from gomp branch:
7704         * Makefile.in (TREE_INLINE_H): New.  Use it as needed.
7705         * tree-inline.h (struct copy_body_data): Move from tree-inline.c
7706         and rename from struct inline_data.  Rename callee* to dst*;
7707         caller* to src*; add copy_decl hook, transform_call_graph_edges,
7708         transform_new_cfg, transform_return_to_modify, and
7709         transform_lang_insert_block flags; remove cloning_p, versioning_p,
7710         update_clones_p.
7711         (copy_body_r, insert_decl_map, remap_decl, remap_type): Declare.
7712         (copy_decl_for_dup): Remove.
7713         * tree-inline.c (struct inline_data): Move to header.
7714         (insert_decl_map): Export.
7715         (remap_decl): Update for member name changes.  Use copy_decl hook.
7716         Allow for replacement to be a non-decl.  Remove dead code.
7717         (remap_type_1): Check for existing mapping.
7718         (remap_type): Export.
7719         (remap_decls): Update for member name changes.
7720         (remap_block, copy_bb, copy_cfg_body, copy_generic_body): Likewise.
7721         (copy_body, setup_one_parameter, declare_return_variable): Likewise.
7722         (expand_call_inline, optimize_inline_calls, clone_body): Likewise.
7723         (copy_tree_r, mark_local_for_remap_r, unsave_expr_now): Likewise.
7724         (tree_function_versioning, build_duplicate_type): Likewise.
7725         (copy_body_r): Likewise.  Export.
7726         (copy_decl_for_dup): Split into ...
7727         (copy_decl_for_dup_finish, copy_decl_to_var,
7728         copy_decl_no_change, copy_decl_maybe_to_var): ... these.
7729         (replace_ref_tree, inlining_p): Remove.
7730
7731 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
7732
7733         * ifcvt.c (if_convert): Make it static.
7734         * rtl.h: Remove the prototype for if_convert.
7735
7736         * local-alloc.c (local_alloc): Make it static.
7737         * rtl.h: Remove the prototype for local_alloc.
7738
7739         * loop.c (loop_optimize): Make it static.
7740         * cfgloop.h: Remove the prototype for loop_optimize.
7741         * rtl.h: Likewise.
7742
7743 2006-01-16  DJ Delorie  <dj@redhat.com>
7744
7745         * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
7746         mems.
7747
7748 2006-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7749
7750         * pa.md: Disparage copies between general and floating-point registers
7751         in 32-bit move patterns.
7752
7753 2006-01-16  H.J. Lu  <hongjiu.lu@intel.com>
7754
7755         PR testsuite/25741
7756         * Makefile.in (check-%): Depend on site.exp instead of
7757         $(TESTSUITEDIR)/site.exp. Run "runtest" in separate language
7758         directories.
7759
7760 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
7761
7762         * global.c (global_alloc): Make it static.
7763         * rtl.h: Remove the prototype for global_alloc.
7764
7765 2006-01-16  Richard Guenther  <rguenther@suse.de>
7766
7767         * tree-ssa-alias.c (struct used_part): Add write_only field.
7768         (get_or_create_used_part_for): Initialize it to true.
7769         (create_overlap_variables_for): Don't create structure variables
7770         for structures that only are written to.
7771         (find_used_portions): Handle MODIFY_EXPR to track whether a
7772         structure is only written to.
7773
7774 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
7775
7776         * bb-reorder.c (partition_hot_cold_basic_blocks): Make it
7777         static.
7778         * basic-block.h: Remove the prototype for
7779         partition_hot_cold_basic_blocks.
7780
7781 2006-01-16  Rafael Ãvila de EspÃ�­ndola <rafael.espindola@gmail.com>
7782
7783         * cppspec.c (lang_specific_spec_functions): Remove.
7784         * gcc.c (lookup_spec_function): Use static_spec_functions directly.
7785         * gcc.h (lang_specific_spec_functions): Remove.
7786         * gccspec.c (lang_specific_spec_functions): Remove.
7787
7788 2006-01-16  Paolo Bonzini  <bonzini@gnu.org>
7789
7790         * combine.c (record_value_for_reg): Invalidate registers
7791         if INSN is null.
7792         (record_dead_and_set_regs_1): Likewise, by passing them to
7793         record_value_for_reg.
7794         (record_dead_and_set_regs): Invalidate stores made by a
7795         call.  We do not combine across a call, but we still
7796         relied on equivalences.
7797
7798 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
7799
7800         * tree-vrp.c (extract_range_from_binary_expr): Cope with
7801         vrp_int_const_binop returning non-constant nodes.
7802
7803 2006-01-16  Paul Brook  <paul@codesourcery.com>
7804
7805         * config/m68k/m68k.c (output_move_const_into_data_reg):
7806         Output correct mnemonic for mvz and mvs.
7807
7808 2006-01-16  Gabor Loki  <loki@gcc.gnu.org>
7809
7810         * rtl-factoring.c: Add sequence abstraction algorithm.
7811         * cfgcleanup.c (outgoing_edges_match): Extra checks.
7812         (try_crossjump_to_edge): Avoid deleting preserve label when redirecting
7813         ABNORMAL edges.
7814         (block_has_preserve_label): New function.
7815         * common.opt: Register new pass.
7816         * Makefile.in: Ditto.
7817         * passes.c: Ditto.
7818         * timevar.def: Ditto.
7819         * tree-pass.h: Ditto.
7820         * emit-rtl.c (make_jump_insn_raw): Remove forward decl.
7821         * rtl.h (make_jump_insn_raw): Add forward decl.
7822         * doc/invoke.texi: Add documentation for -frtl-abstract-sequences.
7823
7824 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
7825             Roger Sayle  <roger@eyesopen.com>
7826
7827         * fold-const.c (fold_minmax): New static function.
7828         (fold_binary) <MIN_EXPR>: Call it.
7829         <MAX_EXPR>: Likewise.
7830         * stor-layout.c (place_field): Use DECL_SIZE consistently
7831         in the computation of the new record size.
7832
7833 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
7834
7835         * cse.c (cse_condition_code_reg): Make it static.
7836         * rtl.h: Remove the prototype for cse_condition_code_reg.
7837
7838         * combine.c (combine_instructions): Make it static.
7839         * rtl.h: Remove the prototype for combine_instructions.
7840
7841 2006-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7842
7843         PR target/25168
7844         * tree.c (get_file_function_name_long): Concatenate the first global
7845         object name with a string derived from the input filename of the object
7846         for type "F".
7847
7848 2006-01-16  Ben Elliston  <bje@au.ibm.com>
7849
7850         * config/i386/winnt-stubs.c: Update FSF address.
7851         * config/xtensa/ieee754-df.S: Ditto.
7852         * config/xtensa/ieee754-sf.S: Ditto.
7853
7854 2006-01-14  Ian Lance Taylor  <ian@airs.com>
7855
7856         * ifcvt.c (noce_init_if_info): New static function, broken out of
7857         noce_process_if_block.
7858         (noce_process_if_block): Call noce_init_if_info.
7859         (check_cond_move_block): New static function.
7860         (cond_move_process_if_block): New static function.
7861         (process_if_block): Call cond_move_process_if_block.
7862
7863 2006-01-15  Kazu Hirata  <kazu@codesourcery.com>
7864
7865         * cselib.c (hash_table): Rename to cselib_hash_table.
7866         (cselib_clear_table, discard_useless_values,
7867         remove_useless_values, cselib_lookup_mem, cselib_lookup,
7868         cselib_init, cselib_finish): Adjust uses of hash_table.
7869
7870 2006-01-14  Kazu Hirata  <kazu@codesourcery.com>
7871
7872         PR tree-optimization/25485
7873         * tree-vrp.c (extract_range_from_binary_expr): Handle cases
7874         where one of the operands of TRUTH_AND_EXPR and TRUTH_OR_EXPR
7875         is known to be false and true, respectively.
7876
7877 2006-01-14  Richard Guenther  <rguenther@suse.de>
7878
7879         PR tree-optimization/22548
7880         PR tree-optimization/22555
7881         PR tree-optimization/22501
7882         * Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
7883         * params.def (salias-max-array-elements): New parameter.
7884         * params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
7885         * doc/invoke.texi (salias-max-array-elements): Document.
7886         * tree-flow-inline.h (var_can_have_subvars): We also handle
7887         arrays now.
7888         * tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
7889         COMPONENT_REF.
7890         * tree-ssa-structalias.c (params.h): Include.
7891         (push_fields_onto_fieldstack): Handle ARRAY_TYPE.
7892         (find_func_aliases): Handle multiple constraints from ARRAY_REF.
7893         (get_constraint_for): For ADDR_EXPR operating on something
7894         containing an ARRAY_REF, add all subvars to the solution.
7895         (handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
7896         * tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
7897         for creating MUST_DEFs.
7898         (get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.
7899
7900 2006-01-14  Zdenek Dvorak <dvorakz@suse.cz>
7901
7902         * tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
7903         functions.
7904         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
7905         assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
7906         number_of_iterations_le): New functions.
7907         (number_of_iterations_special): Removed.
7908         (number_of_iterations_exit): Do not use number_of_iterations_special.
7909         * tree.c (unsigned_type_for): Always return integer type.
7910
7911 2006-01-14  Steven Bosscher  <stevenb.gcc@gmail.com>
7912         Richard Guenther  <rguenther@suse.de>
7913
7914         PR rtl-optimization/24257
7915         * gcse.c (find_moveable_store): Only consider a store movable
7916         when the SET_SRC of the insn can be assigned to a register.
7917
7918 2006-01-14  Ian Lance Taylor  <ian@airs.com>
7919
7920         * tree.c (tree_not_class_check_failed): New function.
7921         * tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
7922         (tree_not_class_check_failed): Declare.
7923
7924 2006-01-13  Ian Lance Taylor  <ian@airs.com>
7925
7926         * reload1.c (do_output_reload): Add assertion rejecting a
7927         CALL_INSN.
7928
7929 2006-01-13  Adam Nemet  <anemet@caviumnetworks.com>
7930
7931         * combine.c (struct reg_stat): Add new fields truncation_label and
7932         truncated_to_mode.
7933         (record_value_for_reg): Reset truncated_to_mode.
7934         (record_truncated_value): New function.
7935         (check_promoted_subreg): Call it.  Rename to check_conversions.
7936         (combine_instructions): Rename check_promoted_subreg to
7937         check_conversions.
7938         (reg_truncated_to_mode): New function.
7939         (make_extraction): Use it.  Check TRULY_NOOP_TRUNCATION.
7940         (gen_lowpart_or_truncate): New function.
7941         (force_to_mode): Use it instead of gen_lowpart.
7942
7943 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
7944
7945         * tree-ssa-alias.c (add_type_alias): Fix typo.  Test whether
7946         VAR is a tag, not its type tag.
7947
7948 2006-01-13  Alexandre Oliva  <aoliva@redhat.com>
7949
7950         * config/i386/sse.md (*vec_extractv2di_1_sse2): Reorder
7951         alternatives to match style of other entries.
7952         (*vec_extractv2di_1_sse): Likewise.  Fix mode attr.
7953
7954 2006-01-13  Daniel Berlin  <dberlin@dberlin.org>
7955
7956         PR tree-optimization/25771
7957         * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
7958         SSA_NAMES.
7959
7960 2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
7961
7962         PR tree-opt/24365
7963         * tree-inline.c (declare_return_variable): If the return variable
7964         was marked as a non gimple complex, set the return slot variable
7965         to be a non gimple comple variable.
7966
7967 2006-01-13  Richard Guenther  <rguenther@suse.de>
7968
7969         * builtins.c (expand_builtin_sincos): New function.
7970         (expand_builtin_mathfn_3): Remove dead code, sin and cos
7971         do not set errno.
7972         (expand_builtin): Expand sincos using expand_builtin_sincos.
7973
7974 2006-01-12  DJ Delorie  <dj@redhat.com>
7975
7976         * config/m32c/shift.md: Rewrite: Allow arbitrary operands for
7977         shift counts, separate SI shifts for m32c vs m16c, pass shift type
7978         so that constant shifts can be split.
7979         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add In6.
7980         (m32c_valid_pointer_mode): Make static.
7981         (shift_gen_func_for): New.
7982         (m32c_prepare_shift): Use it.  Split large const shifts into
7983         multiple shifts.
7984         * config/m32c/predicates.md (shiftcount_operand): Allow more
7985         general operands.
7986         (longshiftcount_operand): New.
7987         * doc/md.texi (Machine Constraints): Document In6.
7988
7989 2006-01-13  Ben Elliston  <bje@au.ibm.com>
7990
7991         * doc/tm.texi (Data Output): Add REAL_VALUE_TO_TARGET_DECIMAL32,
7992         REAL_VALUE_TO_TARGET_DECIMAL64 and REAL_VALUE_TO_TARGET_DECIMAL128
7993         documentation.
7994
7995 2006-01-12  Daniel Berlin  <dberlin@dberlin.org>
7996
7997         * tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
7998         to try to avoid clobbering pieces of structures when we know
7999         something about the whole structure.
8000         * tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR
8001
8002 2006-01-13  Ben Elliston  <bje@au.ibm.com>
8003
8004         * doc/rtl.texi (Insns): Remove statement that libcalls cannot
8005         return in memory, as this is no limitation is no longer present.
8006
8007 2006-01-12  DJ Delorie  <dj@redhat.com>
8008
8009         * config/m32c/addsub.md (addhi3): Add two more alternatives, for
8010         mova with fb, and for fb+0 -> An.
8011
8012         * config/m32c/mov.md (peephole2): Fix enabling logic.
8013
8014         * config/m32c/m32c.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
8015         DTOR_LIST_BEGIN, DTOR_LIST_END, CTORS_SECTION_ASM_OP,
8016         DTORS_SECTION_ASM_OP, INIT_ARRAY_SECTION_ASM_OP,
8017         FINI_ARRAY_SECTION_ASM_OP): Define.
8018
8019         * config/m32c/m32c.c (m32c_legitimize_address): Remove temporary
8020         variable.
8021         (m32c_legitimize_reload_address): New logic to reload FB to An.
8022         (m32c_output_reg_push): Add newline.
8023         (m32c_output_reg_pop): Likewise.
8024
8025 2006-01-12  Ulrich Weigand  <uweigand@de.ibm.com>
8026
8027         * struct-equiv.c (find_dying_inputs): Fix off-by-one bug.
8028
8029 2006-01-11  Andrew Pinski  <pinskia@physics.uc.edu>
8030
8031         * config/i386/darwin.h (SUBTARGET_ENCODE_SECTION_INFO): Define.
8032
8033 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
8034
8035         * config/sh/predicates.md (sh_rep_vec): Add parallel to
8036         match_code.
8037
8038 2006-01-11  Ben Elliston  <bje@au.ibm.com>
8039
8040         * rtlanal.c (find_reg_note): Assert insn is not null.
8041
8042 2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8043
8044         * df-scan.c (df_hard_reg_init): Move declaration of i outside
8045         ifdef.
8046
8047 2006-01-11  Jeff Law  <law@redhat.com>
8048
8049         * tree-ssa-threadupdate.c (threaded_edges): New VEC to
8050         hold edge pairs.
8051         (mark_threaded_blocks, register_jump_thread): New functions.
8052         (thread_through_all_blocks): Remove unwanted argument.  No
8053         longer rely on e->aux to communicate thread target info.
8054         Call mark_threaded_blocks.  Release the threaded_blocks
8055         bitmap and threaded_edges vector when complete.
8056         * tree-ssa-dom.c (struct edge_info): Remove redirection_target field.
8057         (threaded_blocks): Remove.
8058         (tree_ssa_dominator_optimize): Remove initialization and
8059         finalization of threaded_blocks.  Simplify call to
8060         thread_through_all_blocks.
8061         (thread_across_edge): Call register_jump_thread rather than
8062         storing thread information into e->aux.
8063         (free_all_edge_infos): Simplify now that e->aux is no longer
8064         used to communicate with thread_through_all_blocks.
8065         * tree-flow.h (thread_through_all_blocks): Update prototype.
8066         (register_jump_thread): Prototype.
8067
8068 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
8069
8070         * df-core.c (df_compact_blocks, df_bb_replace): Use
8071         SET_BASIC_BLOCK instead of BASIC_BLOCK.
8072
8073 2006-01-11  Richard Guenther  <rguenther@suse.de>
8074
8075         PR tree-optimization/25734
8076         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
8077         stop propagation after successful propagation to the LHS.
8078
8079 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
8080
8081         * basic-block.h (control_flow_graph): Change the type of
8082         x_basic_block_info to VEC(basic_block,gc) *.
8083         (BASIC_BLOCK_FOR_FUNCTION, BASIC_BLOCK): Adjust the uses of
8084         basic_block_info.
8085         (SET_BASIC_BLOCK): New.
8086         * cfg.c (compact_blocks, expunge_block): Use SET_BASIC_BLOCK
8087         instead of BASIC_BLOCK when assigning to BASIC_BLOCK.
8088         * cfgbuild.c (find_basic_blocks): Likewise.
8089         * cfglayout.c (fixup_reorder_chain): Likewise.
8090         * cfgrtl.c (create_basic_block_structure,
8091         rtl_create_basic_block): Likewise.
8092         * ifcvt.c (find_if_case_1): Likewise.
8093         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb):
8094         Likewise.
8095
8096 2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
8097
8098         * Makefile.in: Removed rotted odf.c entry.
8099
8100 2006-01-11  Hans-Peter Nilsson  <hp@axis.com>
8101
8102         PR target/25706
8103         * config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
8104         ("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
8105         ("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
8106         output pattern modifier, not %e.
8107         * config/cris/cris.c (cris_op_str): Update comment about pattern
8108         modifier.
8109         (cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
8110         before falling through into...
8111         <case 'E'>: Redefined from old 'e' case.
8112
8113 2006-01-11  Jan Hubicka  <jh@suse.cz>
8114
8115         PR target/25042
8116         * i386.c (ix86_init_mmx_sse_builtins): Do not delcare float128
8117
8118 2006-01-11  Jan Hubicka  <jh@suse.cz>
8119
8120         * i386.h (TARGET_DECOMPOSE_LEA): Kill.
8121         * i386.c (x86_decompose_lea): Kill.
8122         (ix86_rtx_costs): Kill.
8123
8124 2006-01-11  Jan Hubicka  <jh@suse.cz>
8125
8126         * cgraph.c (cgraph_insert_node_to_hashtable): New function.
8127         * cgraph.h (cgraph_node): Add inline_decl.
8128         (cgraph_insert_node_to_hashtable): Declare.
8129         (save_inline_function_body): Declare.
8130         * cgraphunit.c (verify_cgraph_node): Inline edges might point to inline
8131         clones.
8132         (cgraph_preserve_function_body_p): Do not presrve when dump is enabled.
8133         (cgraph_function_versioning): Update call of tree_function_versioning.
8134         (save_inline_function_body): New function.
8135         * function.h (struct function): Kill saved_eh, saved_cfg, saved_args,
8136         saved_static_chain_decl, saved_blocks and saved-unexpanded_var_list.
8137         * ipa-inline.c (cgraph_mark_inline_edge): Look for inline clones.
8138         (cgraph_default_inline_p): Likewise.
8139         (cgraph_decide_inlining_incrementally): Likewise.
8140         * tree-inline.c (inline_data): Kill saving_p add update_clones_p.
8141         (copy_bb): Kill saving; do updating of clones.
8142         (copy_cfg_body): Kill saving.
8143         (initialize_inlined-parameters): Likewise.
8144         (expand_call_inline): Likewise.
8145         (save_body): Kill.
8146         (tree_function_versioning): New parameter "update_clones".
8147         (inlining_p): Kill saving.
8148         * tree-inline.h (tree_function_versioning): Update prototype.
8149         * tree-optimize.c (tree_rest_of_compilation): Use clonning instead of
8150         saving.
8151
8152 2006-01-11  Ian Lance Taylor <ian@airs.com>
8153
8154         * combine.c (struct undo): Remove is_int.  Enumify types of undos.
8155         Allow undoing set of machine mode.
8156         (do_SUBST): Use enums instead of is_int.
8157         (do_SUBST_MODE): New function.
8158         (SUBST_MODE): New macro.
8159         (try_combine): Use SUBST_MODE/PUT_MODE instead of generating a new
8160         reg and trying to replace reg_regno_rtx with a new register.
8161         (undo_all): Use new enums, handle undoing a PUT_MODE change.
8162         (simplify_set): Use SUBST_MODE.
8163         (distribute_notes): Remove code that tried to update reg notes
8164         for regno_reg_rtx changes.
8165
8166 2006-01-11  Paolo Bonzini  <bonzini@gnu.org>
8167
8168         PR tree-optimization/23109
8169         PR tree-optimization/23948
8170         PR tree-optimization/24123
8171
8172         * Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
8173         * tree-cfg.c (single_noncomplex_succ): New.
8174         * tree-flow.h (single_noncomplex_succ): Declare it.
8175         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
8176         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
8177         (struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
8178         insert_bb, register_division_in, insert_reciprocals,
8179         replace_reciprocal, free_bb): New.
8180         (execute_cse_reciprocals_1): Rewritten.
8181         (execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
8182         Do not commit any edge insertion.  Always compute dominators and
8183         create the allocation pool.
8184         * target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
8185         * target.h (struct gcc_target): Add min_divistions_for_recip_mul.
8186         * targhooks.c (default_min_divistions_for_recip_mul): New.
8187         * targhooks.h (default_min_divistions_for_recip_mul): New prototype.
8188         * passes.c (init_optimization_passes): Run recip after tree loop
8189         optimizations.
8190         * doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.
8191
8192 2006-01-11  Danny Berlin <dberlin@dberlin.org>
8193             Kenneth Zadeck <zadeck@naturalbridge.com>
8194
8195         * df.h (DF_SCAN, DF_RU, DF_RD, DF_LR, DF_UR, DF_UREC, DF_CHAIN,
8196         DF_RI, DF_LAST_PROBLEM_PLUS1, DF_DU_CHAIN, DF_UD_CHAIN,
8197         DF_REF_TYPE_NAMES, DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS,
8198         DF_SCAN_BB_INFO, DF_RU_BB_INFO, DF_RD_BB_INFO, DF_LR_BB_INFO,
8199         DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_IN, DF_LIVE_OUT,
8200         DF_RA_LIVE_IN, DF_RA_LIVE_OUT, DF_UPWARD_LIVE_IN,
8201         DF_UPWARD_LIVE_OUT, DF_REF_REAL_REG, DF_REF_REGNO,
8202         DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_BBNO,
8203         DF_REF_INSN, DF_REF_INSN_UID, DF_REF_TYPE, DF_REF_CHAIN,
8204         DF_REF_ID, DF_REF_FLAGS, DF_REF_NEXT_REG, DF_REF_PREV_REG,
8205         DF_REF_NEXT_REF, DF_REF_DATA, DF_REF_REG_DEF_P, DF_REF_REG_USE_P,
8206         DF_REF_REG_MEM_STORE_P, DF_REF_REG_MEM_LOAD_P, DF_REF_REG_MEM_P,
8207         DF_DEFS_SIZE, DF_DEFS_GET, DF_DEFS_SET, DF_USES_SIZE, DF_USES_GET,
8208         DF_USES_SET, DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_SET,
8209         DF_REG_USE_GET, DF_REG_USE_SET, DF_REGNO_FIRST_DEF,
8210         DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
8211         DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
8212         DF_INSN_UID_GET, DF_INSN_UID_LUID, DF_INSN_UID_DEFS,
8213         DF_INSN_UID_USES, DF_SCAN_INITIAL, DF_SCAN_GLOBAL,
8214         DF_SCAN_POST_ALLOC): New macros.
8215         (df_flow_dir, df_ref_type, df_ref_flags, df_alloc_function,
8216         df_free_bb_function, df_local_compute_function, df_init_function,
8217         df_dataflow_function, df_confluence_function_0,
8218         df_confluence_function_n, df_transfer_function,
8219         df_finalizer_function, df_free_function, df_dump_problem_function,
8220         df_problem, dataflow, df_insn_info, df_reg_info, df_ref, df_link,
8221         df_ref_info, df, df_map, df_scan_bb_info, df_ru_bb_info,
8222         df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
8223         df_urec_bb_info, ) New types.
8224         (df_invalidated_by_call, df_all_hard_regs, df_state) New public
8225         variables.
8226         (df_init, df_add_problem, df_set_blocks, df_finish, df_analyze,
8227         df_analyze_simple_change_some_blocks,
8228         df_analyze_simple_change_one_block, df_compact_blocks,
8229         df_bb_replace, df_bb_regno_last_use_find,
8230         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
8231         df_insn_regno_def_p, df_find_def, df_find_use,
8232         df_iterative_dataflow, df_dump, df_chain_dump, df_refs_chain_dump,
8233         df_regs_chain_dump, df_insn_debug, df_insn_debug_regno,
8234         df_regno_debug, df_ref_debug, debug_df_insn, debug_df_regno,
8235         debug_df_reg, debug_df_defno, debug_df_useno, debug_df_ref,
8236         debug_df_chain, df_get_dependent_problem, df_chain_create,
8237         df_chain_unlink, df_chain_copy, df_get_live_in, df_get_live_out,
8238         df_grow_bb_info, df_chain_dump, df_print_bb_index,
8239         df_ru_add_problem, df_ru_get_bb_info, df_rd_add_problem,
8240         df_rd_get_bb_info, df_lr_add_problem, df_lr_get_bb_info,
8241         df_ur_add_problem, df_ur_get_bb_info, df_urec_add_problem,
8242         df_urec_get_bb_info, df_chain_add_problem, df_ri_add_problem,
8243         df_reg_lifetime, df_scan_get_bb_info, df_scan_add_problem,
8244         df_rescan_blocks, df_ref_create, df_get_artificial_defs,
8245         df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
8246         df_ref_remove, df_insn_refs_delete, df_refs_delete,
8247         df_reorganize_refs, df_set_state, df_hard_reg_init,
8248         df_read_modify_subreg_p) New public functions.
8249         * df-core.c: The core dataflow solver and glue routines for rtl
8250         dataflow.
8251         (df_init, df_add_problem, df_set_blocks, df_finish,
8252         df_hybrid_search_forward, df_hybrid_search_backward,
8253         df_iterative_dataflow, df_prune_to_subcfg, df_analyze_problem,
8254         df_analyze, df_get_bb_info, df_set_bb_info, df_bb_replace,
8255         df_bb_regno_last_use_find, df_bb_regno_first_def_find,
8256         df_bb_regno_last_def_find, df_insn_regno_def_p, df_find_def,
8257         df_reg_defined, df_find_use, df_reg_used, df_dump,
8258         df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
8259         df_insn_debug_regno, df_regno_debug, df_ref_debug, debug_df_insn,
8260         debug_df_reg, debug_df_regno, debug_df_ref debug_df_defno,
8261         debug_df_useno, reset_df_after_reload): New functions.
8262         * df-scan.c: The scanning fuctions, once in df.c, completely
8263         rewritten so that they now fully model the functionality of
8264         register usage at the backend.
8265         (df_scan_free_internal, df_scan_get_bb_info, df_scan_set_bb_info,
8266         df_scan_free_bb_info, df_scan_alloc, df_scan_free, df_scan_dump,
8267         df_scan_add_problem, df_grow_reg_info, df_grow_ref_info,
8268         df_grow_insn_info, df_rescan_blocks, df_ref_create,
8269         df_get_artificial_defs, df_get_artificial_uses,
8270         df_reg_chain_create, df_ref_unlink, df_reg_chain_unlink,
8271         df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete,
8272         df_refs_delete, df_reorganize_refs, df_set_state,
8273         df_ref_create_structure, df_ref_record, df_read_modify_subreg_p,
8274         df_def_record_1, df_defs_record, df_uses_record,
8275         df_insn_contains_asm_1, df_insn_contains_asm, df_insn_refs_record,
8276         df_has_eh_preds, df_bb_refs_record, df_refs_record, df_mark_reg,
8277         df_record_exit_block_uses, df_hard_reg_init): New functions.
8278
8279         * df-problems.c: Seven concrete dataflow problems that use the
8280         scanning in df-scan.c and are solved by the engine in df-core.c.
8281         (df_get_dependent_problem, df_chain_create, df_chain_unlink,
8282         df_chain_copy, df_get_live_in, df_get_live_out, df_grow_bb_info,
8283         df_chain_dump, df_print_bb_index, df_ref_bitmap, df_set_seen,
8284         df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
8285         df_ru_free_bb_info, df_ru_alloc,
8286         df_ru_bb_local_compute_process_def,
8287         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
8288         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
8289         df_ru_transfer_function, df_ru_free, df_ru_dump,
8290         df_ru_add_problem, df_rd_get_bb_info, df_rd_set_bb_info,
8291         df_rd_free_bb_info, df_rd_alloc,
8292         df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
8293         df_rd_local_compute, df_rd_init_solution, df_rd_confluence_n,
8294         df_rd_transfer_function, df_rd_free, df_rd_dump,
8295         df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
8296         df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
8297         df_lr_local_compute, df_lr_init, df_lr_confluence_0,
8298         df_lr_confluence_n, df_lr_transfer_function, df_lr_free,
8299         df_lr_dump, df_lr_add_problem, df_ur_get_bb_info,
8300         df_ur_set_bb_info, df_ur_free_bb_info, df_ur_alloc,
8301         df_ur_bb_local_compute, df_ur_local_compute, df_ur_init,
8302         df_ur_local_finalize, df_ur_confluence_n, df_ur_transfer_function,
8303         df_ur_free, df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
8304         df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
8305         df_urec_mark_reg_change, df_urec_check_earlyclobber,
8306         df_urec_mark_reg_use_for_earlyclobber,
8307         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
8308         df_urec_local_compute, df_urec_init, df_urec_local_finalize,
8309         df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
8310         df_urec_dump, df_urec_add_problem, df_chain_alloc,
8311         df_chain_create_bb_process_use, df_chain_create_bb,
8312         df_chain_finalize, df_chain_free, df_chains_dump,
8313         df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
8314         df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
8315         df_reg_lifetime): New functions.
8316         * df.c: Deleted file.
8317         * ddg.c (create_ddg_dep_no_link, build_inter_loop_deps): Made code
8318         consistent with new df api.
8319         * modulo-sched.c (sms_schedule, rest_of_handle_sms,
8320         rest_of_handle_sms): Ditto.
8321         * web.c (unionfind_union, union_defs, entry_register, web_main):
8322         Ditto.
8323         * loop_invariant.c (invariant_for_use, hash_invariant_expr_1,
8324         invariant_expr_equal_p, find_defs, check_dependencies,
8325         find_invariant_insn, find_invariants_to_move, move_invariant_reg,
8326         free_inv_motion_data, move_loop_invariants): Ditto.
8327         * Makefile.in (df.c, df-scan.c df-problems.c df-core.c):
8328         Update dependencies.
8329         (odf.c): Added defective entry that was deleted later in day.
8330         * sched-deps.c (sched_analyze_1): Ditto.
8331
8332 2006-01-11  Zdenek Dvorak <dvorakz@suse.cz>
8333
8334         * tree-ssa-operands.c (get_expr_operands): Record addressable
8335         variables directly.  Do not call add_stmt_operands for CONST_DECLs
8336         and ARRAY_DECLs.
8337         (get_indirect_ref_operands): Remove handling of *(&a + offset) case.
8338         (add_stmt_operands): Handle only objects satisfying SSA_VAR_P.
8339
8340 2006-01-11  Ben Elliston  <bje@au.ibm.com>
8341
8342         * config/i386/i386.c (ix86_return_in_memory): Fix comment: this
8343         function returns true in the positive case.
8344
8345 2006-01-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8346
8347         PR target/20754
8348         * config/pa/pa.md: Create separate 32 and 64-bit move patterns
8349         for SI, DI, SF and DF modes.  Add alternatives to copy between
8350         general and floating point registers to the 32-bit patterns.
8351         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED_RTX): Delete undefine.
8352         * config/pa/pa.h (SECONDARY_MEMORY_NEEDED_RTX): Delete define.
8353         (SECONDARY_MEMORY_NEEDED): Secondary memory is only needed when
8354         generating 64-bit code.
8355         * config/pa/pa.c (output_move_double): Handle copies between general
8356         and floating registers.
8357
8358 2006-01-10  Stuart Hastings  <stuart@apple.com>
8359
8360         * config/i386/i386.md (set_got): Update.
8361         (set_got_labelled): New.  (UNSPEC_LD_MPIC): New.
8362         (builtin_setjmp_receiver): Mach-O support.
8363         * config/i386/darwin.h (TARGET_ASM_FILE_END) Define.
8364         (GOT_SYMBOL_NAME): Define.
8365         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
8366         (TARGET_DEEP_BRANCH_PREDICTION): Remove.
8367         * config/i386/i386.c (override_options): Revise for Darwin.
8368         (USE_HIDDEN_LINKONCE): Enable for Mach-O.  (ix86_file_end): Mach-O
8369         support.  (darwin_x86_file_end): New.  (output_set_got): Add label
8370         parameter, revise for Mach-O.  (x86_output_mi_thunk): Likewise.
8371         * config/i386/i386-protos.h (output_set_got): Likewise.
8372         * config/darwin.c (machopic_legitimize_pic_address): Update
8373         regs_ever_live[].
8374
8375 2006-01-10  Kaz Kojima  <kkojima@gcc.gnu.org>
8376
8377         * config/sh/sh.h (SH5_WOULD_BE_PARTIAL_NREGS): Use GET_MODE_SIZE
8378         when MODE isn't BLKmode.
8379
8380 2006-01-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
8381
8382         PR rtl-optimization/25367
8383         * config/sparc/sparc.h (HARD_REGNO_RENAME_OK): New macro.
8384
8385 2006-01-10  Hans-Peter Nilsson  <hp@axis.com>
8386
8387         PR target/25718
8388         * config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
8389         for a negative bound.
8390
8391 2006-01-10  Richard Guenther  <rguenther@suse.de>
8392
8393         * tree-ssa-structalias.c (get_constraint_for_component_ref):
8394         Never override with anything constraint.
8395
8396 2006-01-10  Jan Beulich  <jbeulich@novell.com>
8397
8398         * config/i386/i386.c (ix86_data_alignment): Don't force alignment to
8399         256 bits when optimize_size.
8400
8401 2006-01-10  Jan Beulich  <jbeulich@novell.com>
8402
8403         * config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
8404         MASK_ALIGN_DOUBLE.
8405         * config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
8406         * config/i386/t-nwld (SHLIB_LINK): Insert spaces between expr
8407         arguments.
8408
8409 2006-01-10  Ben Elliston  <bje@au.ibm.com>
8410
8411         * config/rs6000/predicates.md (easy_fp_constant): Discount decimal
8412         float modes.
8413         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): New.
8414         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
8415         (USE_FP_FOR_ARG): Reject decimal float modes.
8416         (function_arg_advance): Likewise.
8417         (output_toc): Handle emitting TDmode, DDmode and SDmode constants.
8418         (rs6000_handle_altivec_attribute): Do not permit decimal floating
8419         point types in AltiVec vectors.
8420         (rs6000_function_value): Use GP_ARG_RETURN for decimal floats.
8421         (rs6000_libcall_value): Likewise.
8422
8423 2006-01-09  Bob Wilson  <bob.wilson@acm.org>
8424
8425         * config/xtensa/ieee754-df.S: New file.
8426         * config/xtensa/ieee754-sf.S: New file.
8427         * config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove fp-bit.c & dp-bit.c.
8428         (LIB1ASMFUNCS): Add SFmode and DFmode floating-point functions.
8429         * config/xtensa/lib1funcs.asm: Include ieee754-df.S and ieee754-sf.S.
8430
8431 2006-01-09  Kazu Hirata  <kazu@codesourcery.com>
8432
8433         * config/sh/predicates.md (binary_float_operator,
8434         binary_logical_operator, commutative_float_operator,
8435         equality_comparison_operator, greater_comparison_operator,
8436         less_comparison_operator, logical_operator,
8437         noncommutative_float_operator, shift_operator,
8438         symbol_ref_operand, unary_float_operator): Remove redundant
8439         conditionals.
8440
8441 2006-01-09  Jeff Law  <law@redhat.com>
8442
8443         * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Remove
8444         code to propagate the RHS of a cast into COND_EXPR_COND.  Remove
8445         now unused arguments.  Callers updated.
8446         (eliminate_redundant_computations): Remove now unused arguments,
8447         callers updated.
8448         (local_fold): Remove, no longer used.
8449         (find_equivalent_equality_comparison): Removed from tree-ssa-dom.c
8450         and moved to...
8451         * tree-ssa-forwprop.c (find_equivalent_equality_comparison): Here.
8452         (simplify_cond): New function.
8453         (forward_propagate_into_cond): Call simplify_cond.
8454
8455 2006-01-09  Alexandre Oliva  <aoliva@redhat.com>
8456
8457         * config/i386/sse.md (*vec_extractv2di_1_sse2): New.
8458         (*vec_extractv2di_1_sse): New.
8459
8460 2006-01-09  Ben Elliston  <bje@au.ibm.com>
8461
8462         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Typo fix.
8463
8464 2006-01-08  Richard Guenther  <rguenther@suse.de>
8465
8466         * tree-ssa-structalias.c (get_constraint_for): Remove
8467         anyoffset argument.
8468         (get_constraint_for_component_ref): Likewise.
8469         (do_deref): Likewise.
8470         (get_constraint_for): Likewise.
8471         (do_structure_copy): Likewise.
8472         (handle_ptr_arith): Likewise.
8473         (find_func_aliases): Likewise.  Remove unused need_anyoffset
8474         variable.
8475
8476 2006-01-08  J"orn Rennecke  <joern.rennecke@st.com>
8477             Kaz Kojima  <kkojima@gcc.gnu.org>
8478
8479         * config/sh/sh.h (CONST_OK_FOR_K16): Define.
8480         (CONST_OK_FOR_K): Add CONST_OK_FOR_K16 case.
8481         (EXTRA_CONSTRAINT_C16): Remove.
8482         (EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Define.
8483         (EXTRA_CONSTRAINT_C): Remove EXTRA_CONSTRAINT_C16 case and add
8484         EXTRA_CONSTRAINT_Css and EXTRA_CONSTRAINT_Csu cases.
8485         * config/sh/sh.c (print_operand): Handle unsigned 16-bit symbolic
8486         constants of SHmedia.  Handle nested constant expressions of
8487         SHmedia correctly.
8488         (andcosts): Fix the costs for SHmedia constants.
8489         (sh_rtx_costs): Take account of outer_code for SHmedia constants.
8490         * config/sh/sh.md (*movsi_media): Use Css constraint instead of C16.
8491         (*movsi_media_nofpu, *movqi_media, *movhi_media): Likewise.
8492         (*movdi_media, *movdi_media_nofpu, movv8qi_i, movv2hi_i): Likewise.
8493         (movv4hi_i, movv2si_i): Likewise.
8494         (movsi_const): Adjust the second operand of ior so to match with
8495         the Csu constraint.
8496         (movdi_const, movdi_const_32bit): Likewise.
8497         (movdi_const_16bit+1): Don't sign-extend LOW.
8498         (movdi_const_16bit+2): Likewise.  Remove the zero_extend and truncate
8499         step.
8500         (*double_shori): Fix the split condition.  Use GEN_INT instead
8501         of get_int_mode calls.  Mask lower 16-bit of the argument of
8502         the last GEN_INT.
8503         (sym2GOTPLT): Remove.
8504         (symGOTPLT2reg): Replace gen_sym2GOTPLT with gen_rtx_CONST and
8505         gen_rtx_UNSPEC.
8506         * config/sh/predicates.md (arith_operand): Use EXTRA_CONSTRAINT_Css
8507         instead of EXTRA_CONSTRAINT_C16.
8508
8509 2006-01-07  Ian Lance Taylor  <ian@airs.com>
8510             David Edelsohn  <edelsohn@gnu.org>
8511
8512         PR rtl-optimization/25662
8513         * optabs.c (simplify_expand_binop): Use simplify_binary_operation
8514         for constant operands instead of simplify_gen_binary.
8515         * simplify-rtx.c (simplify_gen_binary): Swap commutative operands
8516         after trying simplify_binary_operation
8517
8518 2006-01-06  Daniel Berlin  <dberlin@dberlin.org>
8519
8520         * tree.c (iterative_hash_expr): Hash decls based on UID.
8521
8522 2006-01-06  Eric Christopher  <echristo@apple.com>
8523
8524         * doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
8525         (TARGET_UNWIND_EMIT): Fix spelling.
8526         * target.h (gcc_target): Add except_table_label.
8527         * except.c (output_function_exception_table): Use.
8528         * varasm.c (default_emit_except_table_label): New.
8529         * target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
8530         define.
8531         (asm_out): Add here.
8532         * output.h (default_emit_except_table_label): Prototype.
8533         * config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
8534         * config/darwin.c (darwin_emit_except_table_label): Define.
8535         * config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.
8536
8537 2006-01-06  Zdenek Dvorak <dvorakz@suse.cz>
8538
8539         PR tree-optimization/18527
8540         * tree-ssa-loop-niter.c (number_of_iterations_cond,
8541         number_of_iterations_special, number_of_iterations_exit):
8542         Move base and step of an iv to a single structure.  Add
8543         no_overflow flag, and use it in # of iterations analysis.
8544         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Add
8545         folded_casts argument.
8546         (simple_iv): Pass base and step in a structure.  Set no_overflow
8547         flag.
8548         (scev_const_prop): Add argument to analyze_scalar_evolution_in_loop.
8549         Evaluate expensiveness of computing # of iterations instead of
8550         the final expression.
8551         * tree-scalar-evolution.h (affine_iv): New structure.
8552         (simple_iv): Declaration changed.
8553         * tree-chrec.c (chrec_apply): Handle chrecs containing symbols.
8554         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev,
8555         find_givs_in_stmt): Changed due to simple_iv change.
8556
8557 2006-01-06  Jeff Law  <law@redhat.com>
8558
8559         PR ada/24994
8560         * tree-cfg.c (bsi_replace): Rename final argument from
8561         PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
8562         change (stmt -> orig_stmt).
8563         * tree-eh.c (verify_eh_throw_stmt_node): New function.
8564         (bsi_remove): Add new argument.  Remove EH information
8565         if requested.
8566         (verify_eh_throw_table_statements): New function.
8567         (bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
8568         updated.
8569         * tree-optimize.c (execute_free_cfg_annotations): Verify
8570         the EH throw statement table after removing annotations.
8571         * except.h (verify_eh_throw_table_statements): Prototype.
8572         * tree-flow.h (bsi_remove): Update prototype.
8573         * tree-vrp.c (remove_range_assertions): Add new argument to
8574         bsi_remove call.
8575         * tree-ssa-loop-im.c (move_computations_stmt): Likewise.
8576         * tree-complex.c (expand_complex_div_wide): Likewise.
8577         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
8578         * tree-tailcall.c (eliminate_tailcall): Likewise.
8579         * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
8580         * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
8581         * tree-nrv.c (tree_nrv): Likewise.
8582         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
8583         * tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
8584         (combine_blocks): Likewise.
8585         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
8586         * tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
8587         (cleanup_control_flow): Likewise.
8588         (remove_forwarder_block): Likewise.
8589         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
8590         * tree-sra.c (sra_replace): Likewise.
8591         * tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
8592         (forward_propagate_single_use_vars): Likewise.
8593         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
8594         * tree-inline.c (expand_call_inline): Likewise.
8595         * tree-vect-transform.c (vect_transform_loop): Likewise.
8596         * tree-outof-ssa.c (rewrite_trees): Likewise.
8597         * tree-cfg.c (make_goto_expr_edges): Likewise.
8598         (cleanup_dead_labels): Likewise.
8599         (tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
8600         (bsi_move_before, bsi_move_after): Likewise.
8601         (bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
8602         (tree_redirect_edge_and_branch, tree_split_block): Likewise.
8603
8604 2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>
8605
8606         PR tree-opt/25528
8607         * tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
8608         and IMAGPART_EXPR.
8609         * tree-flow-inline.h (var_can_have_subvars): Handle complex types
8610         on non gimple variables.  Also add checks at the top for decls and
8611         mtags.
8612         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
8613         complex types.
8614         * tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
8615         and IMAGPART_EXPR for creating MUST_DEFs.
8616         (get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
8617         and NAME_MEMORY_TAG separately from the DECLs.
8618
8619 2006-01-06  Richard Guenther  <rguenther@suse.de>
8620
8621         * tree-dfa.c (mark_new_vars_to_rename): Create stmt
8622         annotation, if necessary.
8623         * tree-ssa-pre.c (create_expression_by_pieces): Remove
8624         redundant calls to update_stmt.
8625         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr):
8626         Likewise.
8627
8628 2006-01-05  Richard Henderson  <rth@redhat.com>
8629
8630         * c-parser.c (c_parser_objc_methodprotolist): Handle CPP_PRAGMA.
8631
8632 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
8633
8634         * c-typeck.c: Update copyright date.
8635
8636 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
8637
8638         * c-typeck.c (build_c_cast): Always warn when casting
8639         from a pointer to an integer of different size, even if
8640         the node was constant.
8641
8642 2006-01-05  Richard Guenther  <rguenther@suse.de>
8643
8644         PR tree-optimization/22555
8645         * tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
8646         if one structure field is an array.
8647         * tree-ssa-operands.c (get_expr_operands): Continue scanning
8648         operands even if we found a subvar, but ignore VOPs in this
8649         case.
8650         * tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
8651         for renaming.
8652         * tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.
8653
8654 2006-01-05  Richard Earnshaw  <rearnsha@arm.com>
8655
8656         PR middle-end/24998
8657         * arm/t-netbsd (LIB2FUNCS_EXTRA): Define.
8658
8659 2006-01-05  Richard Guenther  <rguenther@suse.de>
8660             Diego Novillo  <dnovillo@redhat.com>
8661
8662         * tree-pass.h (TODO_remove_unused_locals): Define.
8663         * gimple-low.c (expand_var_p, remove_useless_vars,
8664         pass_remove_useless_vars): Remove.  Update all users.
8665         * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names.
8666         (remove_unused_locals): New function.
8667         * tree-flow.h (remove_unused_locals): Declare.
8668         * passes.c (execute_todo): Call remove_unused_locals if
8669         TODO_remove_unused_locals is set.
8670         * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals.
8671         * tree-ssa-dce.c (pass_dce): Likewise.
8672         * tree-outof-ssa.c (pass_del_ssa): Likewise.
8673
8674 2006-01-05  Richard Guenther  <rguenther@suse.de>
8675
8676         * tree-flow.h (struct fieldoff): Decompose field to
8677         type, size and decl.
8678         * tree-ssa-alias.c (create_sft): Take type as parameter.
8679         (create_overlap_variables_for): Store type, size and decl
8680         in the fieldoff structure.
8681         * tree-ssa-structalias.c (fieldoff_compare): Adjust users
8682         of struct fieldoff.
8683         (push_fields_onto_fieldstack): Likewise.
8684         (create_variable_info_for): Likewise.  Use offset for the
8685         SFT name if the decl is not available.
8686
8687 2006-01-04  Paul Brook  <paul@codesourcery.com>
8688
8689         * config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.
8690
8691 2006-01-04  Daniel Berlin  <dberlin@dberlin.org>
8692
8693         * lambda-code.c (can_put_in_inner_loop): Relax
8694         restrictions.
8695         (can_put_after_inner_loop): New function.
8696         (can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
8697         (perfect_nestify): Change to make copies and modify uses.
8698
8699 2006-01-04  Richard Henderson  <rth@redhat.com>
8700
8701         Merge from gomp branch:
8702         * c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
8703         via integer constant.
8704         (pragma_lex): Remove.
8705         * c-pch.c (c_common_pch_pragma): Accept the name as an argument,
8706         rather than parsing it.
8707         * c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
8708         handle_pragma_extern_prefix): Add %< %> quotes.
8709         (registered_pragmas): New.
8710         (c_register_pragma_1): New.
8711         (c_register_pragma): Use it.
8712         (c_register_pragma_with_expansion): Likewise.
8713         (c_invoke_pragma_handler): New.
8714         (init_pragma): Use cpp_register_deferred_pragma directly for
8715         pch_preprocess.
8716         * c-pragma.h (enum pragma_kind): New.
8717         (pragma_handler): New.
8718         (c_invoke_pragma_handler): Declare.
8719         * c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
8720         CPP_PRAGMA_EOL.
8721         * c-common.h (c_common_pch_pragma): Update decl.
8722         * Makefile.in (c-parser.o): Update dependencies.
8723         (GTFILES): Add c-pragma.h.
8724         * c-parser.c (struct c_token): Add pragma_kind.
8725         (struct c_parser): Add in_pragma.
8726         (c_lex_one_token): Always initialize keyword and pragma_kind.
8727         Extract data for CPP_PRAGMA.
8728         (c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
8729         (c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
8730         Don't allow CPP_PRAGMA_EOL if in_pragma.
8731         (c_parser_consume_pragma): New.
8732         (c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
8733         (c_parser_skip_to_end_of_parameter): Likewise.
8734         (c_parser_skip_to_end_of_block_or_statement): Likewise.
8735         (c_parser_skip_to_pragma_eol): New.
8736         (c_parser_external_declaration): Handle CPP_PRAGMA.
8737         (c_parser_compound_statement_nostart): Likewise.
8738         (c_parser_statement_after_labels): Likewise.
8739         (c_parser_pragma): New.
8740         (pragma_lex): Likewise.
8741         (c_parser_pragma_pch_preprocess): New.
8742         (c_parser_new): Merge into ...
8743         (c_parse_file): ... here.  Call c_parser_pragma_pch_preprocess.
8744
8745 2006-01-04  Jeff Law  <law@redhat.com>
8746
8747         PR ada/24994
8748         * tree-cfg.c (bsi_replace): Remove the original statement
8749         from the EH throw statement table.
8750
8751 2006-01-04  Jakub Jelinek  <jakub@redhat.com>
8752
8753         * config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
8754         make the prototype extern "C" and add throw ().
8755
8756         PR target/25554
8757         * config/i386/i386.md (testqi_ext_3): Ensure len is positive
8758         and pos non-negative and pos + len <= 32.
8759         (testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
8760         drop pos + len < HOST_BITS_PER_WIDE_INT test.
8761         (testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
8762
8763         PR c/25559
8764         * c-common.c (handle_vector_size_attribute): Reject zero vector size
8765         as well as sizes not multiple of component size.
8766
8767         PR debug/25562
8768         * function.c (instantiate_expr): New function.
8769         (instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
8770         walk its DECL_VALUE_EXPR with instantiate_expr.
8771
8772         * dwarf2out.c (loc_descriptor_from_tree_1): Don't add
8773         DW_OP_deref{,_size} if address isn't going to be added.
8774
8775 2006-01-04  Ben Elliston  <bje@au.ibm.com>
8776
8777         * config/fp-bit.h: Use top-of-file comment from libgcc2.c.
8778         * config/fp-bit.c: Likewise.
8779
8780 2006-01-03  Daniel Berlin  <dberlin@dberlin.org>
8781
8782         * dominance.c: Add comment about why we use DFS numbering
8783         of dominance tree.
8784
8785 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
8786             Richard Henderson  <rth@redhat.com>
8787
8788         Merge from gomp-branch:
8789         * varasm.c (assemble_variable): Handle thread-local COMMON data.
8790         * defaults.h (ASM_OUTPUT_TLS_COMMON): Define.
8791
8792 2006-01-03  Paolo Bonzini  <bonzini@gnu.org>
8793
8794         PR rtl-optimization/25578
8795         * combine.c (combine_simplify_rtx, force_to_mode): Don't
8796         pass a parameter to simplify_shift_const if changing ASHIFTRT
8797         to LSHIFTRT.
8798
8799 2006-01-03  Adrian Straetling  <straetling@de.ibm.com>
8800
8801         * builtins.c (get_builtin_sync_mem): New function.
8802         (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
8803         expand_builtin_lock_test_and_set, expand_builtin_lock_release):
8804         Call get_builtin_sync_mem to generate mem rtx.
8805
8806 2006-01-03  Richard Guenther  <rguenther@suse.de>
8807
8808         PR c/25183
8809         * stmt.c (add_case_node): Make sure to clear overflow flags
8810         from ranges.
8811
8812 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
8813
8814         Merge from gomp-branch.
8815         * config/sparc/sync.md: New file.
8816         * config/sparc/sparc.md (UNSPECV_MEMBAR, UNSPECV_CAS, UNSPECV_SWAP,
8817         UNSPECV_LDSTUB): New constants.
8818         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): New function.
8819         * config/sparc/predicates.md (memory_reg_operand): New predicate.
8820         * config/sparc/sparc-protos.h (sparc_expand_compare_and_swap_12): New
8821         prototype.
8822
8823 2006-01-03  Roger Sayle  <roger@eyesopen.com>
8824
8825         * combine.c (reg_subword_p): New predicate to test whether the
8826         destination of a set refers to a subword/piece of a register.
8827         (try_combine): Generalize the code to merge the setting of a
8828         pseudo to a constant followed by a set of a subword of that
8829         register to a constant.
8830
8831 2006-01-03  Kazu Hirata  <kazu@codesourcery.com>
8832
8833         * basic-block.h (control_flow_graph): Change the type of
8834         x_label_to_block_map to VEC(basic_block,gc) *.
8835         * tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
8836         set_bb_for_stmt): Adjust the uses of x_label_to_block_map.
8837
8838         * tree-ssa-propagate.c (cfg_blocks): Change the type to
8839         VEC(basic_block,heap) *.
8840         (cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
8841         ssa_prop_fini): Adjust the uses of cfg_blocks.
8842
8843 2006-01-03  Steven Bosscher  <stevenb.gcc@gmail.com>
8844
8845         * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
8846         COMPONENT_REFs.
8847         * emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
8848         hashing trees instead of a pointer hash.
8849         (mem_attrs_htab_eq): Do a deep compare instead of a pointer
8850         compare for MEM_EXPR.
8851
8852         PR rtl-optimization/25130
8853         * cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
8854         when comparing MEMs for GCSE
8855
8856 2006-01-03  Ben Elliston  <bje@au.ibm.com>
8857
8858         * targhooks.h (default_decimal_float_supported_p): Declare.
8859         * targhooks.c (default_decimal_float_supported_p): Define.
8860         * target-def.h (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Redefine to
8861         `default_decimal_float_supported_p'.
8862         * doc/tm.texi (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Update.
8863
8864 2006-01-02  Adam Nemet  <anemet@caviumnetworks.com>
8865
8866         * combine.c (apply_distributive_law <SUBREG>): Check
8867         TRULY_NOOP_TRUNCATION.
8868
8869 2006-01-02  Geoffrey Keating  <geoffk@apple.com>
8870
8871         * dwarf2out.c (have_switched_text_section): Delete.
8872         (have_multiple_function_sections): New.
8873         (have_location_lists): Make 'bool'.
8874         (add_AT_loc_list): Use 'true' not '1'.
8875         (dwarf2out_switch_text_section): Set have_multiple_function_sections.
8876         (output_loc_list): Use have_multiple_function_sections.
8877         (output_ranges): Likewise.
8878         (dwarf2out_begin_function): Set have_multiple_function_sections if
8879         necessary.
8880         (dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
8881         Check function_section rather than DECL_SECTION_NAME.
8882         (dwarf2out_finish): Use have_multiple_function_sections.
8883         Don't clear have_location_lists.
8884
8885 2006-01-02  Eric Botcazou  <ebotcazou@adacore.com>
8886             Jan Hubicka  <jh@suse.cz>
8887
8888         * cfglayout.c (fixup_reorder_chain): Remove kludge for the
8889         case of conditional jump jumping to the next instruction.
8890         * cfgrtl.c (force_nonfallthru_and_redirect): Accept all
8891         cases of conditional jump jumping to the next instruction.
8892
8893 2006-01-02  Jan Hubicka  <jh@suse.cz>
8894
8895         * i386.c (*_cost): Add COSTS_N_INSNS.
8896         (ix86_rtx_costs): Do not use COSTS_N_INSNS.
8897
8898 2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
8899
8900         PR target/25259
8901         * Makefile.in (DECNUMINC): Include libdecnumber's build directory.
8902
8903 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
8904
8905         * config/arm/arm.c (all_fpus): Fix comment typo.
8906         * config/darwin.c: Likewise.
8907         * config/frv/frv.h (FRV_STRUCT_VALUE_REGNUM): Likewise.
8908         * config/h8300/h8300.md (extendqisi2_h8300hs): Likewise.
8909         * config/m68hc11/m68hc11.c (m68hc11_reload_operands): Likewise.
8910
8911 2006-01-01  David Edelsohn  <edelsohn@gnu.org>
8912
8913         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.
8914         (rs6000_split_compare_and_swapqhi): New.
8915         * config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New.
8916         (sync_compare_and_swapqhi_internal): New.
8917         * config/rs6000/rs6000-protos.h: Declare.