OSDN Git Service

2007-06-19 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-19  Richard Guenther  <rguenther@suse.de>
2
3         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
4         only handle positive offsets that fit in a HOST_WIDE_INT.
5
6 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
7
8         * config/i386/i386.c (ix86_emit_swsqrtsf): Limit the result of
9         rsqrt insn to FLT_MAX to avoid NaN for zero input argument.
10
11 2007-06-19  Richard Guenther  <rguenther@suse.de>
12
13         PR middle-end/31950
14         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
15
16 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
17
18         PR tree-optimization/32353
19         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
20
21 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
22
23         PR target/32389
24         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
25         * config/i386/i386.c (assign_386_stack_local): Assert that
26         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
27         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
28         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
29         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
30
31 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
32
33         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
34
35 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
36
37         PR rtl-optimization/32321
38         * gcse.c (replace_store_insn): Update the note before
39         calling emit_insn_after.
40
41 2007-06-18  David Daney  <ddaney@avtrex.com
42
43         Revert:
44
45         2007-06-18  David Daney  <ddaney@avtrex.com
46
47         PR target/32313
48         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
49         local function call.
50
51 2007-06-18  David Daney  <ddaney@avtrex.com
52
53         PR target/32313
54         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
55         local function call.
56
57 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
58
59         PR middle-end/32355
60         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
61         cse_main.
62         * df-problems.c (df_note_bb_compute): Fix dumping info.
63         
64 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
65
66         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
67         insn with emit_jump_insn.
68
69 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
70
71         PR tree-optimization/32383
72         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
73         * targhooks.h (default_builtin_reciprocal): Update prototype.
74         * target.h (struct gcc_target): Update builtin_reciprocal.
75         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
76         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
77         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
78         when fndecl is in BUILT_IN_MD class.
79         (execute_convert_to_rsqrt): Ditto.
80
81         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
82         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
83         Convert BUILT_IN_SQRTF code only  when md_fn is false.
84
85 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
86
87         * bt-load.c (move_btr_def): Fix the order of arguments
88         to validate_replace_rtx.
89
90 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
91
92         * config/m68k/m68k-devices.def: Add 54450..54455.
93
94 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
95
96         PR rtl-optimization/32366
97         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
98         FLOAT_EXTEND]: Prevent non-scalar modes from entering
99         significand_size.
100
101 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
102
103         PR middle-end/32349
104         * modulo-sched (generate_reg_moves): Added rescan parameter and if
105         this is true, rescan insn being modified.
106         (sms_schedule): Added rescan parameter.
107         (rest_of_handle_sms): Moved freeing of dominance info to before
108         getting out of cfg_layout.
109         
110 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
111
112         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
113         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
114         appropriate.
115
116         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
117         FL_CF_EMAC from the entry for isac.
118
119         * config/m68k/predicates.md (const_call_operand): Adjust comment.
120         (const_sibcall_operand): New.
121         (sibcall_operand): Use it.
122         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
123         (m68k_isas): ISAC does not imply FPU or EMAC.
124         (override_options): Add ISA_C logic for symbolic jump & call.
125
126 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
127
128         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
129         return mode from the builtin itself.
130         (sparc_fold_builtin): Fix cast of zero constant.
131
132 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
133
134         * targhooks.c (default_builtin_reciprocal): New default target hook.
135         * targhooks.h (default_builtin_reciprocal): Add prototype.
136         * hooks.c (hook_tree_tree_bool_null): Remove hook.
137         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
138         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
139         default_builtin_reciprocal.
140
141 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
142
143         PR middle-end/31723
144         * hooks.c (hook_tree_tree_bool_null): New hook.
145         * hooks.h (hook_tree_tree_bool_null): Add prototype.
146         * tree-pass.h (pass_convert_to_rsqrt): Declare.
147         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
148         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
149         and convert it to reciprocal a*rfunc(b).
150         (execute_convert_to_rsqrt): New function.
151         (gate_convert_to_rsqrt): New function.
152         (pass_convert_to_rsqrt): New pass definition.
153         * target.h (struct gcc_target): Add builtin_reciprocal.
154         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
155         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
156         TARGET_BUILTIN_RECIPROCAL.
157         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
158
159         * config/i386/i386.h (TARGET_RECIP): New define.
160         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
161         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
162         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
163         and not optimizing for size.
164         (*rcpsf2_sse): New insn pattern.
165         (*rsqrtsf2_sse): Ditto.
166         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
167         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
168         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
169         and not optimizing for size.
170         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
171         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
172         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
173         and not optimizing for size.
174         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
175         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
176         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
177         and not optimizing for size.
178         (*sse_rsqrtv4sf2): Do not export.
179         (sqrtv4sf2): Ditto.
180         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
181         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
182         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
183         and not optimizing for size.
184         (sqrtv4sf2): Ditto.
185         * config/i386/i386.opt (mrecip): New option.
186         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
187         (ix86_emit_swsqrtsf): Ditto.
188         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
189         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
190         builtin definition.
191         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
192         ix86_expand_unop1_builtin.
193         (ix86_emit_swdivsf): New function.
194         (ix86_emit_swsqrtsf): Ditto.
195         (ix86_builtin_reciprocal): New function.
196         (TARGET_BUILTIN_RECIPROCAL): Use it.
197         (ix86_vectorize_builtin_conversion): Rename from
198         ix86_builtin_conversion.
199         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
200         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
201         "i386 and x86_64 Options" section.
202         (Intel 386 and AMD x86_64 Options): Document -mrecip.
203
204 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
205             Zdenek Dvorak <dvorakz@suse.cz>
206             Richard Guenther  <rguenther@suse.de>
207             Kaz Kojima  <kkojima@gcc.gnu.org>
208
209         * tree-vrp.c (compare_values_warnv): Convert val2 to
210         the type of val1.
211         (extract_range_from_assert): Create
212         POINTER_PLUS_EXPR for pointer types.
213         (extract_range_from_binary_expr): Handle
214         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
215         for pointer types.
216         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
217         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
218         POINTER_PLUS_EXPR as PLUS_EXPR.
219         (number_of_iterations_lt_to_ne):
220         For pointer types, use sizetype when
221         creating MINUS_EXPR/PLUS_EXPRs.
222         (assert_loop_rolls_lt): For pointer types, use sizetype when
223         creating MINUS_EXPR/PLUS_EXPRs.
224         (number_of_iterations_le): Likewise.
225         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
226         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
227         like PLUS_EXPR and MINUS_EXPR.
228         * tree-pretty-print.c (dump_generic_node): Handle
229         POINTER_PLUS_EXPR.
230         (op_prio): Likewise.
231         (op_symbol_1): Likewise.
232         * optabs.c (optab_for_tree_code): Likewise.
233         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
234         specially.
235         * tree-tailcall.c (process_assignment): Mention
236         POINTER_PLUS_EXPR in a TODO comment.
237         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
238         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
239         not used with a pointer and an integer type.
240         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
241         increment using chrec_convert_rhs instead of chrec_convert.
242         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
243         PLUS_EXPR except for the right hand side's type will be
244         sizetype.
245         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
246         (fold_used_pointer_cast): Kill.
247         (pointer_offset_p): Kill.
248         (fold_used_pointer): Kill.
249         (pointer_used_p): Kill.
250         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
251         call fold_used_pointer.
252         (instantiate_parameters_1): Convert the increment
253         using chrec_convert_rhs instead of chrec_convert.
254         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
255         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
256         instead of PLUS_EXPR.
257         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
258         PLUS_EXPR for pointers.
259         (std_gimplify_va_arg_expr): Likewise.
260         (fold_builtin_memory_op): Likewise.
261         (fold_builtin_strstr): Likewise.
262         (fold_builtin_strchr): Likewise.
263         (fold_builtin_strrchr): Likewise.
264         (fold_builtin_strpbrk): Likewise.
265         (expand_builtin_memory_chk): Likewise.
266         (fold_builtin_memory_chk): Likewise.
267         (std_expand_builtin_va_start): Use
268         sizetype for the call to make_tree and then convert
269         to the pointer type.
270         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
271         instead of PLUS_EXPR for adding to a pointer.
272         (std_gimplify_va_arg_expr): Use fold_build2 for
273         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
274         the operands to sizetype first and then cast the BIT_AND_EXPR
275         back to the pointer type.
276         * fold-const.c (build_range_check): Handle pointer types
277         specially.
278         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
279         of PLUS_EXPR's. Make sure the offset is converted to
280         sizetype.
281         (try_move_mult_to_index): Strip the NOPs from the offset.
282         Remove code argument and replace all uses with PLUS_EXPR.
283         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
284         specially. Don't use a pointer type for MINUS_EXPR.
285         (fold_unary): Handle for (T1)(X op Y),
286         only p+ as that is the only as that can be handled for
287         binary operators now.
288         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
289         POINTER_PLUS_EXPR.
290         <case PLUS_EXPR>: Add folding of PTR+INT into
291         PTR p+ INT.
292         Don't call try_move_mult_to_index.
293         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
294         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
295         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
296         Don't call try_move_mult_to_index.
297         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
298         (tree_expr_nonzero_p): Likewise.
299         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
300         of PLUS_EXPR for the complex expression folding.
301         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
302         first chrec is a pointer type, then the second should
303         be sizetype and not the first's type.
304         For POINTER_PLUS_EXPR, use a different right hand side type.
305         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
306         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
307         different right hand side type.
308         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
309         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
310         instead of PLUS_EXPR.
311         When either operand is zero, convert the other operand.
312         (chrec_apply): Use chrec_convert_rhs
313         on the argument x instead of chrec_convert.
314         (reset_evolution_in_loop): For pointer types, the new_evol
315         should be sizetype.
316         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
317         different right hand side type.
318         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
319         (chrec_convert_rhs): New function.
320         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
321         different right hand side type.
322         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
323         * tree-chrec.h (chrec_convert_rhs): New prototype.
324         (build_polynomial_chrec): For pointer types, the right hand
325         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
326         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
327         Remove subtraction case as it is always addition now.
328         Make sure the offset is converted to sizetype.
329         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
330         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
331         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
332         PLUS_EXPR in pointer type.
333         Handle POINTER_PLUS_EXPR.
334         (tree_to_aff_combination): Likewise.
335         (force_expr_to_var_cost): Likewise.
336         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
337         instead of PLUS_EXPR for pointers.
338         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
339         instead of PLUS_EXPR of pointer types.
340         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
341         as PLUS_EXPR.
342         (check_va_list_escapes): Likewise.
343         (check_all_va_list_escapes): Likewise.
344         * dwarf2out.c (loc_descriptor_from_tree_1):
345         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
346         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
347         (string_constant): Likewise.
348         * tree-ssa-address.c (tree_mem_ref_addr): When adding
349         the offset to the base, use POINTER_PLUS_EXPR.
350         (add_to_parts): Convert the index to sizetype.
351         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
352         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
353         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
354         Offset only holds something for PLUS_EXPR.
355         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
356         a PLUS_EXPR.
357         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
358         and not PLUS_EXPR.
359         (analyze_accesses_for_modify_stmt): Likewise.
360         Remove comment about the type being integral type as it is
361         wrong now.
362         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
363         PLUS_EXPR.
364         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
365         and not PLUS_EXPR.
366         Correct the type which the artimentic is done in (is now
367         sizetype).
368         Reindent one loop.
369         * tree-data-ref.c (split_constant_offset): Handle
370         POINTER_PLUS_EXPR
371         * tree-affine.c (tree_to_aff_combination): Likewise.
372         * c-typeck.c (build_unary_op): For pointers create the increment
373         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
374         for pointers.
375         * gimplify.c (gimplify_self_mod_expr): Create a
376         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
377         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
378         * tree.def (POINTER_PLUS_EXPR): New tree code.
379         * tree-predcom.c (ref_at_iteration): If we have a pointer
380         type do the multiplication in sizetype.
381         * tree-mudflap.c (mf_xform_derefs_1): Create a
382         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
383         * tree-ssa-forwprop.c 
384         (forward_propagate_addr_into_variable_array_index):
385         Don't expect there to be a cast for the index as that
386         does not exist anymore.
387         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
388         instead of PLUS_EXPR.
389         Don't check for the first operand of the POINTER_PLUS_EXPR
390         was the index as it cannot be.
391         Call forward_propagate_addr_into_variable_array_index with
392         the SSA_NAME instead of the statement.
393         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
394         (compare_constant): Likewise.
395         (copy_constant): Likewise.
396         (compute_reloc_for_constant): Likewise.
397         (output_addressed_constants): Likewise.
398         (initializer_constant_valid_p): Likewise.
399         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
400         Convert the MIN/MAX of the inner type to the outer
401         type before comparing them.
402         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
403         POINTER_PLUS_EXPR instead of PLUS_EXPR.
404         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
405         of PLUS_EXPR for pointers.
406         * tree-inline.c (estimate_num_insns_1): Handle
407         POINTER_PLUS_EXPR.
408         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
409         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
410         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
411         instead of PLUS_EXPR for the pointer increment statement.
412         (vect_update_ivs_after_vectorizer): For pointer types, create
413         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
414         MULT_EXPR in sizetype.
415         (vect_gen_niters_for_prolog_loop): Add a cast when creating
416         byte_misalign.
417         * tree-object-size.c (plus_expr_object_size): Handle
418         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
419         code which is trying to figure out which side is a pointer and 
420         is the index.
421         (check_for_plus_in_loops_1): Likewise.
422         (check_for_plus_in_loops): Likewise.
423         * c-common.c (pointer_int_sum): Create a
424         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
425         * tree-ssa-structalias.c (handle_ptr_arith): Handle
426         only POINTER_PLUS_EXPR.  Removing all the extra
427         code which is trying to figure out which side is a pointer and 
428         is the index.
429         * tree-cfg.c (verify_expr): Add extra checking for pointers and
430         PLUS_EXPR and MINUS_EXPR.
431         Also add checking to make sure the operands of POINTER_PLUS_EXPR
432         are correct.
433         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
434         with make_tree, instead of a pointer type.
435         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
436         for pointers instead of PLUS_EXPR.
437         (s390_gimplify_va_arg): Likewise.
438         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
439         instead of PLUS_EXPR when doing addition on pointer
440         types.  Use sizetype for the second operand.
441         (spu_gimplify_va_arg_expr): Likewise.
442         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
443         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
444         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
445         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
446         for the pointer addition and also use size_int/sizetype
447         for the offset.
448         (ix86_gimplify_va_arg): Likewise.
449         Perform BIT_AND_EXPR on sizetype arguments.
450         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
451         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
452         for the pointer additions and also use size_int for the offsets.
453         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
454         additions and also use size_int for the offsets.  Perform
455         BIT_AND_EXPR on sizetype arguments.
456         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
457         POINTER_PLUS_EXPR for pointers and create the
458         BIT_AND_EXPR in sizetype.
459         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
460         instead of PLUS_EXPR for pointer addition.
461         (rs6000_va_start): Likewise.
462         Also use sizetype for the offset.
463         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
464         as PLUS_EXPR/MINUS_EXPR.
465         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
466         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
467         Don't use BIT_AND_EXPR on a pointer type, convert the
468         expression to sizetype first.
469         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
470         for pointers.
471         (mips_gimplify_va_arg_expr): Likewise.
472         Don't create BIT_AND_EXPR in a pointer type.
473
474 2007-06-15  Eric Christopher  <echristo@apple.com>
475
476         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
477         (x86_64-*-darwin*): Ditto.
478         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
479         for above.
480
481 2007-06-15  Matthew Wilcox <matthew@wil.cx>
482
483         * doc/extend.texi: Document behavior of __attribute__((aligned))
484         on typedefs.
485
486 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
487
488         * rtlanal.c (note_stores): Improve documentation.
489
490 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
491
492         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
493         LOCAL_LABEL_PREFIX): Delete.
494         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
495         (bfin_internal_label): Delete.
496
497 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
498
499         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
500         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
501         otherwise define to LIBGCC2_TF_CEXT.
502         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
503         (LIBGCC_TF_CEXT): Ditto.
504         (TF_SIZE): Ditto.
505
506 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
507
508         PR rtl-optimization/32339
509         * df-scan.c (df_uses_record): Don't modify flags but just add to
510         it for df_ref_record.
511
512 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
513
514         * tree-mudflap.c: Fix whitespace issues.
515
516 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
517
518         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
519
520 2007-06-14  Eric Christopher  <echristo@apple.com>
521
522         * config/i386/sse.md (movdi_to_sse): Rewrite body.
523         (movv4sf): Use gcc_unreachable instead of abort.
524
525 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
526
527         PR target/32268
528         * config/i386/sfp-machine.h (CMPtype): New define.
529         (mach stubs): Use CMPtype instead of int as a return type.
530
531 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
532
533         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
534         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
535         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
536         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
537         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
538         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
539         config/soft-fp/soft-fp.h: Update from glibc CVS.
540
541 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
542
543         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
544
545 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
546
547         PR target/32341
548         * config/v850/v850.c: Include dataflow header file.
549         (substitute_ep_register): Fix typo.
550
551 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
552
553         * configure.ac: Fix earlier checkin.
554         * configure: Regenerated.
555
556 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
557
558         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
559         * aclocal.m4: Regenerate.
560         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
561         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
562         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
563         * configure: Regenerate.
564         * Makefile.in (LOOSE_WARN): Subst loose_warn.
565
566         * Makefile.in (quickstrap): Build libgcc too.
567
568 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
569
570         * configure.ac: Add --enable-checking=df.  Explicitly mention that
571         the variables are initialized as for "release".
572         * df-core.c: Use it.
573         * configure: Regenerate.
574         * config.in: Regenerate.
575
576 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
577
578         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
579         validate_replace_rtx instead of replace_rtx.
580         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
581
582 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
583
584         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
585         (DWARF2_UNWIND_INFO): Override default if configured with
586         SJLJ EH disabled.
587         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
588         (ENDFILE_SPEC): Add crtend.o.
589         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
590         (ENDFILE_SPEC): Add crtend.o.
591         (TARGET_USE_JCR_SECTION): Define.
592         (MD_UNWIND_SUPPORT): Define for 32-bit target.
593
594         * config/i386/cygming-crtbegin.c: New file.
595         * config/i386/cygming-crtend.c: New file.
596
597 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
598
599         * config/i386/w32-unwind.h: New file.
600
601 2007-06-13  Eric Christopher  <echristo@apple.com>
602
603         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
604         the user set a value below STACK_BOUNDARY.
605
606 2007-06-13  Thiemo Seufer  <ths@networkno.de>
607
608         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
609         imply -lpthread for -pthread.
610
611 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
612
613         * basic-block.h: Remove the prototype for
614         free_basic_block_vars.
615         * cfglayout.h: Remove the prototype for
616         insn_locators_initialize.
617         * tree.h: Remove the prototype for emit_line_note.
618
619         * tree-ssa-pre.c (mergephitemp): Remove.
620         (init_pre): Don't use mergephitemp.
621
622 2007-06-13  Eric Christopher  <echristo@apple.com>
623
624         * config/i386/i386.c (override_options): If we've specified
625         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
626
627 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
628
629         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
630         is defined.
631
632 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
633
634         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
635         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
636         (eh_store_handler): New pattern.
637         (eh_return): Emit it instead of a plain move.
638
639 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
640
641         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
642         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
643         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
644         def_builtin_const.
645
646 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
647
648         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
649         (find_next_insn_start, find_load): New functions.
650         (bfin_reorg): Use them to deal with the fact that parallel insns are
651         no longer represented as a SEQUENCE.
652
653 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
654
655         * config/sparc/sparc.c (sparc_override_options): Initialize
656         fpu mask correctly.
657
658 2007-06-13  Dave Korn  <dave.korn@artimi.com>
659
660         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
661         df_get_live_out.
662
663 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
664
665         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
666         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
667         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
668         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
669         tree-vect-transform.c: Fix comment typos.  Follow spelling
670         conventions.
671
672 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
673
674        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
675        to the exit block use set.
676        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
677        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
678
679 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
680
681         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
682         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
683         to indicate an error.
684         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
685         (dbg_cnt_process_opt): Print an error on a bad argument.
686         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
687         * common.opt (-fdbg-cnt-list): New.
688         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
689
690 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
691
692         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
693         flag on ref-all pointers.
694
695 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
696
697         PR middle-end/31579
698         * expr.c (expand_expr_addr_expr_1): Call expand_expr
699         for the offset with the modifier as EXPAND_INITIALIZER
700         if the modifier is EXPAND_INITIALIZER.
701         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
702         a register if we had an overflow.
703
704 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
705
706         * real.c (real_isfinite): New.
707         (real_sqrt): Use it.
708         * real.h (real_isfinite): New.
709         * builtins.c: Use it.
710
711 2007-06-12  Ian Lance Taylor  <iant@google.com>
712             Daniel Berlin  <dberlin@dberlin.org>
713
714         PR libstdc++/29286
715         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
716         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
717         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
718         (DECL_NO_TBAA_P): Define.
719         (struct tree_decl_common): Add no_tbaa_flag field.
720         * tree-ssa-structalias.c (struct variable_info): Add
721         no_tbaa_pruning field.
722         (new_var_info): Initialize no_tbaa_pruning field.
723         (unify_nodes): Copy no_tbaa_pruning field.
724         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
725         (dump_solution_for_var): Print no_tbaa_pruning flag.
726         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
727         callers.
728         (compute_tbaa_pruning): New static function.
729         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
730         Call compute_tbaa_pruning.
731         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
732         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
733         * gimple-low.c (lower_stmt): Likewise.
734         * tree-gimple.c (is_gimple_stmt): Likewise.
735         * tree-ssa-operands.c (get_expr_operands): Likewise.
736         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
737         * tree-inline.c (estimate_num_insns_1): Likewise.
738         (copy_result_decl_to_var): Likewise.
739         * expr.c (expand_expr_real_1): Likewise.
740         * tree-pretty-print.c (dump_generic_node): Likewise.
741         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
742         * omp-low.c (omp_copy_decl_2): Likewise.
743         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
744         * doc/c-tree.texi (Expression trees): Document
745         CHANGE_DYNAMIC_TYPE_EXPR.
746
747 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
748
749         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
750         with !HONOR_NANS and !HONOR_INFINITIES.
751         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
752
753 2007-06-12  Tristan Gingold  <gingold@adacore.com>
754
755         * gcov.c: Comments updated.
756         (source_info): Add file_time field.
757         (source_index): New variable.
758         (mutiple_files): New variable.
759         (generate_results): New function extracted from process_file.
760         (process_file): Save and restore chain of functions, generate
761         results and free structures only if not merging results.
762         (release_structures): File names are now freed in create_file_names
763         (create_file_names): Free previous file names.
764         (find_source): File date is now read here and modifications in
765         source files is checked here.
766         (read_graph_file): Only reverse order of functions for the current
767         object file.
768         (make_gcov_file_name): Do not generate long names if input_name is
769         NULL.
770         (output_lines): If merging results do not display graph, data and
771         runs informations.
772         Checking source file modification is done in find_source.
773
774         * doc/gcov.texi: Append an s to sourcefile.
775
776 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
777
778         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
779         (forced_nop): New pattern.
780         * config/bfin/bfin.c: Include "df.h".
781         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
782         (bfin_discover_loop): Use df_get_live_in instead of
783         global_live_at_start.
784         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
785         df_analyze when done.
786         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
787         the insns.  Use QImode for the final insn in a bundle.  Call
788         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
789         gen_nop.
790         (reorder_var_tracking_notes): New function.
791         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
792         update_life_info.  Call df_analyze after scheduling and bundle
793         generation.  Call reorder_var_tracking_notes if generating these notes.
794         Call df_finish_pass at the end.
795
796 2007-06-12  Dirk Mueller  <dmueller@suse.de>
797
798         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
799         a comparison, not an assignment.
800
801 2007-06-12  Olivier Hainque  <hainque@adacore.com>
802
803         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
804         Request walking the subtrees only, leaving the current is_lhs/val_only
805         untouched.
806         (convert_non_local_reference): Likewise.
807
808 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
809
810         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
811
812 2007-06-12  Richard Guenther  <rguenther@suse.de>
813
814         PR tree-optimization/15353
815         PR tree-optimization/31657
816         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
817         * timevar.def: Add TV_TREE_IFCOMBINE.
818         * tree-pass.h (pass_tree_ifcombine): Declare.
819         * tree-ssa-ifcombine.c: New file.
820         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
821         * tree-flow.h (blocks_in_phiopt_order): Declare.
822         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
823         (tree-ssa-ifcombine.o): New dependencies.
824
825 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
826
827         PR rtl-optimization/32293
828         * combine.c (simplify_if_then_else): Truncate return from
829         nonzero_bits() to correct mode.
830
831 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
832
833         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
834         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
835
836 2007-06-11  Diego Novillo  <dnovillo@google.com>
837
838         * Makefile.in (reload1.o-warn): Remove.
839
840 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
841
842         * combine.c (subst): Use reg_overlap_mentioned_p
843         instead of comparing register numbers directly.
844
845 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
846
847         * reload1.c (mark_home_live_1): Use the mode parameter.
848
849 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
850
851         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
852         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
853         word "deferred".
854         * df-core.c: Ditto.
855
856 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
857
858         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
859
860 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
861
862         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
863         from integer registers.
864         (FP mode splitters): Handle TFmode.
865
866 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
867
868         * tree-ssa-structalias.c (find_what_p_points_to): Return false
869         for ref-all pointers that point-to anything.
870
871 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
872
873         * config/arm/arm.c (arm_output_dwarf_dtprel,
874         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
875
876 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
877
878         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
879         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
880         to memory moves.
881
882 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
883
884         * gcc/tree.c (signed_or_unsigned_type_for): New.
885         (unsigned_type_for): Use signed_or_unsigned_type_for.
886         (signed_type_for): Use signed_or_unsigned_type_for.
887         * gcc/tree.h (signed_or_unsigned_type_for): New.
888         (get_signed_or_unsigned_type): Remove.
889         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
890         lang_hooks.types.signed_type
891         (size_diffop): Likewise.
892         (all_ones_mask_p): Likewise.
893         (build_range_check): Likewise.
894         (fold_cond_expr_with_comparison): Likewise.
895         (fold_cond_expr_with_comparison): Likewise.
896         (unextend): Likewise.
897         (extract_muldiv_1): Likewise.
898         (fold_single_bit_test_into_sign_test): Likewise.
899         (fold_binary): Likewise.
900         (fold_ternary): Likewise.
901         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
902         instead of get_signed_or_unsigned_type.
903         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
904         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
905         * gcc/expr.c (signed_or_unsigned_type_for): Use
906         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
907         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
908         (lhd_signed_or_unsigned_type): Remove.
909         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
910         signed_or_unsigned_type.
911         (lhd_signed_or_unsigned_type): Remove.
912         * gcc/expmed.c (make_tree): Use signed_type_for instead of
913         lang_hooks.types.signed_type.
914         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
915         c_common_signed_type instead of lang_hooks.types.signed_type.
916         (c_common_unsigned_type): New.
917         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
918         (shorten_compare): Use c_common_unsigned_type instead of
919         c_common_signed_or_unsigned_type.
920         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
921         unsigned_type_for.
922         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
923         lang_hooks.types.signed_type.
924         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
925         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
926         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
927         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
928         instead of unsigned_type_for.
929         * gcc/c-decl.c (groakdeclarator): Likewise.
930         * gcc/c-typeck.c (convert_for_assignment): Likewise.
931         * gcc/c-common.h (c_common_unsigned_type): New.
932
933 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
934
935         PR target/32280
936         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
937         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
938
939 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
940
941         PR middle-end/32279
942         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
943         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
944
945 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
946             Sebastian Pop  <sebpop@gmail.com>
947
948         * lambda-code.c (remove_iv): New.
949         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
950
951 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
952
953         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
954         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
955         * tree-ssa-loop-prefetch.c: Include optabs.h.
956         (FENCE_FOLLOWING_MOVNT): New macro.
957         (struct mem_ref): Add independent_p and storent_p fields.
958         (record_ref): Initalize the new fields.
959         (gather_memory_references_ref): Return true if the reference
960         could be analysed.
961         (gather_memory_references): Check whether all memory accesses
962         in loop were recorded.
963         (should_issue_prefetch_p): Return false for nontemporal stores.
964         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
965         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
966         (determine_loop_nest_reuse): Detect independent memory references.
967         (loop_prefetch_arrays): Call mark_nontemporal_stores.
968         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
969         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
970         * config/i386/i386.h (x86_mfence): Declare.
971         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
972         * config/i386/i386.c (x86_mfence): New variable.
973         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
974
975         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
976         * optabs.c (init_optabs): Initialize storent_optab.
977         * optabs.h (enum optab_index): Add OTI_storent.
978         (storent_optab): Declare.
979         * genopinit.c (optabs): Add initialization for storent_optab.
980         * tree.h (MOVE_NONTEMPORAL): New macro.
981         * expr.c (expand_assignment, store_expr, store_constructor_field,
982         store_constructor, store_field, expand_expr_real_1): Propagate
983         nontemporality of the expanded store.
984         (emit_storent_insn): New function.
985         * expr.h (expand_assignment, store_expr): Declaration changed.
986         * function.c (assign_parm_setup_reg): Pass false as nontemporality
987         to expand_assignment.
988         * stmt.c (expand_asm_expr): Ditto.
989         * calls.c (initialize_argument_information): Pass false as
990         nontemporality to store_expr.
991         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
992         storentsi): New.
993
994 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
995
996         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
997         parameter, use it.
998         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
999
1000 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1001
1002         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
1003         and allow DECL_P here.
1004
1005 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
1006
1007         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
1008         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
1009         track of the size of the expression.
1010         * cfghooks.c (merge_blocks): Remove block from loops structure only
1011         after call of the merge_blocks hook.
1012
1013 2007-06-09  Tom Tromey  <tromey@redhat.com>
1014
1015         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
1016         (deprecated_state): Removed.
1017         (start_decl): Update.
1018         (enum deprecated_states): Moved earlier.
1019         (groktypename): Update.
1020         (push_parm_decl): Likewise.
1021         (grokfield): Likewise.
1022         (start_function): Likewise.
1023
1024 2007-06-09  Ian Lance Taylor  <iant@google.com>
1025
1026         PR tree-optimization/32169
1027         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
1028         CONVERT_EXPR, check whether min and max both converted to an
1029         overflow infinity representation.
1030
1031 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
1032
1033         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
1034         not inserted on the edge.
1035
1036 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
1037
1038         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
1039         instructions if they are supported.
1040         (__divsi3, __umodsi3, __modsi3): Likewise.
1041         (__ashldi3, __ashrdi3, __lshrdi3): New.
1042         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
1043
1044 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
1045             Tony Linthicum <tony.linthicum@amd.com>
1046
1047         * doc/extend.texi: Add fvect-cost-model flag.
1048         * common.opt (fvect-cost-model): New flag.
1049         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
1050         cost fields in stmt_vec_info struct for STMT.
1051         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
1052         fields in stmt_vec_info struct and access functions for the same.
1053         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
1054         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
1055         load, store and vector to scalar operation.
1056         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
1057         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
1058         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
1059         (TARG_VEC_STORE_COST): Define cost of vector store.
1060         (vect_estimate_min_profitable_iters): Define new function.
1061         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
1062         check to evaluate if loop iterations are less than minimum profitable
1063         iterations determined by cost model or minimum vect loop bound defined
1064         by user, whichever is more conservative.
1065         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
1066         run-time check to evaluate if loop iterations are less than minimum
1067         profitable iterations determined by cost model or minimum vect loop
1068         bound defined by user, whichever is more conservative.
1069         (vect_estimate_min_profitable_iterations): New function to estimate
1070         mimimimum iterartions required for vector version of loop to be
1071         profitable over scalar version.
1072         (vect_model_reduction_cost): New function.
1073         (vect_model_induction_cost): New function.
1074         (vect_model_simple_cost): New function.
1075         (vect_cost_strided_group_size): New function.
1076         (vect_model_store_cost): New function.
1077         (vect_model_load_cost): New function.
1078         (vectorizable_reduction): Call vect_model_reduction_cost during
1079         analysis phase.
1080         (vectorizable_induction): Call vect_model_induction_cost during
1081         analysis phase.
1082         (vectorizable_load): Call vect_model_load_cost during analysis phase.
1083         (vectorizable_store): Call vect_model_store_cost during analysis phase.
1084         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
1085         vectorizable_promotion, vectorizable_demotion): Call
1086         vect_model_simple_cost during analysis phase.
1087
1088 2007-06-08  Simon Baldwin  <simonb@google.com>
1089
1090         * reg-stack.c (get_true_reg): Readability change.  Moved default case
1091         label into direct switch statement scope.
1092
1093 2007-06-08  Simon Baldwin  <simonb@google.com>
1094
1095         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
1096         in gcc_assert() with '==' comparison.
1097
1098 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1099
1100         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
1101         TARGET_ABM handling of x86_popcnt variable.
1102
1103 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1104
1105         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
1106         __builtin_copysignq and __builtin_infq built-in functions.
1107
1108 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1109
1110         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
1111         SSE4.2 section.  Correct built-in function names in SSE4A section.
1112
1113 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1114
1115         PR tree-optimization/32243
1116         * tree-vect-transform.c (vectorizable_type_promotion): Move check
1117         for ncopies after ratio check between nunits_out and nunits_in.
1118         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
1119
1120 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
1121
1122         PR tree-optimization/32224
1123         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
1124         vectorization upon a non GIMPLE_MODIFY_STMT.
1125
1126 2007-06-08  Christian Bruel  <christian.bruel@st.com>
1127
1128         PR target/29953
1129         * config/sh/sh.md (doloop_end): New pattern and splitter.
1130         * loop-iv.c (simple_rhs_p): Check for hardware registers.
1131
1132 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1133
1134         PR middle-end/32209
1135         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
1136         functions.
1137         (verify_dominators): Do not change dominance tree.
1138
1139 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1140
1141         * config/sh/constraints.md: New file.
1142         * config/sh/sh.c: Include tm-constrs.h.
1143         (reg_class_from_letter): Remove.
1144         (prepare_cbranch_operands): Use satisfies_constraint_*
1145         function instead of macro.
1146         (andcosts, broken_move, sh_secondary_reload): Likewise.
1147         * config/sh/predicates.md (trapping_target_operand): Likewise.
1148         (and_operand, arith_operand, arith_reg_or_0_operand,
1149         cmp_operand, logical_operand, target_operand,
1150         ua_address_operand, ua_offset, xor_operand): Likewise.
1151         * config/sh/sh.md: Include constraints.md.
1152         (*movsicc_t_false): Use satisfies_constraint_* function
1153         instead of macro.
1154         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
1155         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
1156         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
1157         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
1158         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
1159         (REG_CLASS_FROM_CONSTRAINT): Remove.
1160         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
1161         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
1162         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
1163         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
1164         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1165         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
1166         function instead of macro.
1167         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1168         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
1169         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
1170         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
1171         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
1172         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
1173         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
1174         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
1175         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
1176         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
1177         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
1178         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
1179         EXTRA_CONSTRAINT_STR): Likewise.
1180         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
1181
1182 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1183
1184         * config/i386/darwin.h (STACK_BOUNDARY): Define.
1185
1186 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1187
1188         PR c++/30759
1189         * c-common.h (flag_cpp0x): Replaced by...
1190         (cxx_dialect): ... this new variable specifying the C++ dialect that
1191         is used.
1192         * c-common.c (flag_cpp0x): Removed.
1193         (cxx_dialect): Defined.
1194         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
1195         cxx_dialect.
1196         * c-opts.c (c_common_post_options): Likewise.
1197         (set_std_cxx98): Set cxx_dialect to cxx98.
1198         (set_std_cxx0x): Set cxx_dialect to cxx0x.
1199
1200 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1201             Hui-May Chang <hm.chang@apple.com>
1202
1203         * doc/invoke.texi (Darwin Options): Update documentation for
1204         -mmacosx-version-min.
1205         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
1206         * config/darwin-driver.c: New file.
1207         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
1208         * config/t-darwin (darwin-driver.o): New rule.
1209
1210         * config/darwin-c.c (version_as_macro): Ignore low digit.
1211
1212 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
1213
1214         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
1215         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
1216         (CSGNMODE): New mode macro.
1217         (CSGNVMODE): New mode attribute.
1218         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
1219         expander using CSGNMODE mode macro.  Handle TFmode.
1220         (copysign<mode>3_const): Rename from copysignsf3_const and
1221         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
1222         Handle TFmode.
1223         (copysign<mode>3_var): Rename from copysignsf3_var and
1224         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
1225         Handle TFmode.
1226         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
1227         mode macro.  Handle TFmode.
1228         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
1229         (iortf3, *iortf3): Ditto.
1230         (xortf3, *xortf3): Ditto.
1231         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
1232         TFmode and TImode masks.
1233         (ix86_expand_copysign): Expand TFmode copysign insn.
1234         (IX86_BUILTIN_INFQ): New.
1235         (IX86_BUILTIN_FABSQ): Ditto.
1236         (IX86_BUILTIN_COPYSIGNQ): Ditto.
1237         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
1238         [__builtin_fabsq]: Ditto.
1239         [__builtin_copysignq]: Ditto.
1240         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
1241         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
1242         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
1243         ix86_expand_binop_builtin().
1244
1245 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
1246
1247         * config/xtensa/lib1funcs.asm: Clean up whitespace.
1248
1249 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
1250
1251         PR target/31850
1252         * rtl.h (push_to_sequence2): New.
1253         * emit-rtl.c (push_to_sequence2): New.
1254         * function.c (assign_parm_data_all): Add new fields.
1255         (assign_parm_setup_block): Call push_to_sequence2 instead of
1256         push_to_sequence.
1257         (assign_parm_setup_reg): Ditto.
1258         (assign_parm_setup_stack): Ditto.
1259         (assign_parms_unsplit_complex): Ditto.
1260         (assign_parms): Change field name.
1261
1262 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
1263
1264         PR tree-optimization/32220
1265         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
1266         phi node is reached before defining statement.
1267
1268 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1269
1270         PR tree-opt/32231
1271         * tree-vect-transform.c (vectorizable_call): Call update_stmt
1272         after changing the right hand side of the assignment.
1273
1274 2007-06-06  Eric Christopher  <echristo@apple.com>
1275
1276         * config.gcc (i?86-*-darwin*): Remove arch parameter.
1277         (x86_64-*-darwin*): Ditto.
1278         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
1279         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1280
1281 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1282
1283         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
1284         coding conventions.
1285         (add_key): Likewise.
1286         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
1287         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
1288         variable names.
1289         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
1290         (add_cost_one_coalesce): Likewise.
1291         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
1292         variable names. Rename orig to orig_name for consistency.
1293         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
1294         conventions.
1295         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
1296         (record_equivalences_from_stmt): Likewise.
1297         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
1298         the coding conventions.
1299         (memory_ssa_name_same): Likewise.
1300         (dse_optimize_stmt): Likewise.
1301         (dse_record_phis): Likewise.
1302         (dse_finalize_block): Likewise.
1303         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
1304         keywords as variable names.
1305         (may_move_till): Cast according to the coding conventions.
1306         (force_move_till_expr): Avoid using C++ keywords as variable names.
1307         (force_move_till): Cast according to the coding conventions.
1308         (memref_hash): Likewise.
1309         (memref_eq): Likewise.
1310         (gather_mem_refs_stmt): Likewise.
1311         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
1312         keywords as variable names.
1313         (idx_find_step): Cast according to the coding conventions.
1314         (idx_record_use): Likewise.
1315         (find_depends): Likewise.
1316         (prepare_decl_rtl): Likewise.
1317         (mbc_entry_hash): Likewise.
1318         (mbc_entry_eq): Likewise.
1319         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
1320         (simplify_replace_tree): Avoid using C++ keywords as variable names.
1321         (idx_infer_loop_bounds): Cast according to the coding conventions.
1322         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
1323         * tree-ssa-math-opts.c (occ_new ): Likwise.
1324         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
1325         macros.
1326         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
1327         names.
1328         (add_use_op): Likewise.
1329         (add_vop): Likewise.
1330         (add_vuse_op): Likewise.
1331         (add_vdef_op): Likewise.
1332         (get_expr_operands): Likewise.
1333         (push_stmt_changes): Use type safe memory macros.
1334         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
1335         keywords as variable names.
1336         (conditional_replacement): Likewise.
1337         (minmax_replacement): Likewise.
1338         (abs_replacement): Likewise.
1339         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
1340         coding conventions.
1341         (insert_fake_stores): Avoid using C++ keywords as variable names.
1342         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
1343         conventions.
1344         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
1345         (heapvar_insert): Use type safe memory macros.
1346         (new_var_info): Cast according to the coding conventions.
1347         (new_constraint): Likewise.
1348         (remove_preds_and_fake_succs): Use type safe memory macros.
1349         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
1350         conventions.
1351         (thread_single_edge): Likewise.
1352         (thread_through_loop_header): Likewise.
1353
1354 2007-06-06  Eric Christopher  <echristo@apple.com>
1355
1356         * config/i386/i386.c (override_options): Move handling
1357         of TARGET_SUBTARGET* earlier.
1358
1359 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
1360
1361         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
1362         use %n on printf.
1363
1364 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
1365
1366         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
1367         emited outside of basic block.
1368         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
1369         the created blocks.
1370         * rtl.h (delete_insn_chain): Declaration changed.
1371         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
1372         non-removed insns.
1373         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
1374         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
1375         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
1376         to delete_insn_chain.
1377         (rtl_verify_flow_info_1): Verify that the insns in header and footer
1378         do not have bb field set.
1379         (rtl_verify_flow_info): Verify that insns between basic blocks do not
1380         have bb field set.
1381         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
1382         * cfgcleanup.c (try_optimize_cfg): Ditto.
1383
1384 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1385
1386         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
1387         (lambda_body_vector_new): Use type safe memory macros.
1388         (lambda_linear_expression_new): Likewise.
1389         (lambda_loopnest_new): Likewise.
1390         (lambda_lattice_new): Likewise.
1391         (replace_uses_equiv_to_x_with_y): Cast according to the coding
1392         conventions. Use type safe memory macros.
1393         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
1394         (lambda_body_vector_s): Likewise.
1395         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
1396         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
1397
1398 2007-06-06  Richard Guenther  <rguenther@suse.de>
1399
1400         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
1401         if we need to schedule cfg_cleanup.
1402         (tree_ssa_forward_propagate_single_use_vars): Do so.
1403
1404 2007-06-06  Ian Lance Taylor  <iant@google.com>
1405
1406         * fold-const.c (merge_ranges): If range_successor or
1407         range_predecessor fail, just return 0.
1408
1409 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1410
1411         PR tree-optimization/32216
1412         * tree-vectorizer.c (supportable_widening_operation): Determine
1413         signedness of FIX_TRUNC_EXPR from output operand.
1414         (supportable_narrowing_operation): Ditto.
1415         * tree-vect-generic.c (expand_vector_operations_1): Determine
1416         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
1417         from input operand.
1418
1419 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1420
1421         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
1422         (struct pta): ...from here. Change flags to unsigned to avoid
1423         excessive casting (as it is used as a bit mask).
1424         (override_options): Add casts according to the coding convenventions.
1425         (x86_64_elf_unique_section): Likewise.
1426         (examine_argument): Avoid using C++ keywords as variable names.
1427         (construct_container): Likewise.
1428         (legitimize_pic_address): Likewise.
1429         (get_dllimport_decl): Cast according to the coding conventions. Use
1430         type safe memory macros.
1431         (legitimize_address): Cast according to the coding conventions.
1432         (emit_i387_cw_initialization): Corrected the type of slot to enum
1433         ix86_stack_slot.
1434         (ix86_init_machine_status): Use type safe memory macros.
1435         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
1436         (bdesc_pcmpistr): Likewise.
1437         (bdesc_crc32): Likewise.
1438         (bdesc_sse_3arg): Likewise.
1439         (bdesc_2arg): Likewise.
1440         (bdesc_1arg): Likewise.
1441         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
1442         (ix86_expand_sse_pcmpistr): Likewise.
1443         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
1444         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
1445         int to match the langhook definition.
1446         (ix86_builtin_conversion): Change the type of code to unsigned init to
1447         match the langhook definition.
1448         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
1449         names.
1450         (ix86_preferred_output_reload_class): Likewise.
1451         (ix86_cannot_change_mode_class): Likewise.
1452         (ix86_memory_move_cost): Likewise.
1453         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
1454         avoid excessive casting later on.
1455         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
1456
1457 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1458
1459         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
1460         as flags setting insn.
1461         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
1462
1463 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1464
1465         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
1466         (UNSPEC_ROUND): New.
1467         ("sse4_1_round<mode>2"): New insn pattern.
1468         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
1469         SSE4.1 targets.
1470         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
1471         expander using SSEMODEF mode macro.  Expand using
1472         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1473         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
1474         expander using SSEMODEF mode macro.  Expand using
1475         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1476         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
1477         expander using SSEMODEF mode macro.  Expand using
1478         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1479         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
1480         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
1481         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
1482         UNSPEC_ROUNDS.
1483
1484 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
1485             Sebastian Pop  <sebpop@gmail.com>
1486
1487         * lambda.h (build_linear_expr): New.
1488         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
1489         Use build_linear_expr, call fold and force_gimple_operand.
1490         (lambda_loopnest_to_gcc_loopnest): Check that there is
1491         something to insert.
1492         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
1493
1494 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
1495
1496         PR preprocessor/23479
1497         * doc/extend.texi: Document the 0b-prefixed binary integer
1498         constant extension.
1499
1500 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1501
1502         PR tree-optimization/32215
1503         * tree-vectorizer.c (supportable_widening_operation): Return false
1504         for unsupported FIX_TRUNC_EXPR tree code.
1505         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
1506
1507 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
1508
1509         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
1510         register on SPE targets.  Change documentation to reflect
1511         reality.
1512         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
1513         Change FIXED_SCRATCH to 14 and document why we're keeping r14
1514         out of the register allocation pool.
1515         (rs6000_reg_live_or_pic_offset_p): New function.
1516         (rs6000_emit_prologue): Move the actual saving of LR up to free
1517         r0 for holding r11.  Split saving of SPE 64-bit registers into
1518         its own case.  Ensure that offsets will always be in-range for
1519         'evstdd' by using r11 as a scratch register to point at the start
1520         of the SPE save area.  Save r11 if necessary, as it is the static
1521         chain register.
1522         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
1523         into its own case.  Ensure that offsets will always be in-range
1524         for 'evldd' by using r11 as a scratch register to point at the
1525         start of the SPE save area.  Also adjust r11 when restoring
1526         the stack pointer to compensate for pre-loading r11.
1527
1528 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
1529
1530         * cfg.c (init_flow): Use type safe memory macros.
1531         (alloc_block): Likewise.
1532         (unchecked_make_edge): Likewise.
1533         (dump_flow_info): Avoid using C++ keywords as variable names.
1534         (copy_original_table_clear): Cast according to the coding conventions.
1535         (copy_original_table_set): Likewise.
1536         * cfgexpand (label_rtx_for_bb): Likewise.
1537         (expand_gimple_basic_block): Likewise.
1538         * cfghooks.c (dump_bb): Likewise.
1539         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
1540         variable names.
1541         (lv_add_condition_to_bb): Likewise.
1542         * cfglayout (relink_block_chain): Cast according to the coding
1543         conventions.
1544         (fixup_reorder_chain): Likewise.
1545         (fixup_fallthru_exit_predecessor): Likewise.
1546         * cfgloop.c (glb_enum_p): Likewise.
1547         (get_exit_description): Likewise.
1548         (dump_recorded_exit): Likewise.
1549         * cfgloop.h (enum loop_estimation): Move out of struct scope...
1550         (struct loop): ... from here.
1551         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
1552         conventions.
1553         * cfgrtl.c (rtl_create_basic_block): Likewise.
1554         (rtl_split_block): Likewise.
1555         (rtl_dump_bb): Likewise.
1556         (cfg_layout_split_block): Likewise.
1557         (init_rtl_bb_info): Use typesafe memory macros.
1558
1559         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
1560         * graphds.h: Updated all usages of edge to graph_edge.
1561         * graphds.c: Likewise.
1562         * cfgloopanal.c: Likewise.
1563
1564 2007-06-05  Ian Lance Taylor  <iant@google.com>
1565
1566         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
1567         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
1568         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
1569         expression.
1570         (test_for_singularity): Likewise.
1571
1572 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1573
1574         * config/i386/constraints.md ("Y2"): Replaced by ...
1575         ("Yt"): This.
1576         * config/i386/i386.md: Likewise.
1577         * config/i386/mmx.md: Likewise.
1578         * config/i386/sse.md: Likewise.
1579
1580 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1581
1582         * config/i386/constraints.md ("z"): Replaced by ...
1583         ("Y0"): This.
1584         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
1585         (sse4_1_blendvps): Likewise.
1586         (sse4_1_pblendvb): Likewise.
1587         (sse4_2_pcmpestr): Likewise.
1588         (sse4_2_pcmpestrm): Likewise.
1589         (sse4_2_pcmpestr_cconly): Likewise.
1590         (sse4_2_pcmpistr): Likewise.
1591         (sse4_2_pcmpistrm): Likewise.
1592         (sse4_2_pcmpistr_cconly): Likewise.
1593
1594 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
1595
1596         * matrix-reorg.c (transform_access_sites): Fix computation.
1597         (transform_allocation_sites): Same.
1598
1599 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1600
1601         * config/i386/i386.c (override_options): Use
1602         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
1603
1604 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1605
1606         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
1607         (nonimm_not_xmm0_operand): Ditto.
1608         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
1609         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
1610         as operand[2] predicate.  Require "z" class XMM register for
1611         operand[3].  Adjust asm template.
1612         ("sse4_1_blendvpd"): Ditto.
1613         ("sse4_1_pblendvb"): Ditto.
1614         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
1615         force op2 into xmm0 register for variable blend instructions.
1616
1617 2007-06-04  Tom Tromey  <tromey@redhat.com>
1618
1619         * c-tree.h (start_enum): Update.
1620         (build_enumerator): Likewise.
1621         * c-decl.c (enum_next_value): Removed.
1622         (enum_overflow): Likewise.
1623         (start_enum): Add c_enum_contents argument.  Don't use globals.
1624         (build_enumerator): Likewise.
1625         * c-tree.h (struct c_enum_contents): New struct.
1626
1627 2007-06-04  Tom Tromey  <tromey@redhat.com>
1628
1629         * c-common.c (c_common_get_alias_set): Fix indentation.
1630
1631 2007-06-04  Ian Lance Taylor  <iant@google.com>
1632
1633         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
1634         to overflow, reduce overflow infinity to regular infinity.
1635         (vrp_var_may_overflow): New static function.
1636         (vrp_visit_phi_node): Check vrp_var_may_overflow.
1637
1638 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
1639
1640         * stor-layout.c (layout_type): Remove duplicate code.
1641
1642 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
1643
1644         PR c/32191
1645         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
1646         before build_common_builtin_nodes ().
1647
1648 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
1649
1650         PR target/31733
1651         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
1652
1653 2007-06-04  Jan Hubicka  <jh@suse.cz>
1654
1655         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
1656         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
1657         instead of _stat version.
1658
1659 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1660
1661         PR tree-optimization/32194
1662         * tree-predcom.c (determine_offset): Check that both references have
1663         the same type.
1664
1665 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1666
1667         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
1668         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
1669         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
1670         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
1671         Add argument to iterate_fix_dominators call.
1672         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
1673         * gcse.c (hoist_code): Change domby to vector.
1674         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
1675         Add argument to iterate_fix_dominators call.
1676         * loop-doloop.c (doloop_modify): Changed recount_dominator to
1677         recompute_dominator.
1678         * lambda-code.c (perfect_nestify): Ditto.
1679         * cfgloopanal.c: Include graphds.h.
1680         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
1681         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
1682         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
1683         add_edge call.
1684         * graphds.c: New file.
1685         * graphds.h: New file.
1686         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
1687         (get_dominated_by, get_dominated_by_region): Change return type to
1688         vector.
1689         (verify_dominators): Recompute all dominators and compare the results.
1690         (recount_dominator): Renamed to ...
1691         (recompute_dominator): ... this.  Do not check that the block is
1692         dominated by entry.
1693         (iterate_fix_dominators): Reimplemented.
1694         (prune_bbs_to_update_dominators, root_of_dom_tree,
1695         determine_dominators_for_sons): New functions.
1696         * et-forest.c (et_root): New function.
1697         * et-forest.h (et_root): Declare.
1698         * Makefile.in (graphds.o): Add.
1699         (cfgloopanal.o): Add graphds.h dependency.
1700         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
1701         * basic-block.h (get_dominated_by, get_dominated_by_region,
1702         iterate_fix_dominators): Declaration changed.
1703         (recount_dominator): Renamed to ...
1704         (recompute_dominator): ... this.
1705         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
1706         (thread_through_all_blocks): Do not free dominance info.
1707
1708 2007-06-03  Andreas Schwab  <schwab@suse.de>
1709
1710         * config/m68k/m68k.c (override_options): Don't override
1711         REAL_MODE_FORMAT.
1712         * config/m68k/m68k-modes.def (SF, DF): Define to use
1713         motorola_single_format and motorola_double_format, resp.
1714         * real.c (motorola_single_format): Renamed from
1715         coldfire_single_format.
1716         (motorola_double_format): Renamed from coldfire_double_format.
1717         (encode_ieee_extended): Generate a proper canonical NaN image
1718         respecting canonical_nan_lsbs_set.
1719         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
1720         true.
1721         * real.h: Adjust declarations.
1722
1723 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1724
1725         PR target/32163
1726         * config/sh/sh.md (symGOT_load): Don't schedule insns when
1727         the symbol is generated with the stack protector.
1728
1729 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
1730
1731         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
1732         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
1733         "interrupt".
1734         * doc/extend.texi (interrupt): Mention m68k.
1735
1736 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
1737
1738         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
1739         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
1740         (ix86_expand_sse_pcmpestr): Do not check operands for
1741         "register_operand", when insn operand predicate is "register_operand".
1742         (ix86_expand_sse_pcmpistr): Ditto.
1743
1744 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
1745             Uros Bizjak  <ubizjak@gmail.com>
1746
1747         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
1748         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
1749         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
1750         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
1751         * config/i386/constraints.md ("z"): New register constraint
1752         for members of SSE_FIRST_REG class.
1753         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
1754         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
1755         SSE_FIRST_REG class.
1756         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
1757         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
1758         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
1759         (IX86_BUILTIN_PCMPESTRM128): Likewise.
1760         (IX86_BUILTIN_PCMPESTRA128): Likewise.
1761         (IX86_BUILTIN_PCMPESTRC128): Likewise.
1762         (IX86_BUILTIN_PCMPESTRO128): Likewise.
1763         (IX86_BUILTIN_PCMPESTRS128): Likewise.
1764         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
1765         (IX86_BUILTIN_PCMPISTRI128): Likewise.
1766         (IX86_BUILTIN_PCMPISTRM128): Likewise.
1767         (IX86_BUILTIN_PCMPISTRA128): Likewise.
1768         (IX86_BUILTIN_PCMPISTRC128): Likewise.
1769         (IX86_BUILTIN_PCMPISTRO128): Likewise.
1770         (IX86_BUILTIN_PCMPISTRS128): Likewise.
1771         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
1772         (struct builtin_description): Change "flag" field to unsigned.
1773         (bdesc_pcmpestr): New builtin description table.
1774         (bdesc_pcmpistr): Likewise.
1775         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
1776         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
1777         Initialize pcmp[ei]str[im] insns for SSE4.2.
1778         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
1779         (ix86_expand_sse_pcmpistr): Likewise.
1780         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
1781         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
1782         (UNSPEC_PCMPISTR): Likewise.
1783         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
1784         (sse4_2_pcmpestri):New isns pattern.
1785         (sse4_2_pcmpestrm): Likewise.
1786         (sse4_2_pcmpestr_cconly): Likewise.
1787         (sse4_2_pcmpistr): New insn patern and splitter.
1788         (sse4_2_pcmpistri):New isns pattern.
1789         (sse4_2_pcmpistrm): Likewise.
1790         (sse4_2_pcmpistr_cconly): Likewise.
1791         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
1792         in SSE4.2.
1793
1794 2007-06-01  David Daney  <ddaney@avtrex.com>
1795
1796         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
1797         LOADGP_ABSOLUTE and not binds_local_p.
1798
1799 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
1800
1801         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
1802
1803 2007-06-01  Ian Lance Taylor  <iant@google.com>
1804
1805         * tree-vrp.c (compare_name_with_value): Always set
1806         used_strict_overflow if we get a result from the variable itself.
1807
1808 2007-06-01  Ian Lance Taylor  <iant@google.com>
1809
1810         PR rtl-optimization/31455
1811         * lower-subreg.c (find_decomposable_subregs): Don't decompose
1812         subregs which have a cast between modes which are not tieable.
1813
1814 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
1815
1816         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
1817         breaks after return statements.
1818
1819 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1820
1821         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
1822         only after no_new_pseudos.
1823
1824 2007-05-31  Eric Christopher  <echristo@apple.com>
1825
1826         * expr.c (convert_move): Assert that we don't have a BLKmode
1827         operand.
1828         (store_expr): Handle BLKmode moves by calling emit_block_move.
1829
1830 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
1831
1832         * c-typeck.c (build_indirect_ref): Include type in error message.
1833         (build_binary_op): Pass types to binary_op_error.
1834         * c-common.c (binary_op_error): Take two type arguments, print out
1835         types with error.
1836         * c-common.h (binary_op_error): Update prototype.
1837
1838 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1839
1840         * config/i386/i386.c: Correct coments on -mno-sse4.
1841
1842 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1843
1844         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
1845         (x86_64-*-*): Likewise.
1846         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
1847         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
1848         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
1849         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
1850         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
1851         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
1852         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
1853         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
1854         (OPTION_MASK_ISA_SSE4): Likewise.
1855         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
1856         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
1857         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
1858         (override_options): Support SSE4.2.
1859         (ix86_build_const_vector): Support SImode and DImode.
1860         (ix86_build_signbit_mask): Likewise.
1861         (ix86_expand_int_vcond): Support V2DImode.
1862         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
1863         (IX86_BUILTIN_CRC32HI): Likewise.
1864         (IX86_BUILTIN_CRC32SI): Likewise.
1865         (IX86_BUILTIN_CRC32DI): Likewise.
1866         (IX86_BUILTIN_PCMPGTQ): Likewise.
1867         (bdesc_crc32): Likewise.
1868         (bdesc_sse_3arg): Likewise.
1869         (ix86_expand_crc32): Likewise.
1870         (ix86_init_mmx_sse_builtins): Support SSE4.2.
1871         (ix86_expand_builtin): Likewise.
1872         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1873         __SSE4_2__ for -msse4.2.
1874         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
1875         (CRC32MODE): Likewise.
1876         (crc32modesuffix): Likewise.
1877         (crc32modeconstraint): Likewise.
1878         (sse4_2_crc32<mode>): Likewise.
1879         (sse4_2_crc32di): Likewise.
1880         * config/i386/i386.opt (msse4.2): New for SSE4.2.
1881         (msse4): Likewise.
1882         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
1883         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
1884         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
1885         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
1886         (vcondu<mode>): Likewise.
1887         * doc/extend.texi: Document SSE4.2 built-in functions.
1888         * doc/invoke.texi: Document -msse4.2/-msse4.
1889
1890 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
1891
1892         PR tree-optimization/32160
1893         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
1894         variable as gimple reg.
1895         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
1896
1897 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
1898
1899         * gcc.c (main): Don't consider linker options when issuing the
1900         warning about a linker input file not being used.
1901
1902 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1903
1904         * tree-vrp.c (compare_names): Initialize sop.
1905
1906 2007-05-30  Dirk Mueller  <dmueller@suse.de>
1907
1908         * cgraphunit.c (cgraph_analyze_function): Remove
1909         computation of inline parameters.
1910
1911 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
1912
1913         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
1914
1915 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
1916
1917         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
1918         Add vx-common.h.  Include vxworks.h between vx-common.h and
1919         arm/vxworks.h.
1920         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
1921         redefining.
1922         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
1923         (TARGET_ASM_DESTRUCTOR): Likewise.
1924         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
1925         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
1926         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
1927         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
1928         (VXWORKS_ENDIAN_SPEC): Define.
1929         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
1930         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
1931         VXWORKS_* equivalents.
1932         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
1933         (ASM_FILE_START): Delete.
1934         (TARGET_VERSION): Reformat.
1935         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
1936         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
1937         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
1938         (FPBIT, DPBIT): Define.
1939         (fp-bit.c, dp-bit.c): New rules.
1940         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
1941         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
1942         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
1943         * config/arm/arm.h: Include vxworks-dummy.h.
1944         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
1945         Mark with ATTRIBUTE_UNUSED.
1946         (arm_override_options): Do not allow VxWorks RTP PIC to be used
1947         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
1948         make it incompatible with -msingle-pic-base.
1949         (arm_function_ok_for_sibcall): Return false for calls that might
1950         go through a VxWorks PIC PLT entry.
1951         (require_pic_register): New function, split out from...
1952         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
1953         for VxWorks RTPs.
1954         (arm_load_pic_register): Handle the VxWorks RTP initialization
1955         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
1956         (arm_emit_call_insn): New function.
1957         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
1958         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
1959         (pic_offset_arm): New pattern.
1960         (call, call_value): Use arm_emit_call_insn.
1961         (call_internal, call_value_internal): New expanders.
1962         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
1963         VxWorks unless __PIC__.
1964
1965 2007-05-30  Eric Christopher  <echristo@gmail.com>
1966
1967         * genrecog.c: Include regs.h in generated file.
1968         * genemit.c: Ditto. Fix up formatting.
1969         * config/mn10300/constraints.md: New.
1970         * config/mn10300/mn10300.md: Include.
1971         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
1972         Fix up for removed macro.
1973         * config/mn10300/predicates.md (call_address_operand):  Ditto.
1974         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
1975         (CONST_OK_FOR_I): Ditto.
1976         (CONST_OK_FOR_J): Ditto.
1977         (CONST_OK_FOR_K): Ditto.
1978         (CONST_OK_FOR_L): Ditto.
1979         (CONST_OK_FOR_M): Ditto.
1980         (CONST_OK_FOR_N): Ditto.
1981         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
1982         (OK_FOR_Q): Ditto.
1983         (OK_FOR_R): Ditto.
1984         (OK_FOR_T): Ditto.
1985         (EXTRA_CONSTRAINT): Ditto.
1986
1987 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1988
1989         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
1990         Remove defines.
1991         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
1992         OPTION_MASK_ISA_64BIT.
1993         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
1994
1995 2007-05-30  Richard Guenther  <rguenther@suse.de>
1996
1997         PR middle-end/32152
1998         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
1999         types for comparison.
2000         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
2001         with original typed arguments.
2002         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
2003
2004 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
2005
2006         PR tree-optimization/31769
2007         * except.c (duplicate_eh_regions): Clear prev_try if
2008         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
2009
2010 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
2011
2012         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
2013         * tree-ssa-sink.c (statement_sink_location): Return basic block and
2014         bsi of the location where statements should be inserted.
2015         (sink_code_in_bb): Take bsi from statement_sink_location.
2016         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
2017         instead of bsi_start.
2018         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
2019         bsi_insert_after.
2020         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
2021         (bsi_move_before): Document inconsistency with bsi_move_after.
2022         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
2023
2024 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2025
2026         * config/i386/i386.h (TARGET_ABM): New define.
2027         (TARGET_POPCNT): Ditto.
2028         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
2029         New temporary defines to redefine from OPTION_ISA_* defines.
2030         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
2031         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
2032         (ix86_isa_flags): New extern int declaration.
2033         (TARGET_SUBTARGET_DEFAULT): New define.
2034         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
2035         (TARGET_SUBTARGET32_DEFAULT): Ditto.
2036         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
2037         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2038         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
2039         * config/i386/darwin.h: Change TARGET_64BIT define to
2040         OPTION_ISA_64BIT.
2041
2042         * config/i386/i386.opt (m3dnowa): Define as undocumented option
2043         using existing "ix86_isa_flags" varible.
2044         (m32, m64): Use existing "ix86_isa_flags" variable.
2045         (mmmx, m3dnow): Ditto.
2046         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
2047         (mabm): Define as non-negative option using "x86_abm" variable.
2048         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
2049
2050         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
2051         Rewrite feature test bitmap.
2052         (ix86_isa_flags): New initialized global int varible.
2053         (ix86_isa_flags_explicit): New static int variable.
2054         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
2055         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
2056         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
2057         target_flags_explicit.
2058         (override_options): Remove "target_enable" and "target_disable" fields
2059         from "struct ptt". Update processor_target_table accordingly. Remove
2060         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
2061         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
2062         "target_flags" and "ix86_isa_flags_explicit" instead of
2063         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
2064         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
2065         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
2066         to true when either of PTA_POPCNT or PTA_ABM is set in
2067         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
2068         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
2069         processor_alias_table flags entry.  Remove handling of
2070         "target_enable" and "target_disable" fields of processor_target_table.
2071         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
2072         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
2073         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
2074         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
2075         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
2076         "target_flags".
2077         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
2078
2079 2007-05-29  David Daney  <ddaney@avtrex.com>
2080
2081         PR gcc/31975
2082         * config/mips/mips.c (mips_output_mi_thunk): Emit
2083         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
2084
2085 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
2086         * config/i386/i386.c (ix86_function_regparm): Added checking of
2087         ix86_force_align_arg_pointer to determine the number of
2088         register parameters.
2089
2090 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
2091
2092         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
2093         (SET_DR_MISALIGNMENT): New.
2094         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
2095         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
2096         Use SET_DR_MISALIGNMENT.
2097         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
2098         pointer.
2099         * tree-data-ref.c (create_data_ref, compute_all_dependences,
2100         find_loop_nest): Export.
2101         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
2102         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
2103         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
2104         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
2105         New macros.
2106         (struct mem_ref): Add field reuse_distance.
2107         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
2108         Initialize reuse_distance field.
2109         (issue_prefetch_ref): Select temporality of prefetch according to
2110         reuse_distance.
2111         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
2112         self_reuse_distance, determine_loop_nest_reuse): New functions.
2113         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
2114         (tree_ssa_prefetch_arrays): Dump L2 cache size.
2115         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
2116         dependency.
2117
2118 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
2119
2120         * tree-ssa-alias.c: Add aliasing overview.
2121
2122 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
2123             Danny Smith  <dannysmith@users.sourceforge.net>
2124
2125         PR target/29498
2126         * config/i386/t-crtfm: Compile crtfastmath.o with
2127         -minline-all-stringops.
2128         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
2129         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
2130
2131 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2132
2133         * doc/md.texi: Document constraints on HP PA-RISC.
2134
2135         * pa/constraints.md: New file.
2136         * pa.md: Include constraints.md.
2137         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
2138         (integer_store_memory_operand, ldil_cint_p): New functions.
2139         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
2140         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2141         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
2142         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
2143         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
2144
2145 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
2146
2147         PR c/31339
2148         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2149         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2150         case POSTDECREMENT_EXPR>): Return the error_mark_node
2151         if either the real or imaginary parts would an
2152         error_mark_node.
2153
2154 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
2155
2156         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
2157         name when we remove it from a call.
2158
2159 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
2160
2161         * targhooks.c (default_narrow_bitfield): Remove.
2162         * targhooks.h: Remove the prototype for
2163         default_narrow_bitfield.
2164
2165         * langhooks-def.h: Remove the prototype for
2166         hook_get_alias_set_0.
2167         * langhooks.c (hook_get_alias_set_0): Remove.
2168
2169         * global.c (EXECUTE_IF_CONFLICT): Remove.
2170
2171 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2172
2173         PR tree-opt/32100
2174         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
2175         return true when truth_value_p is true and the type
2176         is of signed:1.
2177
2178 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
2179
2180         * doc/install.texi (Prerequisites): We no longer require Autoconf
2181         2.13 for the top-level.
2182
2183 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
2184
2185         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
2186         memory access via x86_expand_vector_move_misalign() only for
2187         TImode values on 32-bit targets.
2188
2189 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
2190
2191         * matrix-reorg.c: New file. Implement matrix flattening and
2192         transposing optimization.
2193         * tree-pass.h: Add matrix reorg pass.
2194         * common.opt: Add fipa-mreorg flag.
2195         * Makefile.in: Add matrix-reorg.c.
2196         * passes.c: Add matrix reorg pass.
2197         * varpool.c (add_new_static_var): New function.
2198         * cgraph.h (add_new_static_var): Declare.
2199
2200 2007-05-27  Eric Christopher  <echristo@apple.com>
2201
2202         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
2203         sp_offset depending on stack size. Save r12 depending
2204         on registers we're saving later.
2205         (rs6000_emit_epilogue): Update sp_offset depending only
2206         on stack size.
2207
2208 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
2209
2210         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
2211         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
2212         * ifcvt.c (if_convert): Ditto.
2213         * tree-ssa-threadupdate.c (thread_block): Ditto.
2214         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
2215         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
2216         verify_loop_closed_ssa): Check number_of_loops instead of
2217         current_loops.
2218         * predict.c (tree_estimate_probability): Ditto.
2219         * tree-if-conv.c (main_tree_if_conversion): Ditto.
2220         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2221         * modulo-sched.c (sms_schedule): Ditto.
2222         * tree-scalar-evolution.c (scev_const_prop): Ditto.
2223         (scev_finalize): Do not do anything if scev analysis was not
2224         initialized.
2225         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
2226         current_loops == NULL.
2227         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
2228         * loop-init.c (loop_optimizer_init): Do not free current_loops when
2229         there are no loops.
2230         (loop_optimizer_finalize): Assert that loops were analyzed.
2231         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
2232         rtl_doloop): Check number_of_loops instead of current_loops.
2233         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
2234         current_loops == NULL.
2235         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
2236         gate_tree_vectorize tree_linear_transform, check_data_deps,
2237         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
2238         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
2239         Check number_of_loops instead of current_loops.
2240         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
2241         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
2242         free loops if available.
2243         (execute_pre): Do not pass do_fre to fini_pre.
2244
2245 2007-05-27  Tobias Burnus  <burnus@net-b.de>
2246
2247         PR middle-end/32083
2248         * real.c (mpfr_from_real): Fix sign of -Inf.
2249
2250 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2251
2252         * tree-vect-transform.c (vectorizable_conversion): Initialize
2253         tree_code variables to ERROR_MARK.
2254         (vectorizable_type_demotion): Likewise.
2255         (vectorizable_type_promotion): Likewise.
2256
2257 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2258
2259         PR target/32065
2260         * config/i386/i386.md (movti): Handle push operands via
2261         ix86_expand_push().
2262
2263 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2264
2265         * basic-block.h: Remove the prototype for merge_seq_blocks.
2266         * cfgcleanup.c (merge_seq_blocks): Remove.
2267
2268         * tree-flow.h: Remove the prototype for is_aliased_with.
2269         * tree-ssa-alias.c (is_aliased_with): Remove.
2270
2271 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
2272
2273         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
2274
2275         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
2276
2277         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
2278         ix86_expand_sse4_unpack if SSE4.1 is enabled.
2279         (vec_unpacks_hi_v16qi): Likewise.
2280         (vec_unpacku_lo_v16qi): Likewise.
2281         (vec_unpacks_lo_v16qi): Likewise.
2282         (vec_unpacku_hi_v8hi): Likewise.
2283         (vec_unpacks_hi_v8hi): Likewise.
2284         (vec_unpacku_lo_v8hi): Likewise.
2285         (vec_unpacks_lo_v8hi): Likewise.
2286         (vec_unpacku_hi_v4si): Likewise.
2287         (vec_unpacks_hi_v4si): Likewise.
2288         (vec_unpacku_lo_v4si): Likewise.
2289         (vec_unpacks_lo_v4si): Likewise.
2290
2291 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2292
2293         * c-typeck.c, config/arm/arm.c, config/darwin.c,
2294         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
2295         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
2296         follow spelling conventions in various
2297         warning/error/diagnostic messages.
2298
2299         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
2300         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
2301         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
2302         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
2303         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
2304         * doc/tm.texi: Follow spelling conventions.
2305
2306 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2307
2308         PR tree-opt/32090
2309         * tree-ssa-forwprop.c
2310         (forward_propagate_addr_into_variable_array_index): Remove
2311         the lhs argument.  Use the type of def_rhs instead of lhs.
2312         (forward_propagate_addr_expr_1): Update use of
2313         forward_propagate_addr_into_variable_array_index.
2314
2315 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
2316             Nigel Stephens  <nigel@mips.com>
2317
2318         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
2319         function attributes, "far" being an alias for "long_call".
2320         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
2321         (mips_near_type_p, mips_far_type_p): New.
2322         (mips_comp_type_attributes): New function to check that attributes
2323         attached to a function type are compatible.
2324         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
2325         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
2326         to the target function of the thunk.
2327         (mips_encode_section_info): Check for "near" and "far" function
2328         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
2329
2330         * config/mips/predicates.md (const_call_insn_operand): Test only
2331         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
2332
2333         * doc/extend.texi (Function Attributes): Document MIPS "near" and
2334         "far" attributes.
2335
2336         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
2337         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
2338         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
2339         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
2340
2341 2007-05-25  Eric Christopher  <echristo@apple.com>
2342
2343         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
2344         to x86-darwin configurations.
2345         * config/i386/t-darwin: Add softfp support.
2346         * config/i386/t-darwin64: Ditto.
2347         * config/i386/sfp-machine.h: If mach then don't use
2348         aliasing, emit a stub to call.
2349
2350 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
2351
2352         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
2353         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
2354         tree-predcom.c, tree-ssa-alias-warnings.c,
2355         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
2356         comment typos.  Follow spelling conventions.
2357         * doc/cpp.texi, doc/invoke.texi: Fix typos.
2358
2359 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2360
2361         PR target/32065
2362         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
2363         constants into memory.  Expand unaligned memory references for
2364         SSE modes via x86_expand_vector_move_misalign() function.
2365
2366 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
2367
2368         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
2369         "memory" attribute for "sseishft" type insn without operands[2].
2370
2371 2007-05-25  Dirk Mueller  <dmueller@suse.de>
2372             Marcus Meissner <meissner@suse.de>
2373
2374         * doc/extend.texi (alloc_size): New attribute.
2375         * c-common.c (handle_alloc_size_attribute): New.
2376         * tree-object-size.c (alloc_object_size): Use alloc_size
2377         attribute, if available.
2378
2379 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2380
2381         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
2382         with MASK_SSE2.
2383         (__builtin_ia32_vec_ext_v2di): Likewise.
2384         (__builtin_ia32_vec_ext_v4si): Likewise.
2385         (__builtin_ia32_vec_ext_v8hi): Likewise.
2386         (__builtin_ia32_vec_ext_v16qi): Likewise.
2387         (__builtin_ia32_vec_set_v8hi): Likewise.
2388
2389 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2390
2391         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
2392
2393 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
2394
2395         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
2396         (arm_is_longcall_p): Rename to...
2397         (arm_is_long_call_p): ...this.  Take a single tree argument and
2398         return a bool.
2399         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
2400         (CUMULATIVE_ARGS): Remove call_cookie.
2401         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
2402         (ENCODED_LONG_CALL_ATTR_P): Delete.
2403         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
2404         LONG_CALL_FLAG_CHAR cases.
2405         (ARM_DECLARE_FUNCTION_SIZE): Delete.
2406         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
2407         ARM_DECLARE_FUNCTION_SIZE.
2408         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
2409         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
2410         (arm_encode_call_attribute, current_file_function_operand): Delete.
2411         (arm_function_in_section_p): New function.
2412         (arm_is_longcall_p): Rename to...
2413         (arm_is_long_call_p): ...this.  Take the target function as a single
2414         argument and return a bool.  Do not rely on call cookies.  Check
2415         whether the target symbol is in the same section as the current
2416         function, not just the same compilation unit.
2417         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
2418         (arm_encode_section_info): Don't encode a call type.
2419         * config/arm/arm.md (call, call_value): Update calls to
2420         arm_is_long(_)call_p.  Simplify logic.
2421         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
2422         Update calls to arm_is_long(_)call_p.
2423
2424 2007-05-25  Richard Guenther  <rguenther@suse.de>
2425
2426         PR tree-optimization/31982
2427         * tree-ssa-forwprop.c
2428         (forward_propagate_addr_into_variable_array_index): Handle arrays
2429         with element size one.
2430
2431 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2432
2433         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
2434         (umulsi3_highpart): Likewise.
2435
2436 2007-05-24  Ian Lance Taylor  <iant@google.com>
2437
2438         PR rtl-optimization/32069
2439         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
2440         is NULL.
2441
2442 2007-05-24  Ollie Wild  <aaw@google.com>
2443
2444         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
2445         description.
2446
2447 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
2448
2449         * postreload-gcse.c (reg_changed_after_insn_p): New function.
2450         (oprs_unchanged_p): Use it to check all registers in a REG.
2451         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
2452         (reg_set_between_after_reload_p): Delete.
2453         (reg_used_between_after_reload_p): Likewise.
2454         (reg_set_or_used_since_bb_start): Likewise.
2455         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
2456         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
2457         Use reg_set_between_p instead of reg_set_between_after_reload_p.
2458         * rtlanal.c (reg_set_p): Check whether REG overlaps
2459         regs_invalidated_by_call, rather than just checking the
2460         membership of REGNO (REG).
2461
2462 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2463
2464         * doc/passes.texi: Document predictive commoning.
2465         * doc/invoke.texi (-fpredictive-commoning): Document.
2466         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
2467         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
2468         adding indices to the generated name.
2469         (schedule_sm): Pass 0 to get_lsm_tmp_name.
2470         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
2471         * tree-pretty-print.c (op_symbol_1): Renamed to ...
2472         (op_symbol_code): ... and exported.
2473         (dump_omp_clause, op_symbol): Use op_symbol_code
2474         instead of op_symbol_1.
2475         * tree-pass.h (pass_predcom): Declare.
2476         * timevar.def (TV_PREDCOM): New timevar.
2477         * tree-ssa-loop.c (run_tree_predictive_commoning,
2478         gate_tree_predictive_commoning, pass_predcom): New.
2479         * tree-data-ref.c (find_data_references_in_loop): Find the
2480         references in dominance order.
2481         (canonicalize_base_object_address): Ensure that the result has
2482         pointer type.
2483         (dr_analyze_innermost): Export.
2484         (create_data_ref): Code to fail for references with invariant
2485         address moved ...
2486         (find_data_references_in_stmt): ... here.
2487         * tree-data-ref.h (dr_analyze_innermost): Declare.
2488         * tree-affine.c: Include tree-gimple.h and hashtab.h.
2489         (aff_combination_find_elt, name_expansion_hash,
2490         name_expansion_eq, tree_to_aff_combination_expand,
2491         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
2492         New functions.
2493         * tree-affine.h (aff_combination_constant_multiple_p,
2494         tree_to_aff_combination_expand): Declare.
2495         * tree-predcom.c: New file.
2496         * common.opt (fpredictive-commoning): New option.
2497         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
2498         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
2499         * Makefile.in (tree-predcom.o): Add.
2500         (tree-affine.o): Add TREE_GIMPLE_H dependency.
2501         * passes.c (init_optimization_passes):  Add dceloop after
2502         copy propagation in loop optimizer.  Add predictive commoning
2503         to loop optimizer passes.
2504
2505 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2506
2507         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
2508         default hook.
2509
2510 2007-05-24  Jan Hubicka  <jh@suse.cz>
2511
2512         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
2513         statistics.
2514         (genheader): Include statistics.h.
2515
2516         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
2517         notes are gone.
2518         * print-rtl.c (flag_dump_unnumbered): Update comments.
2519         (print_rtl): Fix my previous change.
2520         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
2521         specific data.
2522
2523 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2524
2525         PR middle-end/32018
2526         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
2527         set_loop_copy.
2528         (thread_through_all_blocks): Call initialize_original_copy_tables
2529         and free_original_copy_tables.
2530         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
2531         Use set_loop_copy.
2532         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2533         * cfghooks.c (duplicate_block): Use get_loop_copy.
2534         * cfg.c: Include cfgloop.h.
2535         (loop_copy): New hash table.
2536         (initialize_original_copy_tables): Initialize loop_copy table.
2537         (free_original_copy_tables): Free loop_copy table.
2538         (copy_original_table_clear, copy_original_table_set,
2539         set_loop_copy, get_loop_copy): New functions.
2540         (set_bb_original, set_bb_copy): Use copy_original_table_set.
2541         * cfgloop.h (struct loop): Remove copy field.
2542         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
2543         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
2544
2545 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2546
2547         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
2548         -msse/-msse2/-msse3.
2549
2550 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2551
2552         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
2553         __builtin_ia32_vec_set_v2di with MASK_64BIT.
2554
2555 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2556
2557         PR target/27067
2558         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
2559         * targhooks.h (default_mangle_decl_assembler_name): Declare
2560         default hook.
2561         * targhooks.c (default_mangle_decl_assembler_name): Define
2562         default hook.
2563         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
2564         default hook.
2565         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
2566         * langhooks.c (lhd_set_decl_assembler_name): Call
2567         targetm.mangle_decl_assembler_name for names with global scope.
2568
2569         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
2570         default.
2571         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
2572         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
2573         Declare.
2574         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
2575         New. Factored out of i386_pe_encode_section_info.
2576         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
2577         Move check for prior decoration of stdcall
2578         symbols to i386_pe_encode_section_info.
2579         (i386_pe_encode_section_info): Adjust call to
2580         gen_stdcall_or_fastcall_suffix.  Use
2581         i386_pe_maybe_mangle_decl_assembler_name, if needed.
2582         (i386_pe_mangle_decl_assembler_name): New. Wrap
2583         i386_pe_maybe_mangle_decl_assembler_name.
2584
2585 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2586
2587         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
2588         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
2589         * langhooks.c (get_signed_or_unsigned_type): Don't check for
2590         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
2591         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
2592         TYPE_UNSIGNED.
2593
2594 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
2595             Nigel Stephens  <nigel@mips.com>
2596             Richard Sandiford  <richard@codesourcery.com>
2597
2598         Fix up MIPS16 hard float and add support for complex.
2599
2600         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
2601         (TARGET_SOFT_FLOAT_ABI): New.
2602         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
2603         __mips_soft_float to reflect the ABI in use, not whether the
2604         FPU is directly accessible (e.g., in MIPS16 mode).
2605         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
2606         (UNITS_PER_FPVALUE): Likewise.
2607
2608         * config/mips/mips.c (mips_expand_call): Remove redundant
2609         TARGET_MIPS16 check.
2610         (mips_arg_regno): New.
2611         (function_arg_advance): When setting bits in cum->fp_code for
2612         MIPS16, don't subtract 1 from cum->arg_number, since it is now
2613         zero-based.
2614         (function_arg): Use mips_arg_regno.
2615         (mips_return_mode_in_fpr_p): New.
2616         (mips16_call_stub_mode_suffix): New.
2617         (mips16_cfun_returns_in_fpr_p): New.
2618         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
2619         (mips_output_function_prologue): Test mips16_hard_float, not
2620         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
2621         (mips_expand_epilogue): Call MIPS16 helper routines to copy
2622         return value into a floating-point register.
2623         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
2624         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
2625         (mips16_fp_args): Handle MIPS32r2 ISA which supports
2626         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
2627         word of double arguments from or to the high bits of 64-bit
2628         floating point registers.
2629         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
2630         (mips16_fpret_double): New helper function.
2631         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
2632         support for complex modes.  Fill in DECL_RESULT for stubdecl.
2633         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
2634
2635         * config/mips/mips16.S
2636         (RET, ARG1, ARG2): New.
2637         (MERGE_GPRf, MERGE_GPRt): New.
2638         (DELAYt, DELAYf): New.
2639         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
2640         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
2641         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
2642         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
2643         (SFOP): Renamed to...
2644         (OPSF3): This, and macro-ified.  Updated all uses.
2645         (SFOP2): Renamed to...
2646         (OPSF2): This, and macro-ified.  Updated all uses.
2647         (SFCMP): Renamed to...
2648         (CMPSF): This, and macro-ified.  Updated all uses.
2649         (SFREVCMP): Renamed to...
2650         (REVCMPSF): This, and macro-ified.  Updated all uses.
2651         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
2652         (LDDBL1, LDDBL2, RETDBL): Deleted.
2653         (DFOP): Renamed to...
2654         (OPDF3): This, and macro-ified.  Updated all uses.
2655         (DFOP2): Renamed to...
2656         (OPDF2): This, and macro-ified.  Updated all uses.
2657         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
2658         (DFCMP): Renamed to...
2659         (CMPDF): This, and macro-ified.  Updated all uses.
2660         (DFREVCMP): Renamed to...
2661         (REVCMPDF): This, and macro-ified.  Updated all uses.
2662         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
2663         (RET_FUNCTION): New.
2664         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
2665         (__mips16_ret_sc, __mips16_ret_dc): New.
2666         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
2667         STUB_ARGS_6, STUB_ARGS_10): New.
2668         (CALL_STUB_NO_RET): New.
2669         (__mips16_call_stub_1): Macro-ified.
2670         (__mips16_call_stub_5): Macro-ified.
2671         (__mips16_call_stub_2): Macro-ified.
2672         (__mips16_call_stub_6): Macro-ified.
2673         (__mips16_call_stub_9): Macro-ified.
2674         (__mips16_call_stub_10): Macro-ified.
2675         (CALL_STUB_RET): New.
2676         (__mips16_call_stub_sf_0): Macro-ified.
2677         (__mips16_call_stub_sf_1): Macro-ified.
2678         (__mips16_call_stub_sf_5): Macro-ified.
2679         (__mips16_call_stub_sf_2): Macro-ified.
2680         (__mips16_call_stub_sf_6): Macro-ified.
2681         (__mips16_call_stub_sf_9): Macro-ified.
2682         (__mips16_call_stub_sf_10): Macro-ified.
2683         (__mips16_call_stub_df_0): Macro-ified.
2684         (__mips16_call_stub_df_1): Macro-ified.
2685         (__mips16_call_stub_df_5): Macro-ified.
2686         (__mips16_call_stub_df_2): Macro-ified.
2687         (__mips16_call_stub_df_6): Macro-ified.
2688         (__mips16_call_stub_df_9): Macro-ified.
2689         (__mips16_call_stub_df_10): Macro-ified.
2690         (__mips16_call_stub_sc_0): New.
2691         (__mips16_call_stub_sc_1): New.
2692         (__mips16_call_stub_sc_5): New.
2693         (__mips16_call_stub_sc_2): New.
2694         (__mips16_call_stub_sc_6): New.
2695         (__mips16_call_stub_sc_9): New.
2696         (__mips16_call_stub_sc_10): New.
2697         (__mips16_call_stub_dc_0): New.
2698         (__mips16_call_stub_dc_1): New.
2699         (__mips16_call_stub_dc_5): New.
2700         (__mips16_call_stub_dc_2): New.
2701         (__mips16_call_stub_dc_6): New.
2702         (__mips16_call_stub_dc_9): New.
2703         (__mips16_call_stub_dc_10): New.
2704
2705         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
2706         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
2707         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
2708
2709 2007-05-23  Ian Lance Taylor  <iant@google.com>
2710
2711         * doc/invoke.texi (Invoking GCC): Document that the order of the
2712         -l option matters.
2713
2714 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
2715
2716         PR target/30987
2717         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
2718         * config/score/predicate.md (const_pow2, const_npow2): Remove.
2719         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
2720         undef.
2721
2722         PR target/30474
2723         * config/score/score.c (score_print_operand): Make sure that only
2724         lower bits are used.
2725
2726 2007-05-22  Ian Lance Taylor  <iant@google.com>
2727
2728         * tree-vrp.c (avoid_overflow_infinity): New static function,
2729         broken out of set_value_range_to_value.
2730         (set_value_range_to_value): Call avoid_overflow_infinity.
2731         (extract_range_from_assert): Likewise.
2732
2733 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2734
2735         PR middle-end/31095
2736          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
2737         change the type before looking for a COMPOUND_EXPR.
2738
2739 2007-05-22  Ian Lance Taylor  <iant@google.com>
2740
2741         * lower-subreg.c (decompose_multiword_subregs): If we change an
2742         insn, call remove_retval_note on it.
2743
2744 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2745
2746         * regs.h (end_hard_regno): New function.
2747         (END_HARD_REGNO, END_REGNO): New macros.
2748         (add_to_hard_reg_set): New function.
2749         (remove_from_hard_reg_set): Likewise.
2750         (in_hard_reg_set_p): Likewise.
2751         (overlaps_hard_reg_set_p): Likewise.
2752         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
2753         (note_btr_set): Use END_HARD_REGNO.
2754         * caller-save.c (setup_save_areas): Use end_hard_regno.
2755         (mark_set_regs): Use END_HARD_REGNO.
2756         (add_stored_regs): Use end_hard_regno.
2757         (mark_referenced_regs): Use add_to_hard_reg_set.
2758         * combine.c (update_table_tick): Use END_REGNO.
2759         (record_value_for_reg): Likewise.
2760         (record_dead_and_set_regs): Likewise.
2761         (get_last_value_validate): Likewise.
2762         (use_crosses_set_p): Likewise.
2763         (reg_dead_at_p_1): Likewise.
2764         (reg_dead_at_p): Likewise.
2765         (mark_used_regs_combine): Use add_to_hard_reg_set.
2766         (move_deaths): Use END_HARD_REGNO.
2767         (reg_bitfield_target_p): Use end_hard_regno.
2768         (distribute_notes): Use END_HARD_REGNO.
2769         * cse.c (mention_regs): Use END_REGNO.
2770         (insert): Use add_to_hard_reg_set.
2771         (invalidate): Use END_HARD_REGNO.
2772         (invalidate_for_call): Likewise.
2773         (exp_equiv_p): Use END_REGNO.
2774         (cse_insn): Likewise.
2775         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
2776         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
2777         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
2778         * function.c (keep_stack_depressed): Use end_hard_regno.
2779         * global.c (global_alloc): Use end_hard_regno.
2780         (global_conflicts): Use add_to_hard_reg_set instead of
2781         mark_reg_live_nc.
2782         (find_reg): Likewise.
2783         (mark_reg_store): Likewise.
2784         (mark_reg_conflicts): Likewise.
2785         (mark_reg_death): Use remove_from_hard_reg_set.
2786         (mark_reg_live_nc): Delete.
2787         (set_preference): Use end_hard_regno.
2788         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
2789         remove_from_hard_reg_set.
2790         (post_mark_life): Use add_to_hard_reg_set.
2791         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
2792         (reg_becomes_live): Use add_to_hard_reg_set.
2793         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
2794         (peep2_find_free_register): Use add_to_hard_reg_set.
2795         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
2796         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
2797         * regrename.c (note_sets): Use add_to_hard_reg_set.
2798         (clear_dead_regs): Use remove_from_hard_reg_set.
2799         (regrename_optimize): Use add_to_hard_reg_set.
2800         (find_oldest_value_reg): Use in_hard_reg_set_p.
2801         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
2802         (hard_reg_set_here_p): Use end_hard_regno.
2803         (decompose): Likewise.
2804         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
2805         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
2806         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
2807         (mark_home_live): Use end_hard_regno.
2808         (spill_hard_reg): Likewise.
2809         (clear_reload_reg_in_use): Likewise.
2810         * reorg.c (delete_prior_computation): Use END_REGNO.
2811         * resource.c (update_live_status): Use END_HARD_REGNO.
2812         (mark_referenced_resources): Use add_to_hard_reg_set.
2813         (mark_set_resources): Likewise.
2814         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
2815         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
2816         (reg_overlap_mentioned_p): Likewise.
2817         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
2818         (covers_regno_no_parallel_p): Use END_REGNO.
2819         (find_regno_note): Likewise.
2820         (find_reg_fusage): Use END_HARD_REGNO.
2821         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
2822         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
2823
2824 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2825
2826         * mode-switching.c (reg_dies): Change type of second argument to
2827         "HARD_REG_SET *".
2828         (optimize_mode_switching): Update accordingly.
2829
2830 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
2831
2832         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
2833         in favor of...
2834         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
2835         (hard_reg_set_empty_p): ...these new functions.
2836         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
2837         GO_IF_HARD_REG_SUBSET.
2838         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
2839         instead of GO_IF_HARD_REG_EQUAL.
2840         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
2841         instead of GO_IF_HARD_REG_EQUAL.
2842         * global.c (find_reg): Use hard_reg_set_empty_p instead of
2843         GO_IF_HARD_REG_SUBSET.
2844         (modify_reg_pav): Use hard_reg_set_empty_p instead of
2845         GO_IF_HARD_REG_EQUAL.
2846         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
2847         of GO_IF_HARD_REG_SUBSET.
2848         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
2849         instead of GO_IF_HARD_REG_EQUAL.
2850         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
2851         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
2852         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
2853         of GO_IF_HARD_REG_SUBSET,
2854         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
2855         GO_IF_HARD_REG_SUBSET.
2856         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
2857         instead of GO_IF_HARD_REG_EQUAL.
2858         * config/sh/sh.c (push_regs, calc_live_regs): Use
2859         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
2860         (hard_regs_intersect_p): Delete.
2861
2862 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
2863
2864         * doc/sourcebuild.texi (Test Directives) Add dg-message.
2865
2866 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
2867             Richard Henderson  <rth@redhat.com>
2868
2869         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
2870         extra_headers.
2871         (x86_64-*-*): Likewise.
2872
2873         * i386/i386-modes.def (V2QI): New.
2874
2875         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
2876         SSE4A.
2877         (override_options): Support SSE4.1.
2878         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
2879         (IX86_BUILTIN_BLENDPS): Likewise.
2880         (IX86_BUILTIN_BLENDVPD): Likewise.
2881         (IX86_BUILTIN_BLENDVPS): Likewise.
2882         (IX86_BUILTIN_PBLENDVB128): Likewise.
2883         (IX86_BUILTIN_PBLENDW128): Likewise.
2884         (IX86_BUILTIN_DPPD): Likewise.
2885         (IX86_BUILTIN_DPPS): Likewise.
2886         (IX86_BUILTIN_INSERTPS128): Likewise.
2887         (IX86_BUILTIN_MOVNTDQA): Likewise.
2888         (IX86_BUILTIN_MPSADBW128): Likewise.
2889         (IX86_BUILTIN_PACKUSDW128): Likewise.
2890         (IX86_BUILTIN_PCMPEQQ): Likewise.
2891         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
2892         (IX86_BUILTIN_PMAXSB128): Likewise.
2893         (IX86_BUILTIN_PMAXSD128): Likewise.
2894         (IX86_BUILTIN_PMAXUD128): Likewise.
2895         (IX86_BUILTIN_PMAXUW128): Likewise.
2896         (IX86_BUILTIN_PMINSB128): Likewise.
2897         (IX86_BUILTIN_PMINSD128): Likewise.
2898         (IX86_BUILTIN_PMINUD128): Likewise.
2899         (IX86_BUILTIN_PMINUW128): Likewise.
2900         (IX86_BUILTIN_PMOVSXBW128): Likewise.
2901         (IX86_BUILTIN_PMOVSXBD128): Likewise.
2902         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
2903         (IX86_BUILTIN_PMOVSXWD128): Likewise.
2904         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
2905         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
2906         (IX86_BUILTIN_PMOVZXBW128): Likewise.
2907         (IX86_BUILTIN_PMOVZXBD128): Likewise.
2908         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
2909         (IX86_BUILTIN_PMOVZXWD128): Likewise.
2910         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
2911         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
2912         (IX86_BUILTIN_PMULDQ128): Likewise.
2913         (IX86_BUILTIN_PMULLD128): Likewise.
2914         (IX86_BUILTIN_ROUNDPD): Likewise.
2915         (IX86_BUILTIN_ROUNDPS): Likewise.
2916         (IX86_BUILTIN_ROUNDSD): Likewise.
2917         (IX86_BUILTIN_ROUNDSS): Likewise.
2918         (IX86_BUILTIN_PTESTZ): Likewise.
2919         (IX86_BUILTIN_PTESTC): Likewise.
2920         (IX86_BUILTIN_PTESTNZC): Likewise.
2921         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
2922         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
2923         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
2924         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
2925         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
2926         (bdesc_ptest): New.
2927         (bdesc_sse_3arg): Likewise.
2928         (bdesc_2arg): Likewise.
2929         (bdesc_1arg): Likewise.
2930         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
2931         with 3 args.
2932         (ix86_expand_sse_4_operands_builtin): New.
2933         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
2934         smaller than 8 bits as the 2nd arg.
2935         (ix86_expand_sse_ptest): New.
2936         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
2937         (ix86_expand_vector_set): Support SSE4.1.
2938         (ix86_expand_vector_extract): Likewise.
2939
2940         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2941         __SSE4_1__ for -msse4.1.
2942
2943         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
2944         (UNSPEC_INSERTPS): Likewise.
2945         (UNSPEC_DP): Likewise.
2946         (UNSPEC_MOVNTDQA): Likewise.
2947         (UNSPEC_MPSADBW): Likewise.
2948         (UNSPEC_PHMINPOSUW): Likewise.
2949         (UNSPEC_PTEST): Likewise.
2950         (UNSPEC_ROUNDP): Likewise.
2951         (UNSPEC_ROUNDS): Likewise.
2952
2953         * config/i386/i386.opt (msse4.1): New for SSE4.1.
2954
2955         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
2956         (const_pow2_1_to_32768_operand): Likewise.
2957
2958         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
2959         file.
2960
2961         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
2962         SSE4.1.
2963         (sse4_1_insertps): Likewise.
2964         (*sse4_1_extractps): Likewise.
2965         (sse4_1_ptest): Likewise.
2966         (sse4_1_mulv2siv2di3): Likewise.
2967         (*sse4_1_mulv4si3): Likewise.
2968         (*sse4_1_smax<mode>3): Likewise.
2969         (*sse4_1_umax<mode>3): Likewise.
2970         (*sse4_1_smin<mode>3): Likewise.
2971         (*sse4_1_umin<mode>3): Likewise.
2972         (sse4_1_eqv2di3): Likewise.
2973         (*sse4_1_pinsrb): Likewise.
2974         (*sse4_1_pinsrd): Likewise.
2975         (*sse4_1_pinsrq): Likewise.
2976         (*sse4_1_pextrb): Likewise.
2977         (*sse4_1_pextrb_memory): Likewise.
2978         (*sse4_1_pextrw_memory): Likewise.
2979         (*sse4_1_pextrq): Likewise.
2980         (sse4_1_blendpd): Likewise.
2981         (sse4_1_blendps): Likewise.
2982         (sse4_1_blendvpd): Likewise.
2983         (sse4_1_blendvps): Likewise.
2984         (sse4_1_dppd): Likewise.
2985         (sse4_1_dpps): Likewise.
2986         (sse4_1_movntdqa): Likewise.
2987         (sse4_1_mpsadbw): Likewise.
2988         (sse4_1_packusdw): Likewise.
2989         (sse4_1_pblendvb): Likewise.
2990         (sse4_1_pblendw): Likewise.
2991         (sse4_1_phminposuw): Likewise.
2992         (sse4_1_extendv8qiv8hi2): Likewise.
2993         (*sse4_1_extendv8qiv8hi2): Likewise.
2994         (sse4_1_extendv4qiv4si2): Likewise.
2995         (*sse4_1_extendv4qiv4si2): Likewise.
2996         (sse4_1_extendv2qiv2di2): Likewise.
2997         (*sse4_1_extendv2qiv2di2): Likewise.
2998         (sse4_1_extendv4hiv4si2): Likewise.
2999         (*sse4_1_extendv4hiv4si2): Likewise.
3000         (sse4_1_extendv2hiv2di2): Likewise.
3001         (*sse4_1_extendv2hiv2di2): Likewise.
3002         (sse4_1_extendv2siv2di2): Likewise.
3003         (*sse4_1_extendv2siv2di2): Likewise.
3004         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3005         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3006         (sse4_1_zero_extendv4qiv4si2): Likewise.
3007         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3008         (sse4_1_zero_extendv2qiv2di2): Likewise.
3009         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3010         (sse4_1_zero_extendv4hiv4si2): Likewise.
3011         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3012         (sse4_1_zero_extendv2hiv2di2): Likewise.
3013         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3014         (sse4_1_zero_extendv2siv2di2): Likewise.
3015         (*sse4_1_zero_extendv2siv2di2): Likewise.
3016         (sse4_1_roundpd): Likewise.
3017         (sse4_1_roundps): Likewise.
3018         (sse4_1_roundsd): Likewise.
3019         (sse4_1_roundss): Likewise.
3020         (mulv4si3): Don't expand for SSE4.1.
3021         (smax<mode>3): Likewise.
3022         (umaxv4si3): Likewise.
3023         (uminv16qi3): Likewise.
3024         (umin<mode>3): Likewise.
3025         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
3026
3027         * doc/extend.texi: Document SSE4.1 built-in functions.
3028
3029         * doc/invoke.texi: Document -msse4.1.
3030
3031 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
3032
3033         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
3034         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
3035         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
3036         (ASM_SPEC): Add asm_pcrel_spec.
3037         (EXTRA_SPECS): Add asm_pcrel_spec.
3038
3039 2007-05-21  David Daney  <ddaney@avtrex.com>
3040
3041         * doc/install.texi (Building a cross compiler): Add requirements
3042         for Java cross compiler.
3043
3044 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3045
3046         PR middle-end/31995
3047         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
3048         Add loopno argument.  Use evolution_function_is_invariant_rec_p
3049         instead of evolution_function_is_constant_p.
3050         Update calls to evolution_function_is_affine_multivariate_p.
3051         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
3052         Add loopno argument.
3053         * tree-scalar-evolution.c (gather_chrec_stats): Call
3054         evolution_function_is_affine_multivariate_p with a loop
3055         number of 0.
3056         * tree-data-ref.c (analyze_miv_subscript): Likewise.
3057         (analyze_overlapping_iterations): Likewise.
3058         (access_functions_are_affine_or_constant_p): Likewise.
3059         (build_classic_dist_vector_1): If the access functions
3060         are equal, don't do anything.
3061
3062 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
3063             Paolo Carlini  <pcarlini@suse.de>
3064             Uros Bizjak  <ubizjak@gmail.com>
3065
3066         * c-cppbuiltin.c (c_cpp_builtins): Define
3067         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
3068         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
3069         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
3070         * doc/cpp.texi ([Standard Predefined Macros]): Document.
3071
3072 2007-05-21  Mike Stump  <mrs@apple.com>
3073
3074         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
3075         handling as well.
3076         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3077
3078 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
3079
3080         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
3081         implementation if __OPTIMIZE__ is not defined.
3082         (_mm_alignr_pi8): Ditto.
3083         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3084         (_mm_inserti_si64): Ditto.
3085         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3086         (_mm_slli_epi16): Ditto.
3087         (_mm_slli_epi32): Ditto.
3088         (_mm_slli_epi64): Ditto.
3089         (_mm_srai_epi16): Ditto.
3090         (_mm_srai_epi32): Ditto.
3091         (_mm_srli_si128): Ditto.
3092         (_mm_slli_si128): Ditto.
3093         (_mm_srli_epi16): Ditto.
3094         (_mm_srli_epi32): Ditto.
3095         (_mm_srli_epi64): Ditto.
3096         (_mm_extract_epi16): Ditto.
3097         (_mm_insert_epi16): Ditto.
3098         (_mm_shufflehi_epi16): Ditto.
3099         (_mm_shufflelo_epi16): Ditto.
3100         (_mm_shuffle_epi32): Ditto.
3101         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
3102         (_m_pextrw): Ditto.
3103         (_mm_insert_pi16): Ditto.
3104         (_m_pinsrw): Ditto.
3105         (_mm_shuffle_pi16): Ditto.
3106         (_m_pshufw): Ditto.
3107         (_mm_shufle_ps): Ditto.
3108         (_mm_prefetch): Ditto.
3109
3110 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
3111
3112         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
3113         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
3114         * real.c (encode_i370_single, decode_i370_single,
3115         encode_i370_double, decode_i370_double): Functions removed.
3116         (i370_single_format, i370_double_format): Initializations removed.
3117         (real_maxval, round_for_format, exact_real_truncate, significand_size):
3118         Consider the log2_b field to always be one.
3119         (ieee_single_format, mips_single_format, coldfire_single_format,
3120         ieee_double_format, mips_double_format, coldfire_double_format,
3121         ieee_extended_motorola_format, ieee_extended_intel_96_format,
3122         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
3123         ibm_extended_format, mips_extended_format, ieee_quad_format,
3124         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
3125         decimal_single_format, decimal_double_format, decimal_quad_format,
3126         c4x_single_format, c4x_extended_format, real_internal_format): Remove
3127         initialization of log2_b.
3128         * real.h (i370_single_format, i370_double_format): Declarations removed.
3129         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
3130         field to always be one.
3131
3132 2007-05-21  Andreas Schwab  <schwab@suse.de>
3133
3134         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
3135         NOTE_INSN_BASIC_BLOCK_P.
3136         (process_for_unwind_directive): Likewise.
3137
3138 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
3139
3140         * builtins.c (expand_builtin_setjmp_setup): Update comment.
3141         * function.h (struct function): Move va_list_gpr_size,
3142         va_list_fpr_size, function_frequency to front of bitfields.  Add
3143         calls_unwind_init.
3144         (current_function_calls_unwind_init): New.
3145         * except.c (expand_builtin_unwind_init): Set
3146         current_function_calls_unwind_init not
3147         current_function_has_nonlocal_label.
3148         * reload1.c (has_nonexceptional_receiver): New.
3149         (reload): Use it and current_function_calls_unwind_init to
3150         determine whether call-saved regs must be saved.
3151
3152 2007-05-20  Jan Hubicka  <jh@suse.cz>
3153
3154         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
3155         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3156         * ddg.c (create_ddg): LIkewise.
3157         * final.c (final): Remove hunk moving line numbernotes around since
3158         they are no longer present at this stage.
3159         (final_scan_insn): Use NOTE_KIND instead of
3160         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3161         (output_asm_label): Likewise.
3162         * reorg.c (dbr_schedule): Likewise.
3163         * haifa-sched.c (unlink_other_notes): Likewise.
3164         * mode-switching.c (optimize_mode_switching): Likewise.
3165         * graph.c (start_bb): Likewise.
3166         * rtl.def (NOTE): Update description.
3167         * jump.c (squeeze_notes): Delete.
3168         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
3169         NOTE_INSN_BASIC_BLOCK_P when possible.
3170         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
3171         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
3172         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3173         (dwarf2out_var_location): Likewise.
3174         * cfgbuild.c (make_edges): Likewise.
3175         (find_basic_blocks_1): Likewise.
3176         * function.c (reorder_blocks_1): Likewise.
3177         (epilogue_done): Likewise.
3178         (reposition_prologue_and_epilogue_notes): Likewise.
3179         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
3180         notes.
3181         (print_rtl): Likewise.
3182         (print_rtl_single): Likewise.
3183         * gcse.c (insert_insn_start_bb): Likewise.
3184         * alias.c (init_alias_analysis): Likewise.
3185         * calls.c (fixup_tail_calls): Likewise.
3186         * except.c (sjlj_emit_function_enter): Likewise.
3187         * emit-rtl.c (add_insn_after): Likeiwse.
3188         (emit_label_before): Likewise.
3189         (emit_label_after): Likewise.
3190         (emit_note_before, emit_note_after, emit_note): Update
3191         parameter to be enum insn_note; do not deal with source
3192         files.
3193         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
3194         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
3195         when possible.
3196         (merge_blocks_move_successor_nojumps): Simplify now when
3197         we don't have BLOCK notes.
3198         (try_optimize_cfg): Likewise.
3199         * cfglayout.c (skip_insns_after_block): Likewise.
3200         (record_effective_endpoints): Likewise.
3201         (duplicate_insn_chain): Likewise.
3202         * varasm.c (output_constant_pool_1): Likewise.
3203         * sched-deps.c (sched_analyze): Likewise.
3204         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
3205         Exterminate.
3206         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
3207         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
3208         (SET_INSN_DELETED): Simplify.
3209         (NOTE_LINE_NUMBER): Exterminate.
3210         (NOTE_LINE_KIND): New.
3211         (NOTE_INSN_BASIC_BLOCK_P): Update.
3212         (enum insn_note): Simplify.
3213         (GET_NOTE_INSN_NAME) Simplify.
3214         (emit_note_before, emit_note_after, emit_note): Update prototype.
3215         (squeeze_notes): Remove.
3216         * sched-int.h (NOTE_NOT_BB_P): Update.
3217         * resource.c (mark_target_live_regs): Update.
3218         * sched-rgn.c (debug_dependencies): Update.
3219         * sched-vis.c (print_insn): Update.
3220         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
3221         * config/i386/i386.c (ix86_output_function_epilogue): Update.
3222         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
3223         (TARGET_ADJUST_UNROLL_MAX): Likewise.
3224         (split_branches): Update.
3225         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
3226         4.0.0.
3227         (sh_adjust_unroll_max): Exterminate.
3228         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
3229         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
3230         (m68hc11_reorg): Likewise.
3231         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
3232         (emit_predicate_relation_info): Update.
3233         (process_for_unwind_directive): Update.
3234         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
3235         (output_call): Update.
3236         * config/pa/pa.c (output_lbranch): Update.
3237         (output_millicode_call): Update.
3238         (output_call): Update.
3239         (pa_combine_instructions): Update.
3240         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
3241         * config/bfin/bfin.c (gen_one_bundle): Update.
3242         * cfgrtl.c (can_delete_note_p): Update.
3243         (delete_insn): Update.
3244         (rtl_merge_blocks): Update.
3245         (commit_one_edge_insertion): Update.
3246         (rtl_verify_flow_info): Update.
3247         * stmt.c (expand_case): Do not call squeeze_notes.
3248
3249 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3250
3251         PR middle-end/7651
3252         PR c++/11856
3253         PR c/12963
3254         PR c/23587
3255         PR other/29694
3256         * c.opt (Wtype-limits): New.
3257         * doc/invoke.texi (Wtype-limits): Document it.
3258         (Wextra): Enabled by -Wextra.
3259         * c-opts.c (c_common_post_options): Enabled by -Wextra.
3260         * c-common.c (shorten_compare): Warn with Wtype-limits.
3261
3262 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3263
3264         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
3265         inlined function, not as a macro.
3266         (_mm_alignr_pi8): Ditto.
3267         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3268         (_mm_inserti_si64): Ditto.
3269         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3270         (_mm_extract_epi16): Ditto.
3271         (_mm_insert_epi16): Ditto.
3272         (_mm_shufflehi_epi16): Ditto.
3273         (_mm_shufflelo_epi16): Ditto.
3274         (_mm_shuffle_epi32): Ditto.
3275         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
3276         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
3277         all functions.
3278         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
3279         float constant.
3280         (_m_to_float): Use C89 compatible assignment.
3281
3282 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
3283
3284         PR target/32007
3285         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
3286
3287 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3288
3289         PR middle-end/7651
3290         * doc/invoke.texi (Wreturn-type): Complete description.
3291         (Wextra): Delete item about return-type warning.
3292         * c-decl.c: Delete redundant Wextra warning.
3293
3294 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3295
3296         PR target/31585
3297         * config/i386/pmmintrin.h: Do not include xmmintrin.h
3298         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
3299         inlined function, not as a macro.
3300         (_mm_prefetch): Ditto.
3301         (_m_pextrw): Ditto.
3302         (_mm_insert_pi16): Ditto.
3303         (_m_pinsrw): Ditto.
3304         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
3305         (_m_pshufw): Ditto. Add const to __N argument.
3306         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
3307         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
3308         (_mm_slli_epi32): Ditto.
3309         (_mm_srli_si128): Implement as always inlined function, not as a macro.
3310         Add __inline to function declaration.
3311         (_mm_slli_si128): Ditto.
3312
3313 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
3314
3315         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
3316         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
3317         New constants.
3318         (struct fenv): New structure.
3319         (FP_HANDLE_EXCEPTIONS): New define.
3320         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
3321         (_FP_DECL_EXP): New define.
3322         (FP_INIT_ROUNDMODE): New define.
3323         (FP_ROUNDMODE): New define.
3324
3325 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3326
3327         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
3328         (Wconversion): Update description.
3329         (Wconversion-sign): New.
3330         * c.opt (Wconversion-sign): New.
3331         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
3332         means disabled for C++. Otherwise, take the status of Wconversion.
3333         * c-common.c (conversion_warning): Warn with either Wconversion or
3334         Wconversion-sign.
3335         (warnings_for_convert_and_check): Conditions are already checked by
3336         conversion_warning.
3337         (convert_and_check): Don't check warnings if the conversion failed.
3338
3339 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
3340            Anatoly Sokolov <aesok@dol.ru>
3341
3342         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
3343         avr_epilogue_uses) : Add declaration.
3344         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
3345         * config/avr/constraints.md (R): New constraint.
3346         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
3347         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
3348         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
3349         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
3350         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
3351         call_prologue_saves, epilogue_restores, return_from_epilogue,
3352         return_from_main_epilogue, return_from_interrupt_epilogue,
3353         return_from_naked_epilogue, prologue, epilogue): New patterns.
3354         (jump): Handle symbol reference.
3355         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
3356         avr_output_function_prologue, avr_output_function_epilogue): Remove
3357         functions.
3358         (avr_init_machine_status, expand_prologue, expand_epilogue,
3359         avr_asm_function_end_prologue, avr_epilogue_uses,
3360         avr_asm_function_begin_epilogue): New functions.
3361         (prologue_size, epilogue_size, jump_tables_size): Remove global
3362         variables.
3363         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
3364         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
3365         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
3366         (avr_override_options): Initialise init_machine_status.
3367         (output_movhi): Handle all stack pointer loads.
3368         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
3369         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
3370         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
3371         (EPILOGUE_USES) Redefine.
3372         (machine_function) Declare.
3373
3374 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
3375
3376         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
3377         Use a single return statement.
3378
3379 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3380
3381         PR middle-end/30250
3382         * builtins.c (do_mpfr_lgamma_r): New.
3383         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
3384         * tree.h (CASE_FLT_FN_REENT): New.
3385
3386 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
3387
3388         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
3389         (output_die): Use 'unsigned long' with %x.
3390         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
3391         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
3392         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
3393
3394         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
3395
3396 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
3397
3398         PR target/31989
3399         PR target/31681
3400         PR target/31666
3401         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
3402         true if function has no argument.
3403
3404 2007-05-18  DJ Delorie  <dj@redhat.com>
3405
3406         * config/mips/mips.c (mips_offset_within_alignment_p): New.
3407         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
3408
3409 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
3410
3411         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
3412         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
3413         count_trailing_zeros.
3414         (__i386__): Implement count_leading_zeros using __builtin_clz().
3415         Implement count_trailing_zeros usign __builtin_ctz().
3416
3417 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
3418
3419         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
3420
3421 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
3422
3423         PR middle-end/31344
3424         * expr.c (emit_move_change_mode): Change mode of push operands here.
3425
3426 2007-05-17  Ian Lance Taylor  <iant@google.com>
3427
3428         PR tree-optimization/31953
3429         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
3430         Change all callers.
3431         (set_value_range_to_null): Call set_value_range_to_value.
3432         (extract_range_from_comparison): Likewise.
3433
3434 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3435
3436         * toplev.c (print_version): Output GMP/MPFR version info.
3437
3438         * builtins.c (CASE_MATHFN_REENT): New macro.
3439         (mathfn_built_in): Use it.
3440         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
3441         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
3442         BUILT_IN_LGAMMAL_R): New.
3443         * doc/extend.texi: Document new builtins.
3444
3445         PR middle-end/31796
3446         * builtins.c (do_mpfr_remquo): New.
3447         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
3448         (fold_builtin_3): Handle BUILT_IN_REMQUO.
3449
3450         PR middle-end/30251
3451         * builtins.c (fold_builtin_1): Handle y0, y1.
3452         (fold_builtin_2): Handle yn.
3453
3454         PR middle-end/30251
3455         * builtins.c (do_mpfr_bessel_n): New.
3456         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
3457         (fold_builtin_2): Handle BUILT_IN_JN.
3458
3459 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
3460
3461         PR target/31965
3462         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
3463         TYPE_PRECISION (intmax_type_node).
3464
3465 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
3466
3467         PR target/31850
3468         * reload.c (subst_reloads): Remove checking.
3469
3470 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
3471
3472         PR rtl-optimization/31691
3473         * combine.c (simplify_set): Build a new src pattern instead of
3474         substituting its operands in the COMPARE case.
3475
3476 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
3477
3478         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
3479         (execute_vrp): Preserve loops through jump threading.
3480         * tree-ssa-threadupdate.c (thread_single_edge,
3481         dbds_continue_enumeration_p, determine_bb_domination_status,
3482         thread_through_loop_header): New functions.
3483         (create_edge_and_update_destination_phis,
3484         create_edge_and_update_destination_phis): Set loops for the new blocks.
3485         (prune_undesirable_thread_requests): Removed.
3486         (redirect_edges): Do not pretend that redirect_edge_and_branch can
3487         create new blocks.
3488         (thread_block): Do not call prune_undesirable_thread_requests.
3489         Update loops.
3490         (mark_threaded_blocks): Select edges to thread here.
3491         (thread_through_all_blocks): Take may_peel_loop_headers argument.
3492         Thread edges through loop headers independently.
3493         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
3494         * tree-pass.h (TODO_mark_first_instance): New.
3495         (first_pass_instance): Declare.
3496         * cfghooks.c (duplicate_block): Put the block to the original loop
3497         if copy is not specified.
3498         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
3499         jump threading.  Pass may_peel_loop_headers to
3500         thread_through_all_blocks according to first_pass_instance.
3501         * cfgloop.h (create_preheader): Declare.
3502         * tree-flow.h (thread_through_all_blocks): Declaration changed.
3503         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
3504         * passes.c (first_pass_instance): New variable.
3505         (next_pass_1): Set TODO_mark_first_instance.
3506         (execute_todo): Set first_pass_instance.
3507
3508 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
3509
3510         PR tree-optimization/24659
3511         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
3512         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
3513         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
3514         OTI_vec_pack_ufix_trunc.
3515         (vec_unpacks_float_hi_optab): Define new macro.
3516         (vec_unpacks_float_lo_optab): Ditto.
3517         (vec_unpacku_float_hi_optab): Ditto.
3518         (vec_unpacku_float_lo_optab): Ditto.
3519         (vec_pack_sfix_trunc_optab): Ditto.
3520         (vec_pack_ufix_trunc_optab): Ditto.
3521         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
3522         and vec_pack_[s|u]fix_trunc_optab using
3523         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
3524         * tree-vectorizer.c (supportable_widening_operation): Handle
3525         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
3526         (supportable_narrowing_operation): New function.
3527         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
3528         * tree-vect-transform.c (vectorizable_conversion): Handle
3529         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
3530         (vect_gen_widened_results_half): Move before vectorizable_conversion.
3531         (vectorizable_type_demotion): Call supportable_narrowing_operation()
3532         to check for target support.
3533         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
3534         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
3535         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
3536         for VEC_PACK_FIX_TRUNC_EXPR.
3537         (expand_binop): Special case mode of the result for
3538         vec_pack_[u|s]fix_trunc_optab.
3539         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
3540         vec_pack_[u|s]fix_trunc_optab.
3541
3542         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
3543         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
3544         * tree-pretty-print.c (dump_generic_node): Handle
3545         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
3546         VEC_PACK_FIX_TRUNC_EXPR.
3547         (op_prio): Ditto.
3548         * expr.c (expand_expr_real_1): Ditto.
3549         * tree-inline.c (estimate_num_insns_1): Ditto.
3550         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3551
3552         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
3553         (vec_unpacks_float_lo_v8hi): Ditto.
3554         (vec_unpacku_float_hi_v8hi): Ditto.
3555         (vec_unpacku_float_lo_v8hi): Ditto.
3556         (vec_unpacks_float_hi_v4si): Ditto.
3557         (vec_unpacks_float_lo_v4si): Ditto.
3558         (vec_pack_sfix_trunc_v2df): Ditto.
3559
3560         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
3561         Document.
3562         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
3563         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
3564         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
3565         [vec_pack_ufix_trunc]: Ditto.
3566         [vec_unpacks_float_hi]: Ditto.
3567         [vec_unpacks_float_lo]: Ditto.
3568         [vec_unpacku_float_hi]: Ditto.
3569         [vec_unpacku_float_lo]: Ditto.
3570
3571 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
3572
3573         * soft-fp/README: Update for new files.
3574         * soft-fp/floattisf.c: New file.
3575         * soft-fp/floattidf.c: New file.
3576         * soft-fp/floattitf.c: New file.
3577         * soft-fp/floatuntisf.c: New file.
3578         * soft-fp/floatuntidf.c: New file.
3579         * soft-fp/floatuntitf.c: New file.
3580         * soft-fp/fixsfti.c: New file.
3581         * soft-fp/fixdfti.c: New file.
3582         * soft-fp/fixtfti.c: New file.
3583         * soft-fp/fixunssfti.c: New file.
3584         * soft-fp/fixunsdfti.c: New file.
3585         * soft-fp/fixunstfti.c: New file.
3586         * soft-fp/extendxftf.c: New file.
3587         * soft-fp/trunctfxf.c: New file.
3588
3589         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
3590         (__trunctfxf2): Ditto.
3591
3592         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
3593         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
3594         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
3595         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
3596         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
3597         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
3598
3599         * config/i386/t-fprules-softfp64: New file.
3600         * config/i386/sfp-machine.h: New file.
3601         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
3602         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
3603         and soft-fp/t-softfp to tmake_file.
3604         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
3605         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
3606
3607         * config/i386/t-linux64 (softfp_wrap_start): New.
3608         (softfp_wrap_end): New.
3609         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
3610         supported for TARGET_64BIT.
3611
3612 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3613
3614         * c-common.c (c_common_signed_or_unsigned_type): Emulate
3615         c_common_unsigned_type behavior.
3616
3617 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
3618
3619         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
3620         calls as pure.
3621
3622 2007-05-16  Eric Christopher  <echristo@apple.com>
3623
3624         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
3625         saving after stack push. Set sp_offset whenever we push.
3626         (rs6000_emit_epilogue): Move altivec register restore before
3627         stack push.
3628
3629 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3630
3631         * configure.ac: Allow sysroots to be relocated under $prefix as
3632         well as $exec_prefix.
3633         * configure: Regenerate.
3634
3635 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3636
3637         Revert:
3638
3639         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3640
3641         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3642         (gcc_tooldir): Likewise.
3643         * configure: Regenerate.
3644         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3645         old configure.ac gcc_tooldir setting.
3646         (prefix_to_exec_prefix): New variable.
3647         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3648         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3649
3650 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
3651
3652         * c-typeck.c (build_binary_op): Return early for error.
3653
3654 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
3655
3656         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
3657         struct nb_iter_bound.
3658         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
3659         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
3660         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
3661         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
3662         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
3663         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
3664         (del_scev_info): Use ggc_free.
3665         (scev_initialize): Allocate scalar_evolution_info in gc memory.
3666         * loop-init.c: Include ggc.h.
3667         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
3668         (loop_optimizer_finalize): Use ggc_free.
3669         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
3670         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
3671         pass_iv_optimize): Add TODO_ggc_collect.
3672         * function.h (struct function): Remove skip marker from x_current_loops.
3673         * cfgloop.c: Include ggc.h.
3674         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
3675         memory.
3676         (establish_preds): Vector superloops is gc allocated.
3677         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
3678         loop->exits list.
3679         (flow_loops_find): Vector larray is gc allocated.
3680         (loop_exit_free): Use ggc_free.
3681         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
3682         that head of exits list is now not a part of struct loop.
3683         (record_loop_exits): Allocate exits table in gc memory.
3684         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
3685         head of exits list is now not a part of struct loop.
3686         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
3687         struct loop_exit): Add GTY marker.
3688         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
3689         Add skip marker to aux field.  Make head of exits list a separate
3690         object.
3691         (struct loops): Add GTY marker.  Make larray vector gc allocated.
3692         Add param marker to exits table.
3693         (get_loops): Type changed.
3694         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
3695         dependency.
3696         (cfgloop.o, loop-init.o): Add ggc.h dependency.
3697         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
3698         * basic-block.h (struct basic_block_def): Remove skip marker from
3699         loop_father field.
3700
3701 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
3702
3703         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
3704         of 0 in the call to expand_expr().
3705         (expand_builtin_mathfn_3): Ditto.
3706         (expand_builtin_interclass_mathfn): Ditto.
3707         (expand_builtin_cexpi): Ditto.
3708         (expand_builtin_int_roundingfn): Ditto.
3709         (expand_builtin_int_roundingfn_2): Ditto.
3710         (expand_builtin_pow): Ditto.
3711         (expand_builtin_powi): Ditto.
3712         (expand_builtin_bswap): Ditto.
3713         (expand_builtin_unop): Ditto.
3714         (expand_builtin_fabs): Ditto.
3715         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
3716         the call to expand_expr().
3717         (expand_builtin_sync_operation): Ditto.
3718         (expand_builtin_compare_and_swap): Ditto.
3719         (expand_builtin_lock_test_and_set): Ditto.
3720         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
3721         instead of 0 in the call to expand_expr().
3722         (expand_builtin_extract_return_addr): Ditto.
3723         (expand_builtin_eh_return): Ditto.
3724         (expand_eh_return): Ditto.
3725         * explow.c (expr_size): Ditto.
3726         * expr.c (optimize_bitfield_assignment_op): Ditto.
3727         (expand_assignement): Ditto.
3728         (store_expr): Ditto.
3729         (store_field): Ditto.
3730         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
3731         the call to expand_expr().
3732         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
3733         in the call to expand_expr().
3734         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
3735         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
3736         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
3737         of expand_expr().
3738         * optabs.c (expand_vec_shift_expr): Ditto.
3739         (expand_vec_cond_expr): Ditto.
3740         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
3741         call to expand_expr().
3742         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
3743         in the call to expand_expr().
3744
3745 2007-05-14  Dave Korn  <dave.korn@artimi.com>
3746
3747         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
3748
3749 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
3750
3751         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
3752         instead of c_common_unsigned_type.
3753         (c_common_unsigned_type): Remove.
3754         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
3755         c_common_unsigned_type.
3756         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
3757         c_common_unsigned_type.
3758         * c-common.h (c_common_unsigned_type): Remove.
3759         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
3760         c_common_unsigned_type.
3761         * c-format.c (check_format_types): Use unsigned_type_for instead of
3762         c_common_unsigned_type.
3763         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3764         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
3765         c_common_unsigned_type.
3766         * convert.c (convert_to_integer): Use unsigned_type_for instead of
3767         lang_hooks.types.unsigned_type.
3768         * expmed.c (make_tree): Use unsigned_type_for instead of
3769         lang_hooks.types.unsigned_type.
3770         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
3771         lang_hooks.types.unsigned_type.
3772         (build_range_check): Likewise.
3773         (fold_unary): Likewise.
3774         (fold_binary): Likewise.
3775         (fold_ternary): Likewise.
3776         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3777         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
3778         * tree.c (get_unsigned_type): New.
3779         (unsigned_type_for): Use get_unsigned_type instead of
3780         lang_hooks.types.unsigned_type.
3781
3782 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
3783
3784         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
3785         to m68k_get_function_kind.  Update its prototype.
3786         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
3787         interrupt_thread.
3788         (m68k_interrupt_function_p): Return enum m68k_function_type
3789         instead of bool.  Rename to m68k_get_function_kind.
3790         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
3791         target is not fido.
3792         (m68k_compute_frame_layout): Don't mark any register for save
3793         if an interrupt_thread attribute is specified.
3794         (m68k_hard_regno_rename_ok): Update a use of
3795         m68k_interrupt_function_p.
3796         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
3797         m68k_interrupt_function_p.
3798         (m68k_function_type): New.
3799         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
3800         for a function with an interrupt_thread attribute.
3801         * doc/extend.texi: Document the interrupt_thread attribute.
3802
3803 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
3804
3805         Fix PR tree-optimization/31911
3806         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
3807         if they didn't change the expression.
3808
3809 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
3810
3811         * tree-scalar-evolution.c (resolve_mixers): Exported.
3812         * tree-scalar-evolution.h (resolve_mixers): Declare.
3813         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
3814         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
3815         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
3816         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
3817         init_array_ref, init_pointer_ref, analyze_indirect_ref,
3818         strip_conversion, analyze_offset_expr, address_analysis,
3819         object_analysis, analyze_offset): Removed.
3820         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
3821         split_constant_offset, canonicalize_base_object_address,
3822         object_address_invariant_in_loop_p, disjoint_objects_p,
3823         dr_may_alias_p, dr_address_invariant_p): New functions.
3824         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
3825         and dr_analyze_alias.
3826         (initialize_data_dependence_relation): Use dr_may_alias_p
3827         and object_address_invariant_in_loop_p.
3828         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
3829         is chrec_dont_know.
3830         (find_data_references_in_stmt): Restrict the analysis of data references
3831         to the given loop nest.
3832         (find_data_references_in_loop): Made static.  Pass loop nest to
3833         find_data_references_in_stmt.
3834         (compute_data_dependences_for_loop): Use DR_VOPS.
3835         (free_data_ref): Free DR_VOPS.
3836         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
3837         (struct innermost_loop_behavior): ... new.
3838         (struct base_object_info): Replaced by ...
3839         (struct indices): ... new.
3840         (struct dr_alias): New.
3841         (enum data_ref_type): Removed.
3842         (struct data_reference): Consist of struct innermost_loop_behavior,
3843         struct indices and struct dr_alias.
3844         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
3845         (DR_MEMTAG): Renamed to ...
3846         (DR_SYMBOL_TAG): ... this.
3847         (find_data_references_in_loop): Declaration removed.
3848         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
3849         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
3850         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
3851         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
3852
3853 2007-05-13  Revital Eres  <eres@il.ibm.com>
3854
3855         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
3856         which walks virtual def-use chains to find redundant stores.
3857         (dse_optimize_stmt): Call it.
3858
3859 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3860
3861         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
3862         * passes.c (init_optimization_passes): Move pass_jump_bypass
3863         after loop2.
3864
3865         * basic-block.h (bb_has_eh_pred): Fix style issue.
3866
3867 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3868
3869         PR rtl-optimization/31848
3870         * loop-invariant.c (move_invariant_reg): If we move an insn
3871         with a REG_EQUAL note, and that insn is not always executed,
3872         remove the REG_EQUAL note.
3873
3874 2007-05-12  Richard Guenther  <rguenther@suse.de>
3875
3876         PR tree-optimization/31797
3877         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
3878         propagate into a stmt that has volatile ops.
3879
3880 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3881
3882         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3883         (gcc_tooldir): Likewise.
3884         * configure: Regenerate.
3885         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3886         old configure.ac gcc_tooldir setting.
3887         (prefix_to_exec_prefix): New variable.
3888         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3889         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3890
3891 2007-05-11  Silvius Rus  <rus@google.com>
3892
3893         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
3894         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
3895         * c-common.h (strict_aliasing_warning): Change return type.
3896         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
3897         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
3898         (build_c_cast): Condition call to strict_aliasing_warning.
3899         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
3900         * flags.h (set_Wstrict_aliasing): Declare.
3901         * opts.c (set_Wstrict_alising): Define, add call to.
3902         * tree-flow.h (strict_aliasing_warning_backend): Declare.
3903         * tree-ssa-alias-warnings.c: New file.
3904         * tree-ssa-alias.c (compute_may_aliases): Add call to
3905         strict_aliasing_warning_backend.
3906
3907 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
3908
3909         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
3910         Use loop_depth and loop_outer accessor functions.
3911         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
3912         determine_invariantness_stmt, move_computations_stmt): Ditto.
3913         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
3914         add_loop, loopify, unloop, fix_loop_structure): Ditto.
3915         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
3916         * tree-scalar-evolution.c (interpret_loop_phi,
3917         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
3918         instantiate_parameters_1, scev_const_prop): Ditto.
3919         * cfghooks.c (make_forwarder_block): Ditto.
3920         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
3921         * modulo-sched.c (loop_canon_p): Ditto.
3922         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
3923         slpeel_can_duplicate_loop_p): Ditto.
3924         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
3925         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3926         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
3927         cancel_loop, verify_loop_structure): Ditto.
3928         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
3929         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
3930         superloops vector instead of "pred" array.
3931         (establish_preds): Take father loop as an argument.  Initialize the
3932         superloops vector.
3933         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
3934         initialize loop->outer.
3935         (flow_loop_tree_node_remove): Truncate the superloops vector.
3936         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
3937         "pred" merged to "superloops" vector.
3938         (loop_depth, loop_outer): New.
3939         (fel_init): Use loop_outer.
3940
3941 2007-05-11  Jan Hubicka  <jh@suse.cz>
3942
3943         * cgraphunit.c: Include gt-cgraphunit.h
3944         (static_ctors, static_dtors): New static vars.
3945         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
3946         based on implementation in c-common.c
3947         (cgraph_finalize_function): Call record_cdtor_fn.
3948         (cgraph_optimize): Call cgraph_build_cdtor_fns.
3949         * decl.c (finish_function): Do not call c_record_cdtor_fn.
3950         (c_write_global_declarations): Do not call c_build_cdtor_fns.
3951         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
3952         build_cdtor, c_build_cdtor_fns): Remove.
3953         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
3954         c_build_cdtor_fns): Remove prototype.
3955
3956 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
3957
3958         PR other/31852
3959         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
3960         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
3961         * builtins.c (fold_builtin_memchr): New.
3962         (expand_builtin_memchr): Call the latter.
3963         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
3964         * doc/extend.texi ([Other built-in functions provided by GCC]):
3965         Document memchr.
3966
3967 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
3968
3969         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
3970         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
3971         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
3972         PFPO_OP1_TYPE_SHIFT): Constants added.
3973         (DFP_ALL): Mode macro defined.
3974         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
3975         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
3976         Insn definitions added.
3977         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
3978         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
3979         Expanders added.
3980
3981 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
3982
3983         PR tree-optimization/31885
3984         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
3985         to be undetermined.
3986         (automatically_generated_chrec_p): Return false for NULL.
3987
3988 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3989
3990         * config/bfin/bfin.h (MOVE_RATIO): Define.
3991
3992 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
3993
3994         * config.gcc (sparc-wrs-vxworks): New target.
3995         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
3996         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
3997         * config/sparc/sparc.h: Include vxworks-dummy.h.
3998         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
3999         include LABEL_REFs too.
4000         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
4001         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
4002         VxWorks.
4003         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
4004         on VxWorks.
4005         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
4006         (sparc_emit_call_insn): New function.
4007         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
4008         functions when generating VxWorks PIC.
4009         * config/sparc/sparc.md (vxworks_load_got): New pattern.
4010         (call, call_value): Use sparc_emit_call_insn instead of
4011         emit_call_insn.
4012
4013 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
4014
4015         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
4016
4017 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
4018
4019         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
4020         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
4021         instead of operand_subword.
4022
4023 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4024
4025         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
4026         * config/bfin/bfin.c (bfin_local_alignment): New function.
4027         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
4028
4029 2007-05-08  Chao-ying Fu  <fu@mips.com>
4030
4031         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
4032         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
4033         (smsub_widen_optab, umsub_widen_optab): Define.
4034         * optabs.c (init_optabs): Initialize smsub_widen_optab and
4035         umsub_widen_optab.
4036         * genopinit.c (optabs): Fill in smsub_widen_optab and
4037         umsub_widen_optab.
4038         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
4039         and umsub_widen_optab to implement multiply-subtract sequences.
4040         * config/mips/mips.md (*msac<u>_di): Rename to...
4041         (<u>msubsidi4): ...this.  Extend condition to include
4042         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
4043         of operand 0 to "ka" and use the three-operand form of msub<u>
4044         for TARGET_DSPR2.
4045         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
4046         to define_expands.
4047
4048 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
4049
4050         PR rtl-optimization/28011
4051         * reload.c (push_reload): Set dont_share if IN appears in OUT
4052         also when IN is a PLUS rtx.
4053         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
4054         are same PLUS rtx.
4055
4056 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
4057
4058         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
4059         call unshare_all_decls.
4060         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
4061         (unshare_all_decls): Remove.
4062
4063 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
4064
4065         PR 31847
4066         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
4067         dumps.
4068
4069 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
4070             Nigel Stephens  <nigel@mips.com>
4071
4072         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
4073         Update comments and all uses.
4074         (MIN_FPRS_PER_FMT): Define.
4075         * config/mips/mips.c (function_arg): Fix to correctly handle
4076         the -mips32r2 -mfp64 -mabi=32 case.
4077         (override_options): Enable use of odd-numbered registers for
4078         SFmode values on MIPS32.
4079         (mips_save_reg_p): Save whole floating-point register pair if
4080         either half is used.
4081         (compute_frame_size): Fix comment.
4082
4083 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
4084
4085         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
4086         argument of type bool.
4087         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
4088         argument. Safely select temporary P register according to it.
4089         (do_link): Change call site of add_to_reg accordingly.
4090         (do_unlink): Add epilogue_p as a fourth argument and pass it
4091         to add_to_reg.
4092         (expand_interrupt_handler_epilogue): Change call of do_unlink
4093         accordingly.
4094         (bfin_expand_prologue): Add a third argument sibcall_p.
4095         * config/bfin/bfin.md (epilogue): Change call of
4096         bfin_expand_epilogue accordingly.
4097         (sibcall_epilogue): Likewise.
4098         (eh_return_internal): Likewise.
4099
4100         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
4101         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
4102         * config/bfin/bfin.c (bfin_handle_option): Handle
4103         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
4104         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
4105         Support bf534, bf536 and bf561.
4106         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
4107
4108 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
4109
4110         PR target/31854
4111         * config/i386/i386.c (ix86_function_regparm): Process local
4112         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
4113
4114 2007-05-07  Mike Stump  <mrs@apple.com>
4115
4116         * doc/invoke.texi (Warning Options): Document that -Wempty-body
4117         also checks for and while statements in C++.
4118
4119 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
4120
4121         * gcc.c (at_file_supplied): New variable.
4122         (main): Set it if we expanded argv.
4123         (do_spec_1): Pass an @-file to the linker if we were called with
4124         an @-file argument and HAVE_GNU_LD.
4125         * collect2.c (at_file_supplied): New variable.
4126         (response_file): New variable.
4127         (collect_exit): Unlink response_file if necessary.
4128         (handler): Likewise.
4129         (do_wait): Likewise.
4130         (main): Set at_file_supplied if we expanded argv.
4131         (collect_execute): Pass an @-file to subprocesses if we were called
4132         with an @-file argument.
4133         * configure.ac: Add define for HAVE_GNU_LD.
4134         * configure: Regenerate.
4135         * config.in: Regenerate.
4136
4137 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
4138
4139         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
4140         operand to HI mode.
4141         (mulsi3): New.
4142         (divsi3): New.
4143         (udivsi3): New.
4144
4145 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
4146
4147         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
4148         (TARGET_ENCODE_SECTION_INFO): Re-define.
4149         (m32c_encode_section_info): New
4150         (function_vector_handler): New
4151         (current_function_special_page_vector): New
4152         (m32c_special_page_vector_p): New.
4153         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
4154         Prototype.
4155         * config/m32c/jump.md: Added instruction JSRS for functions
4156         with attribute "function_vector".
4157         * doc/extend.texi (function_vector): Added description
4158         for M16C, M32C targets.
4159
4160 2007-05-07  DJ Delorie  <dj@redhat.com>
4161
4162         PR 31794
4163         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
4164         ashrpsi3, lshrpsi3): Update shift count constraint.
4165
4166 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
4167             Nathan Froyd  <froydnj@codesourcery.com>
4168
4169         PR 22133
4170         * c-incpath.c (add_path): Strip trailing path separators.
4171
4172 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
4173
4174         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
4175         Free dominance info before purging EH edges.
4176         (eliminate_degenerate_phis): Likewise.
4177         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
4178
4179 2007-05-07  Jan Hubicka  <jh@suse.cz>
4180
4181         * gimplify.c (gimplify_expr): Do not crash when folding
4182         (void *)(int)&a + 4.
4183
4184 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4185
4186         PR driver/31694
4187         * c-opts.c (lang_fortran): Make it non static.
4188         * c-common.h (lang_fortran): New prototype.
4189         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
4190         -lang-fortran option was passed by the driver.
4191
4192 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
4193
4194         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
4195         of ASSERT_CHECKING.  Tweak message.
4196
4197 2007-05-06  Revital Eres  <eres@il.ibm.com>
4198
4199         PR 30957
4200         * loop-unroll.c (insert_var_expansion_initialization):
4201         Initialize the expansions with -zero instead of +zero.
4202
4203 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
4204
4205         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
4206         into pic and non-pic versions. Mark r19 as used for
4207         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
4208         for tgd_load, tld_load and tie_load .
4209         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
4210         version of tgd_load, tld_load and tie_load depending on the
4211         value of flag_pic.
4212
4213 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
4214             Jakub Jelinek  <jakub@redhat.com>
4215
4216         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
4217         (__do_global_dtors_aux): Use more paranoid loop to run
4218         destructors if HIDDEN_DTOR_LIST_END.
4219         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
4220
4221 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
4222
4223         * varasm.c (align_variable): Don't increase alignment for
4224         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
4225         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
4226
4227 2007-05-04  Josh Conner  <jconner@apple.com>
4228
4229         * basic-block.h (cdi_direction): Assign values to all enumeration
4230         constants.
4231         (dom_computed): Remove.
4232         (dom_info_state): New.
4233         (set_dom_info_availability): New.
4234         * tree-ssa-loop-im.c (determine_invariantness): Initialize
4235         walk_data.dom_direction.
4236         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
4237         instead of dom_computed[].
4238         (split_edge): Likewise.
4239         (create_basic_block): Likewise.
4240         (merge_blocks): Likewise.
4241         * ifcvt.c (find_if_header): Likewise.
4242         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
4243         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
4244         * tree-ssa.c (verify_ssa): Likewise.
4245         * tree-cfg.c (tree_verify_flow_info): Likewise.
4246         (remove_edge_and_dominated_blocks): Likewise.
4247         * dominance.c (dom_computed): Make static.
4248         (calc_dfs_tree_nonrec): Change third param to a bool.
4249         (calc_dfs_tree): Change second param to a bool.
4250         (calc_idioms): Change second param to a bool.  Use
4251         dom_convert_dir_to_idx.
4252         (init_dom_info): Validate dir before using.
4253         (dom_convert_dir_to_idx): New.
4254         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
4255         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
4256         (free_dominance_info): Use dom_convert_dir_to_idx.
4257         (get_immediate_dominator): Likewise.
4258         (set_immediate_dominator): Likewise.
4259         (get_dominated_by): Likewise.
4260         (redirect_immediate_dominators): Likewise.
4261         (nearest_common_denominator): Likewise.
4262         (dominated_by_p): Likewise.
4263         (bb_dom_dfs_in): Likewise.
4264         (bb_dom_dfs_out): Likewise.
4265         (recount_dominator): Likewise.
4266         (iterate_fix_dominators): Likewise.
4267         (add_to_dominance_info): Likewise.
4268         (delete_from_dominance_info): Likewise.
4269         (first_dom_son): Likewise.
4270         (next_dom_son): Likewise.
4271         (dom_info_available_p): Likewise.
4272         (dom_info_state): New.
4273         (set_dom_info_availability): New.
4274
4275 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
4276
4277         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
4278         Expander removed.
4279         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
4280
4281 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
4282
4283         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
4284         (subdi3, subdi_carry): Delete.
4285
4286 2007-05-04  Jan Hubicka  <jh@suse.cz>
4287             Richard Guenther  <rguenther@suse.de>
4288
4289         * opts.c (decode_options): Do not fiddle with inlining
4290         parameters in case of optimizing for size.
4291         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
4292         for size do nothing.
4293         (cgraph_decide_inlining_of_small_function): When optimizing for
4294         size never inline functions increasing caller size.
4295         (cgraph_early_inlining): Inline for size when optimizing for size.
4296
4297 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
4298
4299         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
4300         logical operations piecewise.
4301         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
4302         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
4303         subdi_sesidi_di): Delete.
4304         (add_with_carry): Produce carry in CC instead of a DREG to shorten
4305         the generated sequence.  Allow three-reg add in constraints.  Rewrite
4306         the rtl expression for carry to avoid zero_extend of a constant.
4307         (sub_with_carry): New pattern.
4308         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
4309         different sequence not involving jumps.
4310         (notbi): Now a named pattern.
4311
4312 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
4313
4314         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
4315         Add the note about a significant loss of accuracy of some
4316         mathematical routines when these options are used.
4317
4318 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4319
4320         * haifa-sched.c (rtx_vec_t): New typedef.
4321         (contributes_to_priority_p): Extract piece of priority () into new
4322         static function.
4323         (priority): Use the function.  Add assertion.
4324         (rank_for_schedule, set_priorities): Add assertion to check that
4325         insn's priority is initialized.
4326         (clear_priorities, calc_priorities): Change signature.  Make it update
4327         all relevant insns.  Update all callers ('add_to_speculative_block ()'
4328         and 'create_block_check_twin ()').
4329         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
4330         Add new field 'priority_status'.
4331         (INSN_PRIORITY_STATUS): New macro.
4332         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
4333
4334 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4335
4336         * sched-ebb.c (debug_ebb_dependencies): New static function.
4337         (init_ready_list): Use it.
4338
4339         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
4340         with changed signature and 'debug_rgn_dependencies ()'.
4341         (debug_rgn_dependencies): New static function.
4342         (init_ready_list): Use it.
4343
4344         * sched-int.h (debug_dependencies): Declare.
4345
4346 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
4347
4348         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
4349
4350 2007-05-04  Dirk Mueller  <dmueller@suse.de>
4351
4352         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
4353
4354 2007-05-03  Jan Hubicka  <jh@suse.cz>
4355
4356         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
4357         for pointer type in more cases than before.
4358
4359         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
4360
4361         * tree-object-size.c (plus_expr_object_size): When operand size is
4362         unknown, return unknown.
4363
4364 2007-05-03  Dirk Mueller  <dmueller@suse.de>
4365
4366         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
4367
4368         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
4369         options.
4370
4371         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
4372
4373 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
4374
4375         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
4376
4377 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
4378
4379         * config/soft-fp/double.h, config/soft-fp/extended.h,
4380         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
4381         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
4382         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
4383         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
4384         glibc CVS.
4385
4386 2007-05-03  Ian Lance Taylor  <iant@google.com>
4387
4388         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
4389         MASK_PPC_GFXOPT for 8540 or 8548.
4390
4391 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
4392
4393         * tree-vect-transform.c (vect_update_inits_of_drs): Use
4394         vect_print_dump_info() to output debug information.
4395
4396 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
4397
4398         PR target/31768
4399         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
4400         operands of size 2 when operand is not MEM_P.
4401
4402 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
4403
4404         PR tree-optimization/30565
4405         * lambda-code.c (perfect_nestify): Fix updating of dominators.
4406
4407 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4408
4409         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
4410         (umulsi3_highpart): Use them.
4411         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
4412         for final accumulator to D regisster tranfser.
4413
4414 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
4415
4416         PR tree-optimization/31699
4417         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
4418         code.
4419         (vect_enhance_data_refs_alignment): Compute peel amount using
4420         TYPE_VECTOR_SUBPARTS instead of vf.
4421         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
4422
4423 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
4424
4425         PR bootstrap/31776
4426         * system.h: Remove inclusion of double-int.h
4427         * tree.h: Include double-int.h
4428         * gengtype.c: Likewise
4429         * cfgloop.h: Likewise
4430         * Makefile.in: Adjust dependencies on double-int.h
4431
4432 2007-05-02  Eric Christopher  <echristo@apple.com>
4433
4434         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
4435         -shared to -Zdynamiclib.
4436
4437 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
4438
4439         PR c++/31663
4440         * c-common.c (strip_pointer_or_array_types): New function.
4441         * c-common.h (strip_pointer_or_array_types): New function declaration.
4442
4443 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
4444
4445         PR tree-optimization/31771
4446         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
4447
4448 2007-05-02  Paul Brook  <paul@codesourcery.com>
4449
4450         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
4451
4452 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4453
4454         PR middle-end/29715
4455         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
4456         transformation.
4457
4458 2007-05-02  Nick Clifton  <nickc@redhat.com>
4459
4460         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
4461
4462 2007-05-02  Richard Guenther  <rguenther@suse.de>
4463
4464         PR tree-optimization/31146
4465         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
4466         argument, single_use_p.  If we have a single use that is
4467         a conversion to the definition rhs type, propagate that rhs.
4468         (forward_propagate_addr_expr): Pass single_use_p argument
4469         to forward_propagate_addr_expr_1.
4470
4471 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
4472
4473         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
4474         variable.
4475
4476 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4477
4478         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
4479         'AMD Family 10 core'.
4480
4481 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4482
4483         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
4484         and athlon64-sse3 as improved versions of k8, opteron and athlon64
4485         with SSE3 instruction set support.
4486         * doc/invoke.texi: Likewise.
4487
4488 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4489
4490         * config/i386/i386.c (override_options): Tuning 32-byte loop
4491         alignment for amdfam10 architecture. Increasing the max loop
4492         alignment to 24 bytes.
4493
4494 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
4495
4496         * config/m68k/constraints.md: New.
4497         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
4498         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4499         EXTRA_CONSTRAINT): Remove.
4500         * config/m68k/m68k.md: Include constraints.md.
4501         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
4502
4503 2007-05-01  Ian Lance Taylor  <iant@google.com>
4504
4505         PR tree-optimization/31739
4506         * tree-vrp.c (vrp_val_is_max): New static function.
4507         (vrp_val_is_min): New static function.
4508         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
4509         copying the node.
4510         (set_value_range): Use vrp_val_is_{max,min}.
4511         (extract_range_from_assert): Likewise.
4512         (extract_range_from_binary_expr): Likewise.
4513         (extract_range_from_unary_expr): Likewise.
4514         (dump_value_range, vrp_meet): Likewise.
4515         (vrp_visit_phi_node): Likewise.
4516         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
4517
4518 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
4519
4520         * config/i386/gmon-sol2.c (size_t): New type.
4521         (intptr_t): Likewise.
4522         (s_textsize): Declare as size_t.
4523         (sbrk): Declare.
4524         (monstartup): Use size_t for sizes.
4525         (_mcount): Save and restore registers.
4526         (internal_mcount): Pass 0 as the first argument to monstartup
4527         in 64-bit mode.
4528         (moncontrol): Convert pointer to appropriately sized integer
4529         before passing to profil.
4530
4531 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
4532
4533         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
4534         __NO_FPRS__, not just if _SOFT_DOUBLE.
4535         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
4536         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
4537         also for E500 double.
4538         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
4539         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
4540         && !TARGET_FPRS).
4541
4542 2007-05-01  Richard Guenther  <rguenther@suse.de>
4543
4544         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
4545         is NULL.
4546
4547 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
4548
4549         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
4550
4551 2007-05-01  Jan Hubicka  <jh@suse.cz>
4552
4553         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
4554         invariant.
4555
4556 2007-05-01  Jan Hubicka  <jh@suse.cz>
4557
4558         * tree.h (maybe_fold_offset_to_component_ref): Remove.
4559         (maybe_fold_offset_to_reference): Declare.
4560         * fold-const.c (fold_unary): Do not fold
4561         (type *)&A into &A->field_of_type_and_offset_0
4562         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
4563         size is unknown, give up.
4564         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
4565         offsets.
4566         (maybe_fold_offset_to_reference): New.
4567         (maybe_fold_stmt_indirect): Use it.
4568         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
4569         * gimplify.c (gimplify_conversion): Canonicalize conversions to
4570         field references.
4571         (gimplify_expr): Likewise for plus_expr.
4572
4573 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
4574
4575         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
4576         bsi_after_labels.  Always insert statements before bsi.
4577         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
4578         * predict.c (apply_return_prediction): Check for empty blocks.
4579         * cfgexpand.c (lab_rtx_for_bb): New variable.
4580         (label_rtx_for_bb): Do not create new tree labels.
4581         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
4582         (tree_expand_cfg): Initialize lab_rtx_for_bb.
4583         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
4584         creating edges.
4585         (label_for_bb): Add field used.
4586         (update_eh_label, main_block_label): Mark the label used.
4587         (cleanup_dead_labels): Remove unused labels.
4588
4589 2007-05-01  Richard Guenther  <rguenther@suse.de>
4590
4591         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
4592         if it is not about to be set.
4593         (get_value_range): Do not pre-allocate equiv bitmap.
4594         (update_value_range): No need to clear equiv field.
4595         (add_equivalence): Change prototype to get bitmap pointer.
4596         Allocate bitmap here if it is not already.
4597         (extract_range_from_assert): Do not allocate bitmap here.
4598         Update callers to add_equivalence.
4599         (extract_range_from_ssa_name): Likewise.
4600         (get_vr_for_comparison): New static helper.
4601         (compare_name_with_value): Handle NULL equiv bitmap by
4602         peeling the first iteration of the comparison loop.
4603         Use get_vr_for_comparison.
4604         (compare_names): Handle NULL equiv bitmaps by using fake
4605         ones.  Use get_vr_for_comparison.
4606
4607 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
4608
4609         * double-int.c (mpz_set_double_int): Moved from
4610         tree-ssa-loop-niter.c.
4611         (mpz_get_double_int): Likewise; also, add option to wrap
4612         out-of-range integers.
4613         * double-int.h: New prototypes for above.
4614         * tree.c (get_static_type_bounds): Moved from
4615         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
4616         TYPE_MAX_VALUE if they exist..
4617         * tree.h: New prototype for above.
4618         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
4619         get_type_bounds calls.
4620         (mpz_set_double_int): Move to double-int.c.
4621         (get_type_bounds): Move to tree.c, rename to
4622         get_static_type_bounds.
4623         (mpz_to_double_int): Move to double-int.c, rename to
4624         mpz_get_double_int.
4625
4626 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
4627
4628         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
4629         DIV0 exception can fall through to a normal return.
4630
4631 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
4632
4633         PR middle-end/22156
4634         Temporarily revert:
4635         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
4636         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
4637         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4638         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
4639         initialize align to silence bogus warning.
4640         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4641         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
4642         all_no_warning.
4643         (struct sra_walk_fns): Remove use_all parameter from use.
4644         (sra_hash_tree): Handle BIT_FIELD_REFs.
4645         (sra_elt_hash): Don't hash bitfld blocks.
4646         (sra_elt_eq): Skip them in parent compares as well.  Handle
4647         BIT_FIELD_REFs.
4648         (sra_walk_expr): Don't maintain or pass down use_all_p.
4649         (scan_use): Remove use_all parameter.
4650         (scalarize_use): Likewise.  Re-expand assignment to
4651         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
4652         output, and re-scalarize after output.  Don't mark anything
4653         for no warning.
4654         (scalarize_ldst): Adjust.
4655         (scalarize_walk_gimple_modify_statement): Likewise.
4656         (build_element_name_1): Handle BIT_FIELD_REFs.
4657         (instantiate_element): Don't warn for any element whose parent
4658         is used as a whole.
4659         (instantiate_missing_elements_1): Return the sra_elt.
4660         (canon_type_for_field): New.
4661         (try_instantiate_multiple_fields): New.
4662         (instantiate_missing_elemnts): Use them.
4663         (mark_no_warning): Removed.
4664         (generate_one_element_ref): Handle BIT_FIELD_REFs.
4665         (REPLDUP, sra_build_elt_assignment): New.
4666         (generate_copy_inout): Use them.
4667         (generate_element_copy): Likewise.  Handle bitfld differences.
4668         (generate_element_zero): Don't recurse for blocks.  Use
4669         sra_build_elt_assignment.
4670         (generate_one_element_int): Take elt instead of var.  Use
4671         sra_build_elt_assignment.
4672         (generate_element_init_1): Adjust.
4673         (scalarize_use, scalarize_copy): Use REPLDUP.
4674         (scalarize_ldst): Move assert before dereference.
4675         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
4676
4677 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4678
4679         PR C++/31721
4680         * tree.c (reconstruct_complex_type): Reconstruct a reference
4681         correctly.
4682         Also use the same mode for the pointer as the old pointer type.
4683
4684 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
4685
4686         * doc/trouble.texi (Interoperation): Remove note about Ultrix
4687         Fortran compiler.
4688
4689 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
4690
4691         PR rtl-optimization/31676
4692         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
4693         (df_refs_record): Call it.
4694
4695 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4696
4697         * rtl.def (SS_ABS): New code.
4698         * config/bfin/bfin.c (print_operand): New modifier 'v'.
4699         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
4700         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
4701         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
4702         (bfin_init_builtins): Define them.
4703         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
4704         (bfin_expand_builtin): ... and handle the others here.
4705         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
4706         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
4707         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
4708         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
4709         operand is only HImode.
4710
4711 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
4712
4713         * regclass.c (scan_one_insn): Remove splitting of
4714         two address insns.
4715
4716 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
4717             Nigel Stephens  <nigel@mips.com>
4718
4719         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
4720
4721 2007-04-28  Jan Hubicka  <jh@suse.cz>
4722
4723         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
4724         insn_locators_alloc instead of insn_locators_initialize;
4725         call reset_block_changes.
4726         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4727         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
4728         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
4729         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
4730         * config/score/score.c (th_output_mi_thunk): Likewise.
4731         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4732         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
4733         tolerate uninitialized locator info.
4734
4735         Re-apply:
4736         * function.c (init_function_start): Don't init line number info.
4737         (expand_function_end): Update.
4738         (reset_block_changes, record_block_change, finalize_block_changes,
4739         check_block_change, free_block_changes): Kill.
4740         * function.h (reset_block_changes, record_block_change,
4741         finalize_block_changes, check_block_change, free_block_changes): Remove
4742         prototypes.
4743         (struct function): Remove ib_boundaries_block.
4744         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
4745         Use curr_insn_locator to initialize locator.
4746         (emit_line_note): Remove.
4747         * cfgexpand.c (expand_gimple_cond_expr): Update.
4748         (construct_exit_block): Likewise.
4749         (tree_expand_cfg): Initialize/finalize locators.
4750         * expr.c (expand_expr_real): Update.
4751         * cfglayout.c (line_locators_locs, line_locators_lines,
4752         file_locators_locs, file_locators_files): Remove.
4753         (set_block_levels): Move to cfgexpand.c.
4754         (insn_locators_initialize): Remove.
4755         (pass_insn_locators_initialize): Remove.
4756         (locations_locators_locs, locations_locators_vals): New static vars.
4757         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
4758         Likewise.
4759         (insn_locators_alloc, insn_locators_finalize,
4760         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4761         New functions.
4762         (locator_location): New.
4763         (locator_line, locator_file): Rewrite.
4764         * rtl.h (emit_line_note): Kill.
4765         (insn_locators_alloc, insn_locators_finalize,
4766         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4767         Declare.
4768         * tree-inline.c (initialize_cfun): Do not initialize
4769         ib_boundaries_block.
4770         * passes.c (pass_insn_locators_initialize): Remove.
4771
4772 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
4773
4774         * tree-cfg.c (move_block_to_fn): Release bb from dominance
4775         info.  Update last_basic_block correctly.
4776
4777 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4778
4779         PR target/31701
4780         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
4781         register itself to hold the offset constant.  Tell flow the use
4782         of r4 and r5 when they are used.
4783
4784 2007-04-27  Richard Guenther  <rguenther@suse.de>
4785
4786         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
4787         if we simplified anything.
4788         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
4789         warnings until we did a simplification and the stmt was not
4790         marked as TREE_NO_WARNING.
4791
4792 2007-04-27  Mike Stump  <mrs@apple.com>
4793
4794         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
4795
4796 2007-04-27  Ian Lance Taylor  <iant@google.com>
4797
4798         PR middle-end/31710
4799         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
4800         TYPE_MAX_VALUE exist, convert them to the new type.
4801
4802 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
4803
4804         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
4805         if it claims to be available.
4806         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
4807         edge is redirected.
4808         (perform_tree_ssa_dce): Always free postdominators.
4809
4810 2007-04-27  Richard Henderson  <rth@redhat.com>
4811
4812         * config/alpha/predicates.md (aligned_memory_operand): Mark
4813         as define_special_predicate.
4814         (unaligned_memory_operand, normal_memory_operand): Likewise.
4815         (reg_or_unaligned_mem_operand): Remove.
4816         (any_memory_operand): Match the documentation and check for
4817         non-renumbered pseudos during reload.
4818         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
4819         alpha_secondary_reload_class, update to new interface, make static.
4820         Handle CQImode like HImode.  Remove FP subreg check.
4821         (alpha_expand_mov): Use replace_equiv_address.
4822         (alpha_expand_mov_nobwx): Use any_memory_operand.
4823         (TARGET_SECONDARY_RELOAD): New.
4824         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
4825         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
4826         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
4827         * config/alpha/alpha.md: ... here.
4828         (RELOAD12, reloadmode): New.
4829         (movcqi): New.
4830         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
4831         Don't handle the aligned case here.
4832         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
4833         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
4834         reload_inhi_help.  Don't expect a scratch register.
4835         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
4836         reload_outhi_help.
4837         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
4838
4839 2007-04-27  Richard Guenther  <rguenther@suse.de>
4840
4841         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
4842
4843 2007-04-27  Richard Guenther  <rguenther@suse.de>
4844
4845         PR tree-optimization/30965
4846         PR tree-optimization/30978
4847         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
4848         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
4849         (find_equivalent_equality_comparison): Likewise.
4850         (simplify_cond): Likewise.
4851         (get_prop_source_stmt): New helper.
4852         (get_prop_dest_stmt): Likewise.
4853         (can_propagate_from): Likewise.
4854         (remove_prop_source_from_use): Likewise.
4855         (combine_cond_expr_cond): Likewise.
4856         (forward_propagate_comparison): New function.
4857         (forward_propagate_into_cond): Rewrite to use fold for
4858         tree combining.
4859         (tree_ssa_forward_propagate_single_use_vars): Call
4860         forward_propagate_comparison to propagate comparisons.
4861
4862 2007-04-27  Richard Guenther  <rguenther@suse.de>
4863
4864         PR tree-optimization/31715
4865         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
4866         sure to do computation on the offset in an appropriate
4867         signed type.
4868
4869 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
4870
4871         * reload.h (elimination_target_reg_p): Declare.
4872         * reload.c (find_reloads): Don't apply the reg_rtx move
4873         optimization if the SET_DEST satisfies elimination_target_reg_p.
4874         * reload1.c (elimination_target_reg_p): New function.
4875         (gen_reload): In the move/add2 fallback, make sure that op0
4876         does not overlap the destination register.
4877
4878 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
4879
4880         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
4881         transform only GIMPLE_MODIFY_STMTs.
4882         * tree-complex.c (expand_complex_operations_1): Ditto.
4883         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
4884         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
4885         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
4886         branches.
4887         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
4888         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
4889         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
4890         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
4891         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
4892         slpeel_add_loop_guard): Ditto.
4893         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
4894         * lambda-code.c (perfect_nestify): Ditto.
4895         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
4896         before the first statement.
4897         * tree-optimize.c (execute_free_datastructures): Fix comments.
4898         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
4899         * tree-flow.h (disband_implicit_edges): Declaration removed.
4900         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
4901         branches.
4902         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
4903         without gotos.
4904         (disband_implicit_edges, has_label_p): Removed.
4905         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
4906         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
4907         branches.
4908         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
4909         side effects.
4910         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
4911         also for COND_EXPRs.
4912         * cfgexpand.c (label_rtx_for_bb): New function.
4913         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
4914         Use label_rtx_for_bb to find the labels.
4915         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
4916         last block.  Detect fallthru edges.
4917
4918 2007-04-26  Ian Lance Taylor  <iant@google.com>
4919
4920         PR target/28675
4921         * reload.c (find_reloads_subreg_address): If the address was valid
4922         in the original mode but not in the new mode, reload the whole
4923         address.
4924
4925 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
4926
4927         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
4928         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
4929         (cleanup_control_expr_graph): Do not invalidate dominance info.
4930         Record altered blocks.
4931         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
4932         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
4933         cleanup_tree_cfg_bb): New functions.
4934         (remove_forwarder_block): Do not maintain the worklist of blocks.
4935         Record altered blocks.
4936         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
4937         not over whole cfg.
4938         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
4939         delete_unreachable_blocks if dominators are not available.
4940         * tree-inline.c (optimize_inline_calls): Free dominance information
4941         earlier.
4942         * tree-flow.h (remove_edge_and_dominated_blocks,
4943         cfgcleanup_altered_bbs): Altered.
4944         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
4945         blocks.
4946         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
4947         functions.
4948         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
4949         do not invalidate dominators.
4950
4951 2007-04-26  Anatoly Sokolov <aesok@post.ru>
4952
4953         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
4954         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
4955         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
4956         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
4957
4958 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
4959
4960         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
4961
4962 2007-04-26  Richard Guenther  <rguenther@suse.de>
4963
4964         PR tree-optimization/31703
4965         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
4966         the right type for the target of the bittest.
4967
4968 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4969
4970         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
4971         ix86_sol10_return_in_memory.
4972
4973 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4974
4975         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
4976         variables.
4977
4978 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
4979
4980         PR c++/31598
4981         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
4982
4983         PR tree-optimization/30558
4984         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
4985         clear this_state.prev_try.
4986
4987 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4988             Mark Mitchell  <mark@codesourcery.com>
4989
4990         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
4991         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
4992         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
4993
4994 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4995
4996         PR driver/31107
4997         * doc/invoke.texi (%:print-asm-header): Document.
4998         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
4999         and -ftarget-help.
5000         (static_spec_functions): Add print-asm-header.
5001         (main): Print a banner before the --target-help linker options.
5002         (print_asm_header_spec_function): New function.
5003
5004 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
5005
5006         PR target/31403
5007         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
5008         (movsf_ie): Likewise.
5009
5010 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
5011
5012         * doc/extend.texi ([Type Traits]): Adjust per N2255.
5013
5014 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
5015
5016         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
5017         for divide-by-zero.
5018         (__umodsi3, __modsi3): Likewise.
5019
5020 2007-04-25  Dirk Mueller  <dmueller@suse.de>
5021
5022         * c-typeck.c (build_compound_expr): Annotate warning()
5023         call with OPT_Wunused_value.
5024         * tree-ssa.c (warn_uninit): Annotate warning with
5025         OPT_Wunintialized.
5026         * c-common.c (handle_sentinel_attribute): Annotate warning
5027         call with OPT_Wattributes.
5028
5029 2007-04-25  Thiemo Seufer  <ths@mips.com>
5030
5031         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
5032         (mips16): Fix typo.
5033         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
5034         on to the assembler.  Improve handling of -mno-mips16.  Add handling
5035         of -mno-mips3d, -mno-dsp, -mno-dspr2.
5036         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
5037         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
5038         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
5039
5040 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
5041
5042         PR target/31680
5043         * config/i386/winnt.c (i386_pe_file_end): Strip only
5044         USER_LABEL_PREFIX when writing export name.
5045
5046 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
5047
5048         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
5049         sh/elf.h, vx-common.h and vxworks.h.
5050         * config/sh/sh.h: Include config/vxworks-dummy.h.
5051         (SUBTARGET_OVERRIDE_OPTIONS): Define.
5052         (OVERRIDE_OPTIONS): Use it.
5053         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
5054         (vxworks_picreg): New pattern.
5055         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
5056         VXWORKS_OS_CPP_BUILTINS.
5057         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
5058         to their VXWORKS_* equivalents.
5059         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
5060         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
5061         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
5062         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
5063         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
5064         -mrtp/-fPIC multilibs.
5065         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
5066         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
5067         (MULTILIB_OSDIRNAMES): Delete.
5068
5069 2007-04-25  Anatoly Sokolov <aesok@post.ru>
5070
5071         PR target/18989
5072         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
5073
5074 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
5075
5076         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
5077         rounding mode to be specified by the caller.
5078         (real_to_mpfr) Likewise.
5079         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
5080         include new arguments.
5081         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
5082
5083 2007-04-24  Ian Lance Taylor  <iant@google.com>
5084
5085         PR tree-optimization/31605
5086         * tree-vrp.c (set_value_range): Check that min and max are not
5087         both overflow infinities.
5088         (set_value_range_to_value): New static function.
5089         (extract_range_from_binary_expr): Call set_value_range_to_value.
5090         (extract_range_from_cond_expr): Likewise.
5091         (extract_range_from_expr): Likewise.
5092         (extract_range_from_unary_expr): Likewise.  Don't create a range
5093         which overflows on both sides.
5094         (vrp_meet): Check for a useless range.
5095         (vrp_visit_phi_node): If we see a constant which looks like an
5096         overflow infinity, turn off the TREE_OVERFLOW flag.
5097
5098 2007-04-24  Ian Lance Taylor  <iant@google.com>
5099
5100         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
5101
5102 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
5103
5104         PR diagnostic/25923
5105         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
5106         diagnostic message is being built.
5107         * tree-pretty-print.c (dump_generic_node): Only write the
5108         formatted text into BUFFER's stream if we are not building a
5109         diagnostic message.
5110         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
5111         dump_generic_node.
5112         * Makefile.in (toplev.o): Depend on tree-pass.h.
5113
5114 2007-04-24  Ian Lance Taylor  <iant@google.com>
5115
5116         PR tree-optimization/31602
5117         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
5118         conditionals in the copied loop header.
5119         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
5120         warnings if TREE_NO_WARNING is set.
5121         * doc/invoke.texi (Warning Options): Clarify that
5122         -Wstrict-overflow does not warn about loops.
5123
5124 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
5125
5126         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
5127         expand on the comment about _Decimal128 arguments and check the
5128         integer result of the modulus operation; for 64-bit ELF ABI, ensure
5129         that _Decimal128 argument uses even/odd register pair.
5130         (function_arg): Ditto.
5131
5132 2007-04-24  Hui-May Chang <hm.chang@apple.com>
5133
5134         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
5135         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
5136
5137 2007-04-24  Richard Guenther  <rguenther@suse.de>
5138             Olga Golovanevsky  <olga@il.ibm.com>
5139
5140         * fold-const.c (multiple_of_p): Check for bottom
5141         to be zero.
5142
5143 2007-04-24  Richard Henderson  <rth@redhat.com>
5144
5145         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
5146         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
5147         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
5148         looking for non-zero bits shifted out.  Avoid a recursive call
5149         when constructing the scalar.
5150         (__floatundisf): Likewise.
5151
5152 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
5153
5154         * dwarf2out.c (field_byte_offset): Move the existing logic
5155         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
5156         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
5157
5158 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5159
5160         PR target/31641
5161         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
5162         argument of 0 for memset.
5163         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
5164         unsigned shift instead of the signed variant.
5165
5166 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5167
5168         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
5169         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
5170         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
5171         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
5172         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
5173         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
5174         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
5175         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
5176         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
5177         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
5178         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
5179         "mul<mode>3", "div<mode>3"): Insn definitions added.
5180         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
5181         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
5182         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
5183         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
5184         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
5185         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
5186         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
5187         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
5188         TARGET_FLOAT_FORMAT): Macro definitions removed.
5189         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
5190         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
5191         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
5192         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
5193         (s390_gen_rtx_const_DI): Function removed.
5194         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
5195
5196 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
5197
5198         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
5199         over an external ffs function.
5200
5201 2007-04-24  Chao-ying Fu  <fu@mips.com>
5202             Richard Sandiford  <richard@nildram.co.uk>
5203
5204         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
5205         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
5206         (smadd_widen_optab, umadd_widen_optab): Define.
5207         * optabs.c (init_optabs): Initialize smadd_widen_optab and
5208         umadd_widen_optab.
5209         * genopinit.c (optabs): Fill in smadd_widen_optab and
5210         umadd_widen_optab.
5211         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
5212         and umadd_widen_optab to implement multiply-add sequences.
5213         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
5214         (<u>maddsidi4): ...this.  Extend condition to include
5215         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
5216         of operand 0 to "ka" and use the three-operand form of madd<u>
5217         for TARGET_DSPR2.
5218         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
5219         to define_expands.
5220         * config/mips/constraints.md (ka): New register constraint.
5221
5222 2007-04-24  Jan Hubicka  <j@suse.cz>
5223
5224         Revert:
5225
5226         2007-04-23  Jan Hubicka  <jh@suse.cz>
5227         * function.c (init_function_start): Don't init line number info.
5228         (expand_function_end): Update.
5229         (reset_block_changes, record_block_change, finalize_block_changes,
5230         check_block_change, free_block_changes): Kill.
5231         * function.h (reset_block_changes, record_block_change,
5232         finalize_block_changes, check_block_change, free_block_changes): Remove
5233         prototypes.
5234         (struct function): Remove ib_boundaries_block.
5235         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5236         Use curr_insn_locator to initialize locator.
5237         (emit_line_note): Remove.
5238         * cfgexpand.c (expand_gimple_cond_expr): Update.
5239         (construct_exit_block): Likewise.
5240         (tree_expand_cfg): Initialize/finalize locators.
5241         * expr.c (expand_expr_real): Update.
5242         * cfglayout.c (line_locators_locs, line_locators_lines,
5243         file_locators_locs, file_locators_files): Remove.
5244         (set_block_levels): Move to cfgexpand.c.
5245         (insn_locators_initialize): Remove.
5246         (pass_insn_locators_initialize): Remove.
5247         (locations_locators_locs, locations_locators_vals): New static vars.
5248         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5249         Likewise.
5250         (insn_locators_alloc, insn_locators_finalize,
5251         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5252         New functions.
5253         (locator_location): New.
5254         (locator_line, locator_file): Rewrite.
5255         * rtl.h (emit_line_note): Kill.
5256         (insn_locators_alloc, insn_locators_finalize,
5257         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5258         Declare.
5259         * tree-inline.c (initialize_cfun): Do not initialize
5260         ib_boundaries_block.
5261         * passes.c (pass_insn_locators_initialize): Remove.
5262
5263 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
5264
5265         * doc/invoke.texi: Removed leading '-' from option index entries.
5266
5267 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
5268
5269         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
5270         Use phi_nodes_ptr.
5271         (create_phi_node): Use set_phi_nodes.
5272         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
5273         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
5274         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
5275         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
5276         (bsi_start, bsi_last): Use bb_stmt_list.
5277         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
5278         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
5279         Traverse the statements using tsi iterator.
5280         * basic-block.h (struct basic_block_def): Fields stmt_list
5281         and phi_nodes moved to ...
5282         (struct tree_bb_info): ... new structure.
5283         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
5284         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
5285         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
5286         (tree_verify_flow_info): Verify that il.tree is not set for
5287         entry and exit block.
5288         (tree_split_block): Use set_bb_stmt_list.
5289
5290 2007-04-23  Mike Stump  <mrs@apple.com>
5291
5292         * config/i386/i386.c (ix86_tune_features
5293         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
5294         nocona and core2.
5295
5296 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
5297
5298         * config/i386/i386.md (prefix_extra): New attribute.
5299         (length): Add prefix_extra.
5300
5301         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
5302         (sse2_movntv2di): Likewise.
5303         (sse2_cvtps2dq): Likewise.
5304         (sse2_cvtpd2pi): Likewise.
5305         (sse2_cvttpd2pi): Likewise.
5306         (*sse2_cvtpd2ps): Likewise.
5307         (*add<mode>3): Likewise.
5308         (sse2_ssadd<mode>3): Likewise.
5309         (sse2_usadd<mode>3): Likewise.
5310         (*sub<mode>3): Likewise.
5311         (sse2_sssub<mode>3): Likewise.
5312         (sse2_ussub<mode>3): Likewise.
5313         (*mulv8hi3): Likewise.
5314         (*smulv8hi3_highpart): Likewise.
5315         (*umulv8hi3_highpart): Likewise.
5316         (sse2_umulv2siv2di3): Likewise.
5317         (sse2_pmaddwd): Likewise.
5318         (ashr<mode>3): Likewise.
5319         (lshr<mode>3): Likewise.
5320         (ashl<mode>3): Likewise.
5321         (sse2_ashlti3): Likewise.
5322         (sse2_lshrti3): Likewise.
5323         (*umaxv16qi3): Likewise.
5324         (*smaxv8hi3): Likewise.
5325         (*uminv16qi3): Likewise.
5326         (*sminv8hi3): Likewise.
5327         (sse2_eq<mode>3): Likewise.
5328         (sse2_gt<mode>3): Likewise.
5329         (*and<mode>3): Likewise.
5330         (sse2_nand<mode>3): Likewise.
5331         (*ior<mode>3): Likewise.
5332         (*xor<mode>3): Likewise.
5333         (sse2_packsswb): Likewise.
5334         (sse2_packssdw): Likewise.
5335         (sse2_packuswb): Likewise.
5336         (sse2_punpckhbw): Likewise.
5337         (sse2_punpcklbw): Likewise.
5338         (sse2_punpckhwd): Likewise.
5339         (sse2_punpcklwd): Likewise.
5340         (sse2_punpckhdq): Likewise.
5341         (sse2_punpckldq): Likewise.
5342         (sse2_punpckhqdq): Likewise.
5343         (sse2_punpcklqdq): Likewise.
5344         (*sse2_pinsrw): Likewise.
5345         (*sse2_pextrw): Likewise.
5346         (sse2_pshufd_1): Likewise.
5347         (sse2_uavgv16qi3): Likewise.
5348         (sse2_uavgv8hi3): Likewise.
5349         (sse2_psadbw): Likewise.
5350         (sse2_pmovmskb): Likewise.
5351         (*sse2_maskmovdqu): Likewise.
5352         (*sse2_maskmovdqu_rex64): Likewise.
5353         (sse4a_extrqi): Likewise.
5354         (sse4a_extrq): Likewise.
5355         (sse3_lddqu): Set prefix_rep.
5356         (sse3_addsubv4sf3): Likewise.
5357         (sse3_haddv4sf3): Likewise.
5358         (sse3_hsubv4sf3): Likewise.
5359         (sse_cvtss2si): Likewise.
5360         (sse_cvtss2si_2): Likewise.
5361         (sse_cvtss2siq): Likewise.
5362         (sse_cvtss2siq_2): Likewise.
5363         (sse_cvttss2si): Likewise.
5364         (sse_cvttss2siq): Likewise.
5365         (sse2_cvttps2dq): Likewise.
5366         (sse3_movshdup): Likewise.
5367         (sse3_movsldup): Likewise.
5368         (sse2_cvtsd2si): Likewise.
5369         (sse2_cvtsd2si_2): Likewise.
5370         (sse2_cvtsd2siq): Likewise.
5371         (sse2_cvtsd2siq_2): Likewise.
5372         (sse2_cvttsd2si): Likewise.
5373         (sse2_cvttsd2siq): Likewise.
5374         (*sse2_cvtpd2dq): Likewise.
5375         (*sse2_cvttpd2dq): Likewise.
5376         (sse2_pshuflw_1): Likewise.
5377         (sse2_pshufhw_1): Likewise.
5378         (sse4a_insertqi): Likewise.
5379         (sse4a_insertq): Likewise.
5380         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
5381         (ssse3_phadddv4si3): Likewise.
5382         (ssse3_phaddswv8hi3): Likewise.
5383         (ssse3_phsubwv8hi3): Likewise.
5384         (ssse3_phsubdv4si3): Likewise.
5385         (ssse3_phsubswv8hi3): Likewise.
5386         (ssse3_pmaddubswv8hi3): Likewise.
5387         (ssse3_pmulhrswv8hi3): Likewise.
5388         (ssse3_pshufbv16qi3): Likewise.
5389         (ssse3_psign<mode>3): Likewise.
5390         (ssse3_palignrti): Likewise.
5391         (abs<mode>2): Likewise.
5392         (ssse3_phaddwv4hi3): Set prefix_extra.
5393         (ssse3_phadddv2si3): Likewise.
5394         (ssse3_phaddswv4hi3): Likewise.
5395         (ssse3_phsubwv4hi3): Likewise.
5396         (ssse3_phsubdv2si3): Likewise.
5397         (ssse3_phsubswv4hi3): Likewise.
5398         (ssse3_pmaddubswv4hi3): Likewise.
5399         (ssse3_pmulhrswv4hi3): Likewise.
5400         (ssse3_pshufbv8qi3): Likewise.
5401         (ssse3_psign<mode>3): Likewise.
5402         (ssse3_palignrdi): Likewise.
5403         (abs<mode>2): Likewise.
5404         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
5405         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
5406         (sse2_pmovmskb): Set mode to SI instead of V2DF.
5407
5408 2007-04-23  Nick Clifton  <nickc@redhat.com>
5409
5410         * params.def: Fix formatting of emacs local variables.
5411
5412 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
5413
5414         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
5415         move if inter-unit move isn't allowed.
5416         Don't split moving the first element of V2DI to DI to inter-unit
5417         move if inter-unit move isn't allowed.
5418
5419 2007-04-23  Richard Guenther  <rguenther@suse.de>
5420
5421         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
5422         and CDI_POST_DOMINATORS separately.
5423
5424 2007-04-23  Nick Clifton  <nickc@redhat.com>
5425
5426         * c.opt (Wformat-contains-nul): Add warning attribute.
5427
5428 2007-04-23  Jan Hubicka  <jh@suse.cz>
5429
5430         * function.c (init_function_start): Don't init line number info.
5431         (expand_function_end): Update.
5432         (reset_block_changes, record_block_change, finalize_block_changes,
5433         check_block_change, free_block_changes): Kill.
5434         * function.h (reset_block_changes, record_block_change,
5435         finalize_block_changes, check_block_change, free_block_changes): Remove
5436         prototypes.
5437         (struct function): Remove ib_boundaries_block.
5438         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5439         Use curr_insn_locator to initialize locator.
5440         (emit_line_note): Remove.
5441         * cfgexpand.c (expand_gimple_cond_expr): Update.
5442         (construct_exit_block): Likewise.
5443         (tree_expand_cfg): Initialize/finalize locators.
5444         * expr.c (expand_expr_real): Update.
5445         * cfglayout.c (line_locators_locs, line_locators_lines,
5446         file_locators_locs, file_locators_files): Remove.
5447         (set_block_levels): Move to cfgexpand.c.
5448         (insn_locators_initialize): Remove.
5449         (pass_insn_locators_initialize): Remove.
5450         (locations_locators_locs, locations_locators_vals): New static vars.
5451         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5452         Likewise.
5453         (insn_locators_alloc, insn_locators_finalize,
5454         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5455         New functions.
5456         (locator_location): New.
5457         (locator_line, locator_file): Rewrite.
5458         * rtl.h (emit_line_note): Kill.
5459         (insn_locators_alloc, insn_locators_finalize,
5460         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5461         Declare.
5462         * tree-inline.c (initialize_cfun): Do not initialize
5463         ib_boundaries_block.
5464         * passes.c (pass_insn_locators_initialize): Remove.
5465
5466 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5467
5468         PR middle-end/31448
5469         * expr.c (reduce_to_bit_field_precision): Handle
5470         CONST_INT rtx's.
5471
5472 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
5473
5474         PR tree-optimization/24659
5475         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
5476         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
5477         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
5478         * genopinit.c (optabs): Rename vec_pack_mod_optab
5479         to vec_pack_trunc_optab.
5480         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
5481         early for scalar floating point operands for NOP_EXPR.
5482         (vectorizable_type_promotion): Ditto.
5483         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
5484         vec_pack_trunc_optab.
5485         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
5486
5487         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
5488         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
5489         Rename from VEC_PACK_MOD_EXPR.
5490         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
5491         * expr.c (expand_expr_real_1): Ditto.
5492         * tree-inline.c (estimate_num_insns_1): Ditto.
5493         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
5494
5495         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
5496         (vec_unpacks_lo_v4sf): Ditto.
5497         (vec_pack_trunc_v2df): Ditto.
5498         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
5499         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
5500         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
5501
5502         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
5503         vec_pack_mod_v8hi.
5504         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
5505
5506         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
5507         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
5508         packing of floating point operands.
5509         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
5510         represent unpacking of floating point operands.
5511         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
5512         [vec_unpacks_hi]: Ditto.
5513         [vec_unpacks_lo]: Ditto.
5514
5515 2007-04-22  Jan Hubicka  <jh@suse.cz>
5516
5517         * final.c (rest_of_handle_final): Call
5518         targetm.asm_out.constructor/targetm.asm_out.destructor
5519         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
5520         proper priority via decl_*_priority_insert.
5521         * c-common.c (c_expand_body): Likewise.
5522
5523 2007-04-22  Richard Guenther  <rguenther@suse.de>
5524
5525         PR tree-optimization/29789
5526         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
5527         (rewrite_reciprocal): New helper split out from
5528         determine_invariantness_stmt.
5529         (rewrite_bittest): Likewise.
5530         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
5531         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
5532         is not.
5533
5534 2007-04-22  Revital Eres  <eres@il.ibm.com>
5535
5536         * loop-unroll.c (var_to_expand): New field to support also
5537         insns of the form x = something + x.
5538         (analyze_insn_to_expand_var): Use it.
5539         (expand_var_during_unrolling): Likewise.
5540
5541 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
5542
5543         * predict.c: Include pointer-set.h.
5544         (bb_predictions): New variable.
5545         (tree_predicted_by_p, tree_predict_edge,
5546         remove_predictions_associated_with_edge): Use bb_predictions map
5547         instead of bb->predictions.
5548         (clear_bb_predictions, assert_is_empty): New functions.
5549         (combine_predictions_for_bb): Use bb_predictions map.  Call
5550         clear_bb_predictions.
5551         (tree_estimate_probability): Create and free bb_predictions map.
5552         * Makefile.in (predict.o): Add pointer-set.h dependency.
5553         * basic-block.h (struct basic_block_def): Remove predictions
5554         field.
5555         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
5556
5557 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
5558
5559         PR target/31480
5560         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
5561         is null.
5562
5563 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5564
5565         * timevar.c (timevar_print): Change reference of --disable-checking to
5566         --enable-checking=release.  Also warn if assert checking is disabled.
5567
5568 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5569
5570         PR C/30265
5571         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
5572         decl as addressable if the compound literal was marked as
5573         addressable.
5574         Mark the decl as a gimple register if it is a complex or
5575         vector decl and does not live in memory.
5576
5577 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5578
5579         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
5580         (GENERIC_NEXT): New function macro.
5581         (PHI_CHAIN): Use phi_node's new chain variable.
5582         (tree_phi_node): Change tree_common to tree_base
5583         and add the chain field.
5584         * tree-phinodes.c (make_phi_node): Don't set
5585         TREE_TYPE on the new node.
5586         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
5587         instead of checking GIMPLE_TUPLE_P in chain_next.
5588         * tree-vect-transform.c
5589         (get_initial_def_for_induction): Look at
5590         PHI_RESULT_TREE for the type of the phi node.
5591         (update_vuses_to_preheader): Use PHI_CHAIN
5592         instead of TREE_CHAIN on the phi node.
5593         * tree-ssa-structalias.c (compute_points_to_sets):
5594         Likewise.
5595         (ipa_pta_execute): Likewise.
5596
5597 2007-04-21  Richard Guenther  <rguenther@suse.de>
5598
5599         PR middle-end/31136
5600         * fold-const.c (fold_unary): Call fold_convert_const on the
5601         original tree.
5602
5603 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
5604
5605         * gcse.c (store_killed_in_insn): Handle PARALLELs.
5606         (store_killed_in_pat): New.
5607
5608 2007-04-20  Richard Henderson  <rth@redhat.com>
5609
5610         PR target/31628
5611         * config/i386/i386.c (type_has_variadic_args_p): Look for any
5612         TREE_LIST with a void_type_node value, not void_list_node exactly.
5613
5614 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
5615
5616         * doc/standards.texi: Re-arrange into language-specific
5617         subsections. Add a C++ section, documenting which standards we
5618         support.
5619
5620 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
5621
5622         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
5623         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
5624
5625 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
5626
5627         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
5628         ecrti.o and crtbegin.o.
5629         (LIB_DEFAULT_SPEC): Include -lc.
5630         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
5631
5632 2007-04-20  Richard Henderson  <rth@redhat.com>
5633
5634         PR target/28623
5635         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
5636         argument; update all callers.
5637         (get_unaligned_offset): New.
5638         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
5639         get_unaligned_address, just pass on the address directly.
5640         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
5641         the subreg in the helper patterns.
5642         (unaligned_extendqidi_le): Use get_unaligned_offset.
5643         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
5644         (unaligned_extendhidi_be): Likewise.
5645         (unaligned_extendhidi): Tidy.
5646         * config/alpha/alpha-protos.h: Update.
5647
5648 2007-04-20  Richard Henderson  <rth@redhat.com>
5649
5650         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
5651         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
5652         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
5653         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5654         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5655         (CPP_SPEC): Don't include %(cpp_subtarget).
5656         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
5657         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5658         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
5659
5660 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
5661
5662         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
5663         for __builtin_ia32_cmpordss.
5664
5665         PR tree-optimization/31632
5666         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
5667         and arg1 for optimizations of comparison against min/max values.
5668         Fold arg0 to arg1's type for optimizations of comparison against
5669         min+1 and max-1 values.
5670
5671 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
5672
5673         * reload.c (combine_reloads): When trying to use a dying register,
5674         check whether it's uninitialized and don't use if so.
5675
5676 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
5677
5678         * fold-const.c: Remove prototypes for native_encode_expr and
5679         native_interpret_expr.
5680         (native_encode_expr): Make non-static.
5681         (native_interpret_expr): Likewise.
5682         * tree.h: Add prototypes for the above.
5683
5684 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
5685
5686         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
5687         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
5688         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
5689         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
5690         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
5691         Add length attributes.
5692
5693 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
5694
5695         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
5696         not that it is 1.
5697
5698         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
5699         __STDC_WANT_DEC_FP__.
5700
5701 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
5702
5703         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
5704         for long double compatibility.
5705         * configure: Regenerate.
5706
5707 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
5708
5709         PR rtl-optimization/29841
5710         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
5711         trap instructions.
5712         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
5713         that may cause control flow transfer from being moved.
5714
5715 2007-04-18  Jan Hubicka  <jh@suse.cz>
5716
5717         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
5718         types.
5719
5720 2007-04-18  Eric Christopher  <echristo@apple.com>
5721
5722         * config/rs6000/darwin.md (load_macho_picbase): Use link register
5723         only. Update operands.
5724         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
5725         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
5726         link register to pic register.
5727
5728 2007-04-18  Dirk Mueller  <dmueller@suse.de>
5729
5730         PR diagnostic/31227
5731         * tree-vrp.c (search_for_addr_array): New.
5732         (check_array_bounds): Suppress warning about
5733         address taken of array refs if its not de-referenced.
5734
5735 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
5736
5737         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
5738         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
5739
5740         * tree-vectorizer.h (NITERS_KNOWN_P): New.
5741         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
5742         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
5743
5744         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
5745         dump print.
5746         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
5747         print message.
5748         (vect_analyze_scalar_cycles): Fix indentation.
5749         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
5750         (vect_mark_relevant): Include phis in relevance analysis.
5751
5752         * tree-vect-transform.c (vect_transform_loop): Add an assert.
5753
5754 2007-04-18  Anatoly Sokolov <aesok@post.ru>
5755
5756         * config/avr/avr.c (ptrreg_to_str): Replace error() with
5757         output_operand_lossage().
5758
5759 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
5760
5761         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
5762         the unused code for reduction without adjust-in-epilog to simplify the
5763         function.
5764
5765 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
5766
5767         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
5768         (S390_TDC_NEGATIVE_ZERO): New constant.
5769         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
5770         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
5771         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
5772         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
5773         (S390_TDC_POSITIVE_INFINITY): New constant.
5774         (S390_TDC_NEGATIVE_INFINITY): New constant.
5775         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
5776         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
5777         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
5778         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
5779         (S390_TDC_INFINITY): New constant.
5780         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
5781         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
5782         optimization for UNSPEC_CCZ_TO_INT.
5783         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
5784         ("*ccz_to_int"): New insn.
5785         ("isinf<mode>2"): New insn.
5786         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
5787         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
5788         (UNSPEC_CCZ_TO_INT): New constant.
5789
5790 2007-04-18  Richard Guenther  <rguenther@suse.de>
5791
5792         PR tree-optimization/19431
5793         PR tree-optimization/21463
5794         * tree-pass.h (pass_phiprop): Declare.
5795         * passes.c (init_optimization_passes): New phiprop pass.
5796         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
5797         (phivn_valid_p): New helper function.
5798         (phiprop_insert_phi): Likewise.
5799         (propagate_with_phi): Likewise.
5800         (tree_ssa_phiprop): New propagator propagating loads
5801         through phi nodes if profitable.
5802
5803 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
5804
5805         * tree-vect-analyze.c (process_use): New function.
5806         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
5807         Check phis in all bbs.
5808         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
5809         assert.
5810
5811 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
5812
5813         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
5814         we use REG_EQUAL.
5815
5816 2007-04-17  Anatoly Sokolov <aesok@post.ru>
5817
5818         PR target/30483
5819         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
5820         error().
5821
5822 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
5823
5824         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
5825         on "0".
5826         (sse_vmmulv4sf3): Likewise.
5827         (sse2_vmaddv2df3): Likewise.
5828         (sse2_vmmulv2df3): Likewise.
5829
5830 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
5831
5832         PR rtl-optimization/31360
5833         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
5834         (target_reg_cost): New.
5835         (init_set_costs): Initialize target_reg_cost.  Add comments
5836         regarding the rationale of the costs.
5837         (global_cost_for_size): Renamed to...
5838         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
5839         of register pressure.
5840         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
5841         estimate_reg_pressure_cost.  Add number of ivs.
5842         (determine_set_costs): Dump target_reg_cost.
5843         * loop-invariant.c (gain_for_invariant):  Use
5844         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
5845         (best_gain_for_invariant, find_invariants_to_move): Remove
5846         n_inv_uses.
5847         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
5848         (target_reg_cost): Declare.
5849         (global_cost_for_size): Declaration removed.
5850         (estimate_reg_pressure_cost): Declare.
5851
5852 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
5853
5854         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
5855         regnos into even/odd register pairs.
5856         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
5857         TDmode similar to the other floating point modes.
5858         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
5859         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
5860         define_expand's.
5861         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
5862         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
5863         (movdd_hardfloat64): Use TARGET_MFPGPR.
5864
5865 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
5866
5867         * reload1.c (delete_output_reload): Don't count output in n_inherited.
5868
5869         Revert
5870         2005-01-05  Richard Henderson  <rth@redhat.com>
5871         PR rtl-opt/10692
5872         * reload1.c (do_input_reload): Restrict the optimization deleteing
5873         a previous output reload to RELOAD_FOR_INPUT.
5874
5875 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
5876
5877         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
5878         induc_vec_info_type.
5879         (vectorizable_induction): New function declaration.
5880         * tree-vect-transform.c (get_initial_def_for_induction): No need to
5881         check if already vectorized.  Find first place in BB where new stmts
5882         can be inserted.  Takes only one argument.
5883         (vectorizable_induction): New function.
5884         (vect_transform_stmt): Add case for induc_vec_info_type to call
5885         vectorizable_induction.
5886         (vect_transform_loop): Consider phis for vectorization.
5887         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
5888         condition.
5889         (analyze_operations): Call vectorizable_induction when analyzing phis.
5890         Fix comment.
5891         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
5892         (vect_mark_relevant): Include phis in relevance analysis.
5893         (vect_mark_stmts_to_be_vectorize): Likewise.
5894         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
5895
5896 2007-04-16  Lawrence Crowl  <crowl@google.com>
5897
5898         * doc/invoke.texi (Debugging Options): Add documentation for the
5899         -femit-struct-debug options -femit-struct-debug-baseonly,
5900         -femit-struct-debug-reduced, and
5901         -femit-struct-debug-detailed[=...].
5902
5903         * c-opts.c (c_common_handle_option): Add
5904         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
5905         and OPT_femit_struct_debug_detailed_.
5906         * c.opt: Add specifications for
5907         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
5908         and -femit-struct-debug-detailed[=...].
5909         * opts.c (set_struct_debug_option): Parse the
5910         -femit-struct-debug-... options.
5911         * opts.c (matches_main_base, main_input_basename,
5912         main_input_baselength, base_of_path, matches_main_base): Add
5913         variables and functions to compare header base name to compilation
5914         unit base name.
5915         * opts.c (should_emit_struct_debug): Add to determine to emit a
5916         structure based on the option.
5917         (dump_struct_debug) Also disabled function to debug this
5918         function.
5919         * opts.c (handle_options): Save the base name of the
5920         compilation unit.
5921
5922         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
5923         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
5924         This hook indicates if a type is generic.  Set it by default
5925         to "never generic".
5926         * langhooks.h (struct lang_hooks_for_types): Add a new hook
5927         to determine if a struct type is generic or not.
5928         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
5929         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
5930         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
5931         with live C++ hook.
5932
5933         * flags.h (enum debug_info_usage): Add an enumeration to describe
5934         a program's use of a structure type.
5935         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
5936         to indicate the program's usage of the type.  Filter structs based
5937         on the -femit-struct-debug-... specification.
5938         (gen_type_die): Split into two routines, gen_type_die and
5939         gen_type_die_with_usage.  gen_type_die is now a wrapper
5940         that assumes direct usage.
5941         (gen_type_die_with_usage): Replace calls to gen_type_die
5942         with gen_type_die_with_usage adding the program usage of
5943         the referenced type.
5944         (dwarf2out_imported_module_or_decl): Suppress struct debug
5945         information using should_emit_struct_debug when appropriate.
5946
5947 2007-04-16  Ian Lance Taylor  <iant@google.com>
5948
5949         PR tree-optimization/31522
5950         * tree-vrp.c (vr_phi_edge_counts): New static variable.
5951         (vrp_initialize): Allocate vr_phi_edge_counts.
5952         (vrp_visit_phi_node): Don't push to infinity if we saw a new
5953         executable edge.  Drop test for all constants.
5954         (vrp_finalize): Free vrp_phi_edge_counts.
5955
5956         * doc/cpp.texi (Common Predefined Macros): Clarify description of
5957         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
5958
5959         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
5960         predecessors at head rather than tail.
5961
5962 2007-04-16  Matthias Klose  <doko@debian.org>
5963
5964         * config/alpha/linux.h (CPP_SPEC): Define.
5965         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
5966
5967 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
5968
5969         * function.h: Remove sequence_stack extern declaration.
5970
5971 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
5972
5973         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
5974         TARGET_FIDOA.
5975         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
5976         defined.
5977
5978 2007-04-16  Anatoly Sokolov <aesok@post.ru>
5979
5980         * config/avr/avr.c (avr_arch_types): Rearranging  array.
5981         (enum avr_arch): Add.
5982         (avr_mcu_types): Use avr_arch enumeration constants instead of
5983         numbers.
5984         * config/avr/avr.h (LINK_SPEC): Simplify.
5985
5986 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
5987
5988         * config/m68k/m68k.c (m68k_libcall_value,
5989         m68k_function_value): Use macros for register names more.
5990
5991         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
5992         instead.
5993         (M68K_REGNAME): Use A6_REG.
5994         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
5995
5996 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5997
5998         PR middle-end/28071
5999         * sched-int.h (struct deps): Split field 'pending_lists_length' into
6000         'pending_read_list_length' and 'pending_write_list_length'.  Update
6001         comment.
6002         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
6003         to handle two length counters instead of one.  Update all uses.
6004         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
6005         two length counters instead of one.
6006         * sched-rgn.c (propagate_deps): Update to handle two length counters
6007         instead of one.
6008
6009 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
6010
6011         PR target/31582
6012         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
6013         copy of source, pass it to ix86_expand_vector_set and return
6014         it as target.
6015
6016 2007-04-16  David Ung  <davidu@mips.com>
6017             Joseph Myers  <joseph@codesourcery.com>
6018
6019         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
6020         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
6021         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
6022         Add 74K processor information.
6023         * config/mips/mips.md: Include 74k.md.
6024         (cpu): Add 74kc,74kf,74kx.
6025         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
6026         * config/mips/74k.md: New.
6027         * doc/invoke.texi (MIPS Options): Document 74K support.
6028
6029 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
6030
6031         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
6032         vectorizable_* functions.
6033         * tree-vect-transform.c (vectorizable_call): Add check for
6034         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
6035         (vectorizable_store): likewise.
6036         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
6037         Add comments.
6038         (vectorizable_operation, vectorizable_type_demotion): Likewise.
6039         (vectorizable_type_promotion, vectorizable_load): Likewise.
6040         (vectorizable_live_operation, vectorizable_condition): Likewise.
6041         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
6042         STMT_VINFO_LIVE_P.
6043         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
6044
6045 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6046
6047         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
6048         register numbers more.
6049         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
6050         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
6051         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
6052         FUNCTION_VALUE_REGNO_P): Likewise.
6053         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
6054         STATIC_CHAIN_REGNUM): Likewise.
6055         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
6056         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
6057         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
6058         * config/m68k/m68k.md (FP_REG): New.
6059
6060 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6061
6062         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
6063         alignment on fido.
6064
6065 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6066
6067         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
6068         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
6069         comment typos.
6070
6071 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6072
6073         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
6074         cold loops.
6075
6076 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6077
6078         PR c/31520
6079         * c-decl.c (finish_decl): Grab the type of the decl after the call
6080         to store_init_value.
6081
6082 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
6083
6084         * common.opt (fforward-propagate): Fix "Optimization" annotation.
6085
6086 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
6087
6088         PR c++/25874
6089         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
6090         post dominators and cleanup cfg before returning.
6091
6092 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
6093
6094         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
6095         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
6096
6097 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
6098
6099         * config.gcc: Recognize fido.
6100         * config/m68k/m68k-devices.def (fidoa): New.
6101         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
6102         __mfido__.
6103         (FL_FIDOA, TARGET_FIDOA): New.
6104         * config/m68k/m68k.opt (mfidoa): New.
6105
6106 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6107
6108         PR middle-end/31322
6109         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
6110         when a personality function is used.
6111
6112 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
6113
6114         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
6115
6116 2007-04-13  Mike Stump  <mrs@apple.com>
6117
6118         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
6119         we can...
6120         * config/darwin.opt (fapple-kext): Make C++ only.
6121         * config/darwin.c (darwin_override_options): Remove code to ensure
6122         -fapple-kext is given for C++ only.
6123
6124 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
6125
6126         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
6127         * config/mips/mips.c (override_options): Call
6128         SUBTARGET_OVERRIDE_OPTIONS, if defined.
6129
6130 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
6131
6132         * config/i386/i386.opt (msvr3-shlib): Removed.
6133
6134         * doc/invoke.texi: Remove -msvr3-shlib.
6135
6136 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
6137
6138         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
6139         with "popcnt" instruction.
6140
6141 2007-04-13  Richard Guenther  <rguenther@suse.de>
6142
6143         PR tree-optimization/21258
6144         * tree-vrp.c (compare_case_labels): New helper.
6145         (find_switch_asserts): New function.
6146         (find_assert_locations): Call it for SWITCH_EXPRs.
6147
6148 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
6149
6150         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
6151         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
6152         check is now implied in X87_FLOAT_MODE_P.
6153         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
6154         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
6155         (fix_trunc<mode>_i386_fisttp): Ditto.
6156         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
6157         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
6158         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
6159         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
6160         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
6161         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
6162         (unnamed_splitters): Ditto.
6163         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
6164         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
6165         FIRST_SSE_REG for local functions when SSE math is enabled or
6166         for functions with sseregparm attribute.
6167         (standard_80387_constant_p): Return -1 if mode is not
6168         X87_FLOAT_MODE_P.
6169         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
6170         (ix86_expand_compare): Ditto.
6171         (ix86_expand_carry_flag_compare): Ditto.
6172         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
6173         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
6174         DECIMAL_FLOAT_MODE_P.
6175         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
6176         of SCALAR_FLOAT_MODE_P.
6177         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
6178         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
6179         checks before FLOAT_MODE_P.
6180         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
6181         before FLOAT_MODE_P.
6182         [DIV]: Ditto.
6183         [NEG]: Ditto.
6184         [ABS]: Ditto.
6185         [SQRT]: Ditto.
6186         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
6187
6188 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
6189             Charles Wilson  <libtool@cwilson.fastmail.fm>
6190
6191         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
6192         (libgcc.mvars): Don't depend on them.
6193         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
6194         * exec-tool.in: New.
6195
6196 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
6197
6198         * doc/invoke.text (--help): Document --help=common.
6199
6200 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
6201
6202         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
6203
6204 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6205
6206         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
6207         * genemit.c (main): Emit #include "integrate.h".
6208         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
6209         (LOADGP_RTP): New mips_loadgp_style.
6210         * config/mips/mips.h: Include config/vxworks-dummy.h.
6211         (TARGET_RTP_PIC): New macro.
6212         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
6213         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
6214         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
6215         for TARGET_RTP_PIC.
6216         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
6217         -mvxworks-pic when using -mrtp and a PIC option.
6218         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
6219         for RTP PIC.
6220         (mips_symbolic_constant_p, mips_symbolic_address_p)
6221         (mips_symbol_insns): Handle SYMBOL_HALF.
6222         (override_options): Warn about -G and -mrtp being used together.
6223         Initialize mips_lo_relocs[SYMBOL_HALF].
6224         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
6225         (mips_emit_loadgp): Handle LOADGP_RTP.
6226         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
6227         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
6228         (tablejump): Handle function-relative case table entries if
6229         TARGET_RTP_PIC.
6230         * config/mips/predicates.md (symbol_ref_operand): New predicate.
6231
6232 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6233
6234         * config/mips/mips.md (load_call<mode>): Allow any general register.
6235         destination.
6236         (sibcall_value_internal, sibcall_value_multiple_internal)
6237         (call_value_internal, call_value_split, call_value_multiple_internal)
6238         (call_value_multiple_split): Remove constraints from operand 0.
6239
6240 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6241
6242         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
6243         rather than loadgp_noshared.
6244         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
6245         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
6246         gen_loadgp.
6247         * config/mips/mips.md (loadgp): Rename to...
6248         (loadgp_newabi): ...this.
6249         (loadgp_noshared): Rename to...
6250         (loadgp_absolute): ...this.
6251
6252 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6253
6254         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
6255         false for locally-binding symbols.
6256         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
6257
6258 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6259
6260         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
6261         (SYMBOL_GOT_PAGE_OFST): ...this.
6262         (SYMBOL_GOT_GLOBAL): Rename to...
6263         (SYMBOL_GOT_DISP): ...this.
6264         (SYMBOL_GOTOFF_GLOBAL): Rename to...
6265         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
6266         * config/mips/mips.c (mips_global_symbol_p): New function.
6267         (mips_symbol_binds_local_p): Likewise.
6268         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
6269         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
6270         and mips_symbol_binds_local_p.
6271         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
6272         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
6273         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
6274         SYMBOL_GOTOFF_DISP.
6275         (mips_ok_for_lazy_binding_p): New function.
6276         (mips_load_call_address, mips_expand_call): Use it.
6277         (mips_dangerous_for_la25_p): Likewise.
6278         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
6279         (*got_disp<mode>): Use got_disp_operand instead of
6280         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
6281         SYMBOL_GOTOFF_GLOBAL.
6282         (*got_page<mode>): Use got_page_ofst_operand instead of
6283         local_got_operand.
6284         * config/mips/predicates.md (const_call_insn_operand): Use
6285         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
6286         (global_got_operand): Rename to...
6287         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
6288         SYMBOL_GOT_GLOBAL.
6289         (local_got_operand): Rename to...
6290         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
6291         of SYMBOL_GOT_LOCAL.
6292
6293 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6294
6295         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
6296         TARGET_CALL_CLOBBERED_GP.
6297         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6298         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
6299         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
6300         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
6301         of TARGET_ABICALLS && !TARGET_NEWABI.
6302         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6303         * config/mips/mips.c (mips_load_call_address): Check
6304         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
6305         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6306         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
6307         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
6308         TARGET_ABICALLS && TARGET_NEWABI.
6309         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
6310         TARGET_ABICALLS.
6311         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
6312         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
6313         TARGET_ABICALLS && TARGET_NEWABI.
6314         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
6315         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
6316         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
6317         whether indirect calls must use $25.
6318         (mips_extra_live_on_entry): Check TARGET_GOT instead of
6319         TARGET_ABICALLS.
6320         * config/mips/mips.md (jal_macro): Check flag_pic and
6321         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
6322         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
6323         instead of TARGET_ABICALLS.
6324         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
6325         TARGET_ABICALLS && TARGET_OLDABI.
6326         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6327         (sibcall): In the comment above the define_insn, mention
6328         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
6329         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
6330         instead of TARGET_ABICALLS.
6331
6332 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
6333
6334         * doc/md.texi (Blackfin family constraints): Document PA and PB.
6335         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
6336         (MACFLAGS_MATCH_P): New macro.
6337         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
6338         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
6339         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
6340         the other MACFLAG constants.
6341         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
6342         (flag_machi): Tighten constraints.  Renumber some of the operands.
6343         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
6344         output template.
6345         (flag_machi_parts_acconly): New pattern.
6346         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
6347         used.
6348         (flag_macinit1hi): Tighten constraints.
6349         (flag_mul_macv2hi_parts_acconly): New pattern.
6350
6351         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
6352         Use a more efficient implementation.
6353         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
6354         inline sequences when not optimizing for size.
6355
6356         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
6357         movhi_high2low): Delete, merge functionality into...
6358         (packv2hi): ... this pattern.
6359
6360         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
6361         * config/bfin/bfin.opt (msim): New option.
6362         (mcpu=): New option.
6363         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
6364         (bfin_cpu_t): Typedef of enum bfin_cpu.
6365         (bfin_cpu_type): New declaration.
6366         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
6367         -msim and -mcpu= options.
6368         (LIB_SPEC): Likewise.
6369         * config/bfin/bfin.c (bfin_cpu_type): Define.
6370         (bfin_handle_option): Handle -mcpu= option.
6371         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
6372         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
6373         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
6374
6375 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6376
6377         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
6378         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
6379         (powerpc-wrs-vxworksae): Use ${tm_file}.
6380         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
6381         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
6382         * config/i386/vx-common.h: New file.
6383
6384 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6385
6386         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
6387         of crt0.o%s.
6388
6389 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
6390
6391         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
6392         ldxtr.
6393
6394 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
6395
6396         PR c++/31078
6397         PR c++/31103
6398         * c-common.c (c_build_qualified_type): Set canonical type
6399         appropriately.
6400
6401 2007-04-12  Richard Guenther  <rguenther@suse.de>
6402
6403         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
6404         lower bound and element size if lower bound is not zero
6405         or either of the ARRAY_REF operands is set.
6406
6407 2007-04-12  Richard Guenther  <rguenther@suse.de>
6408
6409         PR tree-optimization/24689
6410         PR tree-optimization/31307
6411         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
6412         indices by value.
6413         * gimplify.c (canonicalize_addr_expr): To be consistent with
6414         gimplify_compound_lval only set operands two and three of
6415         ARRAY_REFs if they are not gimple_min_invariant.  This makes
6416         it never at this place.
6417         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
6418
6419 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6420
6421         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
6422         null before emitting a .nsubspa directive.
6423
6424 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
6425
6426         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
6427         need_to_partition_p if there are no memory statements in the
6428         function.
6429
6430 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6431
6432         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
6433         (gcd_of_steps_may_divide_p): New function.
6434         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
6435
6436 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
6437
6438         * reload.c (find_reloads_toplev, find_reloads_address,
6439         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
6440         not a pointer equality test, to decide if we need to call
6441         push_reg_equiv_alt_mem.
6442
6443 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
6444
6445         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
6446         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
6447         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
6448
6449 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6450
6451         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
6452         vector to be positive.
6453
6454 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
6455
6456         PR 30735
6457         PR 31090
6458         * doc/invoke.texi: Document --params max-aliased-vops and
6459         avg-aliased-vops.
6460         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
6461         debug_memory_partitions): Move to tree-flow.h
6462         * params.h (AVG_ALIASED_VOPS): Define.
6463         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
6464         users.
6465         (mp_info_t): Likewise.
6466         (get_mem_sym_stats_for): New.
6467         (set_memory_partition): Move from tree-flow-inline.h.
6468         (mark_non_addressable): Only clear the set of symbols for the
6469         partition if it exists.
6470         (dump_memory_partitions): Move from tree-ssa-operands.c
6471         (debug_memory_partitions): Likewise.
6472         (need_to_partition_p): New.
6473         (dump_mem_ref_stats): New.
6474         (debug_mem_ref_stats): New.
6475         (dump_mem_sym_stats): New.
6476         (debug_mem_sym_stats): New.
6477         (update_mem_sym_stats_from_stmt): New.
6478         (compare_mp_info_entries): New.
6479         (mp_info_cmp): Call it.
6480         (sort_mp_info): Change argument to a list of mem_sym_stats_t
6481         objects.
6482         (get_mpt_for): Move from tree-ssa-operands.c.
6483         (find_partition_for): New.
6484         (create_partition_for): Remove.
6485         (estimate_vop_reduction): New.
6486         (update_reference_counts): New.
6487         (build_mp_info): New.
6488         (compute_memory_partitions): Refactor.
6489         Document new heuristic.
6490         Call build_mp_info, update_reference_counts,
6491         find_partition_for and estimate_vop_reduction.
6492         (compute_may_aliases): Populate virtual operands before
6493         calling debugging dumps.
6494         (delete_mem_sym_stats): New.
6495         (delete_mem_ref_stats): New.
6496         (init_mem_ref_stats): New.
6497         (init_alias_info): Call it.
6498         (maybe_create_global_var): Remove alias_info argument.
6499         Get number of call sites and number of pure/const call sites
6500         from gimple_mem_ref_stats().
6501         (dump_alias_info): Call dump_memory_partitions first.
6502         (dump_points_to_info_for): Show how many times a pointer has
6503         been dereferenced.
6504         * opts.c (decode_options): For -O2 set --param
6505         max-aliased-vops to 500.
6506         For -O3 set --param max-aliased-vops to 1000 and --param
6507         avg-aliased-vops to 3.
6508         * fortran/options.c (gfc_init_options): Remove assignment to
6509         MAX_ALIASED_VOPS.
6510         * tree-flow-inline.h (gimple_mem_ref_stats): New.
6511         * tree-dfa.c (dump_variable): Dump memory reference
6512         statistics.
6513         Dump NO_ALIAS* settings.
6514         (referenced_var_lookup): Tidy.
6515         (mem_sym_stats): New.
6516         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
6517         and ORIG are different SSA names for a memory partition.
6518         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
6519         * tree-flow.h (struct mem_sym_stats_d): Define.
6520         (mem_sym_stats_t): Define.
6521         (struct mem_ref_stats_d): Define.
6522         (struct gimple_df): Add field mem_ref_stats.
6523         (enum noalias_state): Define.
6524         (struct var_ann_d): Add bitfield noalias_state.
6525         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
6526         debug_mem_ref_stats, debug_memory_partitions,
6527         debug_mem_sym_stats): Declare.
6528         * tree-ssa-structalias.c (update_alias_info): Update call
6529         sites, pure/const call sites and asm sites in structure
6530         returned by gimple_mem_ref_stats.
6531         Remove local variable IS_POTENTIAL_DEREF.
6532         Increase NUM_DEREFS if the memory expression is a potential
6533         dereference.
6534         Call update_mem_sym_stats_from_stmt.
6535         If the memory references memory, call
6536         update_mem_sym_stats_from_stmt for all the direct memory
6537         symbol references found.
6538         (intra_create_variable_infos): Set noalias_state field for
6539         pointer arguments according to the value of
6540         flag_argument_noalias.
6541         * tree-ssa-structalias.h (struct alias_info): Remove fields
6542         num_calls_found and num_pure_const_calls_found.
6543         (update_mem_sym_stats_from_stmt): Declare.
6544         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
6545         Set default value to 100.
6546         (PARAM_AVG_ALIASED_VOPS): Define.
6547
6548 2007-04-11  Richard Guenther  <rguenther@suse.de>
6549
6550         PR middle-end/31530
6551         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
6552         a * -b + c as c - a * b if we honor sign dependent rounding.
6553
6554 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
6555
6556         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
6557         bfin_expand_strmov.
6558         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
6559         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
6560         variables.
6561         (initialize_trampoline): Don't use old-style function definition.
6562         (bfin_secondary_reload): Mark IN_P argument as unused.
6563
6564 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
6565
6566         PR tree-optimization/31343
6567         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
6568         (build_polynomial_chrec): Return a scalar when the evolution is zero.
6569         * testsuite/gcc.dg/vect/pr31343.c: New.
6570
6571 2007-04-10  Eric Christopher  <echristo@apple.com>
6572
6573         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
6574         * config/i386/i386.md (*cmpfp0): Use.
6575         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
6576         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
6577         (fix_trunc<mode>_i386_fisttp): Ditto.
6578         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
6579         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
6580         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
6581         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
6582         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
6583         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
6584         (unnamed_splitters): Ditto.
6585         * config/i386/i386.c (output_fix_trunc): Assert that
6586         we're not being passed a TFmode operand.
6587
6588 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
6589
6590         PR tree-optimization/31526
6591         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
6592         n_basic_blocks to find newly added blocks.
6593
6594 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
6595
6596         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
6597         alternative.
6598         (fix_trunc<mode>si_sse): Ditto.
6599         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
6600         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
6601         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
6602         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
6603         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
6604         expander using SSEMODEF mode macro.
6605         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
6606         expander using SSEMODEF mode macro.
6607         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
6608         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
6609         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
6610         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
6611         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
6612         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
6613         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
6614         Macroize insn using X87MODEF mode macro.
6615
6616 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
6617
6618         * config/i386/sse.md (sse2_pinsrw): Removed.
6619         (sse2_pextrw): Renamed to ...
6620         (*sse2_pextrw): This.
6621
6622 2007-04-09  Jan Hubicka  <jh@suse.cz>
6623
6624         PR target/27869
6625         * config/i386/sse.md
6626         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
6627         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
6628         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
6629         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
6630
6631 2007-04-09  Jan Hubicka  <jh@suse.cz>
6632
6633         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
6634         multiple fields of union.
6635
6636 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
6637
6638         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
6639         (create_preheaders): Check that loops are available.
6640         (fix_loop_structure): Clean up, improve comments.
6641         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
6642         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
6643         state flags.
6644         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
6645         * predict.c (tree_estimate_probability): Do not call
6646         calculate_dominance_info.  Call create_preheaders.
6647         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
6648         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
6649         flags.
6650         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
6651         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
6652         * tree-cfg.c (tree_split_edge): Make an assert more precise.
6653         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
6654         arguments.
6655
6656 2007-04-08  Jan Hubicka  <jh@suse.cz>
6657
6658         * tree.h (maybe_fold_offset_to_component_ref): Declare.
6659         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
6660         * fold-const.c (fold_unary): Use it.
6661
6662 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6663
6664         * varasm.c (assemble_variable): Remove call to
6665         lang_hooks.decls.prepare_assemble_variable.
6666         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
6667         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
6668         * langhooks.h (lang_hooks_for_decls): Remove
6669         prepare_assemble_variable.
6670
6671 2007-04-08  Mike Stump  <mrs@apple.com>
6672
6673         * config/i386/i386.c: Use inc/dec on Core2.
6674
6675 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
6676
6677         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
6678         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
6679         lhd_tree_inlining_end_inlining): Remove.
6680         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
6681         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
6682         end_inlining hooks.
6683         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
6684         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
6685         lhd_tree_inlining_end_inlining): Remove prototypes.
6686         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
6687         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
6688         LANG_HOOKS_TREE_INLINING_START_INLINING,
6689         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
6690
6691         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
6692         not set it.
6693
6694 2007-04-08  Anatoly Sokolov <aesok@post.ru>
6695
6696         PR target/29932
6697         * config/avr/predicates.md (io_address_operand): Delete predicate.
6698         (low_io_address_operand): Don't use 'mode' argument.
6699         (higth_io_address_operand): Rename ...
6700         (high_io_address_operand): ... to this. Don't use 'mode' argument.
6701         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
6702         for above change.
6703
6704 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
6705
6706         Revert change removing staticp.
6707
6708 2007-04-07  Anatoly Sokolov <aesok@post.ru>
6709
6710         PR target/30289
6711         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
6712         earlyclobber.
6713
6714 2007-04-07  Bruce Korb  <bkorb@gnu.org>
6715
6716         * c.opt: Add -Wformat-contains-nul.
6717         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
6718           -Wformat setting.
6719         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
6720         the NUL byte warning.
6721
6722 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
6723
6724         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
6725
6726 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
6727
6728         * tree.c (staticp): No longer use staticp langhook.
6729         * langhooks.c (lhd_staticp): Removed.
6730         * langhooks.h (struct lang_hooks): Remove staticp.
6731         * c-common.c (c_staticp): Remove.
6732         * c-common.h (c_staticp): Ditto.
6733         * langhooks-defs.h (lhd_staticp): Ditto.
6734         (LHD_HOOKS_STATICP): Ditto
6735         * tree.h (gcc_assert_lowered): New macro.
6736
6737 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
6738
6739         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
6740         argument "reliable".
6741         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
6742         Add argument "reliable".  Propagate it through calls.
6743         (infer_loop_bounds_from_undefined):  Derive number of iterations
6744         estimates from references in blocks that do not dominate loop latch.
6745         (gcov_type_to_double_int): New function.
6746         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
6747         and expected_loop_iterations_unbounded.
6748         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
6749         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
6750         * tree-data-ref.c (estimated_loop_iterations): Export.
6751         (get_references_in_stmt): Fix -- do not return addresses of local
6752         objects.
6753         * cfgloop.h (expected_loop_iterations_unbounded,
6754         estimated_loop_iterations): Declare.
6755
6756 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
6757
6758         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
6759
6760 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
6761
6762         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
6763         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
6764         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
6765         Use output_387_reg_move().
6766         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
6767         expander using X87MODEF12 mode macro.
6768         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
6769         choosing register preferences.  Use output_387_reg_move().
6770         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
6771         instead of "x".  Use output_387_reg_move().
6772         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
6773         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
6774         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
6775         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
6776         Use output_387_reg_move().
6777         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
6778         mode macro.
6779         (*truncxf?f_i387 splitter): Ditto.
6780
6781 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
6782
6783         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
6784         LANG_HOOKS_SAFE_FROM_P.
6785         * expr.c (safe_from_p): Remove langhook call.
6786         * langhooks.h (lang_hooks): Remove safe_from_p.
6787         (lhd_safe_from_p): Remove prototype.
6788         * langhooks.c (lhd_safe_from_p): Remove.
6789
6790 2007-04-06  Jan Hubicka  <jh@suse.cz>
6791
6792         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
6793         functions.
6794
6795 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
6796
6797         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
6798         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
6799         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
6800         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
6801         alternative.
6802         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
6803         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
6804
6805 2007-04-05  Richard Henderson  <rth@redhat.com>
6806
6807         * config/alpha/alpha.c (print_operand) [+]: Remove.
6808         (alpha_end_function): Print nop if call at end of function.
6809         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
6810         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
6811         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
6812         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
6813         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
6814         the call pattern. Update peepholes to match.
6815
6816 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
6817
6818         * doc/extend.texi (Other Builtins): Add decimal float variants
6819         of signbit.
6820         * builtins.def: Ditto.
6821         * builtins.c (expand_builtin): Ditto.
6822
6823 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
6824             H.J. Lu  <hongjiu.lu@intel.com>
6825
6826         PR target/31478
6827         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
6828         of V8HImode when calling ix86_binary_operator_ok.
6829         (sse2_pmaddwd): Call ix86_binary_operator_ok.
6830         (sdot_prodv8hi): Operands 1 and 2 must be register.
6831
6832 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
6833
6834         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
6835         initialize align to silence bogus warning.
6836
6837 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
6838
6839         PR middle-end/22156
6840         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
6841         all_no_warning.
6842         (struct sra_walk_fns): Remove use_all parameter from use.
6843         (sra_hash_tree): Handle BIT_FIELD_REFs.
6844         (sra_elt_hash): Don't hash bitfld blocks.
6845         (sra_elt_eq): Skip them in parent compares as well.  Handle
6846         BIT_FIELD_REFs.
6847         (sra_walk_expr): Don't maintain or pass down use_all_p.
6848         (scan_use): Remove use_all parameter.
6849         (scalarize_use): Likewise.  Re-expand assignment to
6850         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
6851         output, and re-scalarize after output.  Don't mark anything
6852         for no warning.
6853         (scalarize_ldst): Adjust.
6854         (scalarize_walk_gimple_modify_statement): Likewise.
6855         (build_element_name_1): Handle BIT_FIELD_REFs.
6856         (instantiate_element): Don't warn for any element whose parent
6857         is used as a whole.
6858         (instantiate_missing_elements_1): Return the sra_elt.
6859         (canon_type_for_field): New.
6860         (try_instantiate_multiple_fields): New.
6861         (instantiate_missing_elemnts): Use them.
6862         (mark_no_warning): Removed.
6863         (generate_one_element_ref): Handle BIT_FIELD_REFs.
6864         (REPLDUP, sra_build_elt_assignment): New.
6865         (generate_copy_inout): Use them.
6866         (generate_element_copy): Likewise.  Handle bitfld differences.
6867         (generate_element_zero): Don't recurse for blocks.  Use
6868         sra_build_elt_assignment.
6869         (generate_one_element_int): Take elt instead of var.  Use
6870         sra_build_elt_assignment.
6871         (generate_element_init_1): Adjust.
6872         (scalarize_use, scalarize_copy): Use REPLDUP.
6873         (scalarize_ldst): Move assert before dereference.
6874         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
6875
6876 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
6877
6878         * regmove.c: Fix unused variable warnings due to previous commit.
6879
6880 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
6881
6882         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
6883         (regmove_bb_head): Remove.
6884         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
6885         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
6886         problems with fixup_match_1.
6887         Don't initialize/free regmove_bb_head.
6888
6889         (reg_is_remote_constant_p): If an insn is in the same basic block
6890         but not before INSN, consider it remote, too.
6891
6892 2007-04-05  Anatoly Sokolov <aesok@post.ru>
6893
6894         PR target/25448
6895         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
6896         DECL_ASSEMBLER_NAME, not the DECL_NAME.
6897
6898 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
6899
6900         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
6901         (CONDITIONAL_REGISTER_USAGE): Likewise.
6902
6903 2007-04-04  Richard Henderson  <rth@redhat.com>
6904
6905         * config/alpha/lib1funcs.asm: Remove unused file.
6906
6907 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
6908
6909         PR other/31356
6910         * opts.c (print_specific_help): Fix --help=<language>
6911         header line.
6912         (common_handle_option): Support --help=common.
6913
6914 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
6915
6916         PR other/31353
6917         * gcc.c (main): Do not run the linker if
6918         print_subprocess_help indicates that it shouldn't be
6919         run.
6920
6921 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
6922
6923         PR doc/31355
6924         * doc/invoke.texi (--help=): Document <languages> value, fix
6925         formatting in tables of values.
6926
6927 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
6928
6929         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
6930         dllimport attribute of virtual methods.
6931
6932 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
6933
6934         * config/score/crti.asm: Change _bss_start to __bss_start.
6935         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
6936         (OUTGOING_REG_PARM_STACK_SPACE) update.
6937         * config/score/score.opt: add options to make backend support
6938         score5, score5u, score7 and score7d.
6939         * config/score/score.md: Likewise.
6940         * config/score/misc.md: Likewise.
6941         * config/score/mac.md: Likewise.
6942         * doc/invoke.texi: Likewise.
6943         * doc/md.texi: update constraints define.
6944
6945 2007-04-03  Richard Henderson  <rth@redhat.com>
6946
6947         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
6948         an appropriate type, use the mode instead.
6949
6950 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
6951
6952         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
6953         Set the default --with-arch setting to mips2.
6954         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
6955         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
6956         (MULTILIB_OSDIRNAMES): Delete.
6957         (MULTILIB_DIRNAMES): Define.
6958         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
6959         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
6960         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
6961         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
6962         VXWORKS_OS_CPP_BUILTINS.
6963         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
6964         (MIPS_DEBUGGING_INFO): Undefine.
6965         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
6966
6967 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
6968
6969         PR middle-end/30704
6970         * fold-const.c (native_encode_real): Encode real.c provided longs
6971         as a series of 32-bit native integers.
6972         (native_interpret_real): Interpret buffer as a series of 32-bit
6973         native integers.
6974
6975 2007-04-03  Richard Guenther  <rguenther@suse.de>
6976
6977         * genpreds.c (write_insn_constraint_len): Write function
6978         optimized for CONSTRAINT_LEN implementation.
6979         (write_tm_preds_h): Output insn_constraint_len inline and
6980         use it for CONSTRAINT_LEN.
6981         (write_insn_preds_c): Don't output insn_constraint_len.
6982         * doc/md.texi (define_register_constraint): Document multi-letter
6983         constraints shall have the same length if they start with the same
6984         letter.
6985
6986 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
6987
6988         PR target/31175
6989         * config/i386/i386.md (isinf<mode>2): Expand only when
6990         TARGET_C99_FUNCTIONS is set.
6991
6992 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
6993
6994         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
6995         (x86_64-*-linux*): Ditto.
6996         * config/i386/i386.opt (mpc): New option.
6997         * config/i386/i386.c (overrride_options): Handle
6998         ix87_precision_string.
6999         * config/i386/crtprec.c: New file.
7000         * config/i386/t-crtpc: Ditto.
7001         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
7002         and -mpc80 options.
7003         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
7004         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
7005         crtprec32.o, crtprec64.o and crtprec80.o.
7006
7007         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
7008         and -mpc80 options.
7009         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
7010
7011 2007-04-02  Eric Christopher  <echristo@apple.com>
7012
7013         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
7014         limitations on darwin.
7015
7016 2007-04-02  Anatoly Sokolov <aesok@post.ru>
7017
7018         PR target/31137
7019         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
7020
7021 2007-04-02  Dave Korn  <dave.korn@artimi.com>
7022
7023         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
7024
7025 2007-04-02  Dave Korn  <dave.korn@artimi.com>
7026
7027         * libgcc2.h (exception_descriptor): Don't forward-declare.
7028         (__get_eh_table_language, __get_eh_table_version): Delete
7029         prototypes of long-dead functions.
7030
7031 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
7032
7033         * ebitmap.h: New file
7034         * ebitmap.c: New file
7035         * Makefile.in (ebitmap.o): New target.
7036
7037 2007-04-01  Jan Hubicka  <jh@suse.cz>
7038
7039         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
7040         before very first instruction.
7041
7042 2007-04-01  Jan Hubicka  <jh@suse.cz>
7043
7044         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
7045         waring on 64bit hosts.
7046         * bitmap.h: Fix typo in bitmap_head_def.
7047
7048 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
7049
7050         PR rtl-optimization/31391
7051         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
7052         into a DELETED_LABEL note, and the label is in an empty basic
7053         block, update BB_END as well as BB_HEAD.
7054
7055 2007-04-01  Richard Henderson  <rth@redhat.com>
7056
7057         PR tree-optimization/31169
7058         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
7059         to varying if the range is outside [0,  prec-1].
7060
7061 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
7062
7063         PR target/31388
7064         * config/mips/mips.md (load_const_gp): New insn.
7065         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
7066         the MIPS16 GP pseudo register if no_new_pseudos.
7067         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
7068
7069 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7070
7071         PR target/31364
7072         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
7073         secureplt.
7074         (call_value): Likewise.
7075
7076 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
7077             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7078
7079         PR 14737
7080         * doc/invoke.texi: (optimization options): Reword description
7081         of -ffast-math. Document its primary purpose.
7082
7083 2007-03-31  Richard Guenther  <rguenther@suse.de>
7084
7085         * omp-low.c (splay-tree.h): Include.
7086         (lookup_decl): Replace splay-tree usage by pointer-map.
7087         (maybe_lookup_decl): Likewise.
7088         (new_omp_context): Likewise.
7089         (delete_omp_context): Likewise.
7090         * gimplify.c (splay-tree.h): Include.
7091         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
7092         pointer-map.
7093         (remap_ssa_name): Likewise.
7094         (remap_decl): Likewise.
7095         (remap_type_1): Likewise.
7096         (remap_type): Likewise.
7097         (copy_body_r): Likewise.
7098         (expand_call_inline): Likewise.
7099         (clone_body): Likewise.
7100         (copy_tree_r): Likewise.
7101         (remap_save_expr): Likewise.
7102         (unsave_r): Likewise.
7103         (unsave_expr_now): Likewise.
7104         (tree_function_versioning): Likewise.
7105         (build_duplicate_type): Likewise.
7106         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
7107         (struct copy_body_data): Replace splay-tree by pointer-map.
7108         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
7109         not $(SPLAY_TREE_H).
7110         (gimplify.o): Depend on $(SPLAY_TREE_H).
7111         (omp-low.p): Likewise.
7112
7113 2007-03-31  Anatoly Sokolov <aesok@post.ru>
7114
7115         * config/avr/predicates.md (even_register_operand,
7116         odd_register_operand): New predicates.
7117         * config/avr/avr.md (movw peephole2): New.
7118         (movw_r peephole2): New.
7119
7120 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
7121
7122         * tree.h (get_signed_or_unsigned_type): New.
7123         * fold-const.c (operand_equal_for_comparison_p): Use
7124         get_signed_or_unsigned_type instead of
7125         lang_hooks.types.signed_or_unsigned_type.
7126         * expr.c (store_expr): Ditto.
7127         * langhooks.c (get_signed_or_unsigned_type): New.
7128         (lhd_signed_or_unsigned_type): New.
7129         * langhooks.h (lhd_signed_or_unsigned_type): New.
7130         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
7131
7132 2007-03-30  Richard Henderson  <rth@redhat.com>
7133
7134         * tree-ssa-loop-ivopts.c: Include target.h.
7135         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
7136         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
7137         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
7138         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
7139
7140 2007-03-30  Richard Henderson  <rth@redhat.com>
7141             Kai Tietz  <kai.tietz@onevision.com>
7142
7143         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
7144         default for 64-bit.
7145         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
7146         (TARGET_64BIT_MS_ABI): New.
7147         (DBX_REGISTER_NUMBER): Handle 64-bit.
7148         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
7149         (LONG_TYPE_SIZE): Force to 32.
7150         (REG_PARM_STACK_SPACE): New.
7151         (OUTGOING_REG_PARM_STACK_SPACE): New.
7152         (REGPARM_MAX, SSE_REGPARM_MAX): New.
7153         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
7154         (STACK_BOUNDARY): Use 128 for 64-bit.
7155         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
7156         Add 64-bit implementation.
7157         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
7158         argument unused.
7159         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
7160         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
7161         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
7162         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
7163         (ix86_handle_cconv_attribute): Don't warn when ignoring if
7164         TARGET_64BIT_MS_ABI.
7165         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
7166         (ix86_pass_by_reference): Likewise.
7167         (ix86_function_value_regno_p): Likewise.
7168         (ix86_build_builtin_va_list): Likewise.
7169         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
7170         (function_arg_advance_ms_64): New.
7171         (function_arg_advance): Call it.
7172         (function_arg_ms_64): New.
7173         (function_arg): Call it.
7174         (function_value_ms_64): New.
7175         (ix86_function_value_1): Call it.
7176         (return_in_memory_ms_64): New.
7177         (ix86_return_in_memory): Call it.
7178         (setup_incoming_varargs_ms_64): New.
7179         (ix86_setup_incoming_varargs): Call it.
7180         (ix86_expand_prologue): Handle 64-bit stack probing.
7181         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
7182         (output_pic_addr_const): Likewise.
7183         (x86_this_parameter): Likewise.
7184         (x86_output_mi_thunk): Likewise.
7185         (x86_function_profiler): Likewise.
7186         (TARGET_STRICT_ARGUMENT_NAMING): New.
7187         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
7188         (TARGET_64BIT_MS_ABI): New.
7189         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
7190         * config/i386/i386.md (allocate_stack_worker): Remove.
7191         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
7192         describe the clobber of eax without a match_scratch.
7193         (allocate_stack_worker_postreload): Remove.
7194         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
7195         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
7196         (allocate_stack_worker_rex64_postreload): Remove.
7197         (allocate_stack): Handle 64-bit.
7198         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
7199         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
7200         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
7201         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
7202         (STANDARD_STARTFILE_PREFIX_1): Likewise.
7203         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
7204         * config.build (x86_64-*-mingw*): New host.
7205         * config.host (x86_64-*-mingw*): New host.
7206         * config.gcc (x86_64-*-mingw*): New target.
7207         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
7208
7209 2007-03-30  Richard Henderson  <rth@redhat.com>
7210             Kai Tietz  <kai.tietz@onevision.com>
7211
7212         * c-pragma.c (struct def_pragma_macro_value): New.
7213         (struct def_pragma_macro): New.
7214         (pushed_macro_table): New.
7215         (dpm_hash, dpm_eq): New.
7216         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
7217         (init_pragma): Install them.
7218         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
7219
7220 2007-03-30  Anatoly Sokolov <aesok@post.ru>
7221
7222         * config/avr/avr.c (avr_override_options): Clear
7223         'flag_delete_null_pointer_checks'.
7224
7225 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
7226
7227         PR c++/26099
7228         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
7229         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
7230         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
7231         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
7232         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
7233         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
7234         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
7235         C++ extensions.
7236         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
7237
7238 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
7239
7240         * regmove.c: Move all of pass_stack_adjustments from here...
7241         * combine-stack-adj.c: ...to this new file.
7242         * Makefile.in: Add rules for combine-stack-adj.o.
7243
7244 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
7245
7246         PR tree-optimization/31383
7247         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
7248         to have the same length.
7249
7250 2007-03-30  Jan Hubicka  <jh@suse.cz>
7251
7252         PR middle-end/30700
7253         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
7254         availablility; add more sanity checking; ask varpool only about
7255         VAR_DECL.
7256
7257 2007-03-29  Richard Henderson  <rth@redhat.com>
7258
7259         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
7260         to decide, but __SIZEOF_LONG_LONG__.
7261
7262 2007-03-29  Richard Henderson  <rth@redhat.com>
7263
7264         * emutls.c (struct __emutls_array): New.
7265         (emutls_destroy): Use it instead of casting element 0 from void*.
7266         (__emutls_get_address): Likewise.
7267
7268 2007-03-29  Richard Henderson  <rth@redhat.com>
7269
7270         * varasm.c (initializer_constant_valid_p): Don't deny
7271         DECL_DLLIMPORT_P on functions.
7272
7273         * config/i386/cygming.h: Remove function declarations.
7274         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
7275         (ASM_OUTPUT_LABELREF): Remove.
7276         (COMMON_ASM_OP): Remove.
7277         (ASM_OUTPUT_COMMON): Remove.
7278         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
7279         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
7280         (ASM_DECLARE_FUNCTION_NAME): Likewise.
7281         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
7282         Rename from TARGET_ENCODE_SECTION_INFO.
7283         * config/i386/netware.h: Likewise.
7284         * config/i386/i386-protos.h: Update.
7285         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
7286         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
7287         (legitimate_constant_p): Reject dllimports.
7288         (dllimport_map, get_dllimport_decl): New.
7289         (legitimize_dllimport_symbol): New.
7290         (legitimize_address, ix86_expand_move): Use it.
7291         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
7292         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
7293         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
7294         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
7295         * config/i386/predicates.md (constant_call_address_operand): Only
7296         accept symbols; reject dllimport_p symbols.
7297         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
7298         i386_pe_maybe_record_exported_symbol.
7299         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
7300         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
7301         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
7302         trust the setting of DECL_DLLIMPORT_P.
7303         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
7304         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
7305         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
7306         tidy the argument scanning loop.
7307         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
7308         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
7309         (i386_pe_strip_name_encoding): Remove.
7310         (i386_pe_binds_local_p): New.
7311         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
7312         (i386_pe_output_labelref): Remove.
7313         (i386_pe_asm_output_aligned_decl_common): New.
7314         (i386_pe_maybe_record_exported_symbol): Rename from
7315         i386_pe_record_exported_symbol; check for dllexported symbols.
7316
7317 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
7318
7319         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
7320         add comment explaining why vsnprintf cannot be used.
7321
7322 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
7323
7324         PR tree-optimization/30666
7325         * tree.c (build_complex_type): When creating type names for DWARF2
7326         debug info, create TYPE_DECLs for TYPE_NAME instead of
7327         IDENTIFIER_NODEs.
7328         (build_common_tree_nodes_2): Use build_complex_type when building
7329         predefined complex types, to preserve canonical types.
7330
7331 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
7332
7333         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
7334         (noce_get_alt_condition): Look at it to determine whether to
7335         reverse the condition or not.
7336         (noce_get_condition): Substitute the truth for lies.
7337         (noce_find_if_block): Set the then_else_reversed field.
7338
7339 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
7340
7341         * config/fr30/fr30.md (movdi): Do not accept immediates as the
7342         destination of this insn.
7343         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
7344         than calling gen_rtx_SET directly.  Use r0 to hold the value of
7345         'address + 4' rather than a stack based temporary which can be
7346         mis-optimized away.
7347
7348 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
7349
7350         * config/s390/s390.c (s390_secondary_input_reload_class,
7351         s390_secondary_output_reload_class): Functions removed.
7352         (s390_secondary_reload): New function.
7353         (TARGET_SECONDARY_RELOAD): Target macro defined.
7354         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
7355         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
7356         * config/s390/s390.md ("reload_outti", "reload_outdi",
7357         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
7358         "reload_out<mode>"): Expanders removed.
7359         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
7360         "reload<mode>_nonoffmem_out"): Expanders added.
7361
7362 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
7363
7364         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
7365         SRC->DEST replacement failed anyway.
7366
7367 2007-03-28  Mike Stump  <mrs@apple.com>
7368
7369         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
7370         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
7371         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
7372
7373 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7374
7375         * config.gcc: Accept barcelona as a variant of amdfam10.
7376         * config/i386/i386.c (override_options): Likewise.
7377         * doc/invoke.texi: Likewise.
7378
7379 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
7380
7381         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
7382         offsets for BIT_FIELD_REF and COMPONENT_REF.
7383
7384 2007-03-28  Richard Guenther  <rguenther@suse.de>
7385
7386         * tree.c (is_global_var): Move ...
7387         * tree-flow-inline.h (is_global_var): ... here.
7388         * tree.h (is_global_var): Remove declaration.
7389
7390 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
7391
7392         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
7393         option.
7394         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
7395         * config/i386/i386.c (ix86_tune_features): Initialize new
7396         tuning option.
7397         * config/i386/predicates.md (promotable_binary_operator): Use
7398         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
7399
7400 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
7401
7402         PR target/31380
7403         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
7404
7405 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
7406
7407         * config/fr30/fr30.md (movsi_internal): Change destination
7408         constraint from m to V and add m to the end.
7409
7410 2007-03-28  Christian Bruel  <christian.bruel@st.com>
7411
7412         * config/sh/sh.md (movsi_i): Fix type attribute.
7413
7414 2007-03-28  Christian Bruel  <christian.bruel@st.com>
7415
7416         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
7417         (movsf_ie): Likewise.
7418
7419 2007-03-28  Christian Bruel  <christian.bruel@st.com>
7420
7421         * config.gcc: Add sh4-300 to multilib.
7422         * config/sh/t-mlib-sh4-300: New file.
7423
7424 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
7425
7426         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
7427         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
7428         fix_trunc<mode>di2.
7429         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
7430         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
7431         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
7432         "fixuns_trunctddi2"): Whitespace fix.
7433
7434 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
7435
7436         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
7437         the definition of struct sh_args.
7438         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
7439         CALL_COOKIE_INT_REG_GET): Likewise.
7440
7441 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
7442
7443         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
7444         transformations are applied successfully.
7445
7446 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
7447
7448         * tree.c (tree_contains_struct): Permit 512 tree codes.
7449         * tree.h (tree_contains_struct): Ditto.
7450         (MAX_TREE_CODES): Ditto.
7451         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
7452         SPARE member to store remaining padding bits.
7453
7454 2007-03-27  Anatoly Sokolov <aesok@post.ru>
7455
7456         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
7457         architecture.
7458
7459 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
7460
7461         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
7462         * configure: Regenerate.
7463
7464         * configure: Regenerate using the correct version of autoconf.
7465
7466 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
7467
7468         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
7469         pointer regs.
7470         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
7471         regs to "__SP_L__" and "__SP_H__".
7472
7473 2007-03-27  Richard Guenther  <rguenther@suse.de>
7474
7475         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
7476         computations with it with a HOST_WIDE_INT variable.
7477
7478 2007-03-26  Mike Stump  <mrs@apple.com>
7479
7480         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
7481         objective-c-header, objective-c++-header and objc++-cpp-output
7482         support.
7483         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
7484
7485 2007-03-26  Richard Henderson  <rth@redhat.com>
7486
7487         PR target/31361
7488         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
7489         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
7490         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
7491         IX86_BUILTIN_PSRLQ128): New.
7492         (ix86_init_mmx_sse_builtins): Add them.
7493         (ix86_expand_builtin): Expand them.
7494         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
7495         operand 2 be TImode.
7496         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
7497         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
7498         _mm_srli_epi64): Mark __B const.
7499         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
7500         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
7501         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
7502         new two-vector shift builtins.
7503
7504 2007-03-26  Ian Lance Taylor  <iant@google.com>
7505
7506         PR tree-optimization/31345
7507         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
7508         [+INF, +INF(OVF)] into VARYING.
7509
7510 2007-03-26  Zack Weinberg  <zackw@panix.com>
7511
7512         * gengtype-parse.c: New file.
7513         * gengtype-yacc.y: Delete.
7514         * gengtype-lex.l: Don't include gengtype-yacc.h.
7515         Define YY_DECL and yyterminate appropriately for recursive
7516         descent parser.  yylval is now a string out-parameter to yylex.
7517         (HWS, EOID): New shorthand.
7518         (IWORD): Add a couple more types.
7519         (yylex): Add a setup stanza.  Remove the complex rules for
7520         detecting GTY'ed types and typedefs; replace with simple
7521         keyword detectors.  Adjust everything for the changed
7522         definition of yylval.  Ignore all pp-directives, not just #define.
7523         (yyerror): Delete.
7524         (parse_file): Rename yybegin; do not call yyparse.
7525         (yyend): New.
7526         * gengtype.c (xasprintf): Export again.
7527         (this_file): New.  Use everywhere __FILE__ was being used.
7528         (get_lang_bitmap): Special case types defined in gengtype.c.
7529         (do_typedef, new_structure): Suppress definition of certain types.
7530         (new_structure): Improve diagnostics of duplicate definitions.
7531         Make sure location_s is associated with input.h.
7532         (nreverse_pairs, define_location_structures): New functions.
7533         (main): Improve tagging of kludge types.  Remove old kludges
7534         for input.h types; use define_location_structures.
7535         * gengtype.h: Update prototypes.  Define token codes here.
7536         * Makefile.in: Remove all references to gengtype-yacc.
7537         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
7538         and gengtype.
7539         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
7540         add GTY((skip)) to the field that's only conditionally there.
7541         * doc/install.texi: Document that Bison is no longer required
7542         unless building treelang.
7543
7544         * gengtype.c: Don't include gtyp-gen.h.
7545         (srcdir): Declare here.
7546         (base_files, lang_dir_names): Allocate dynamically.
7547         (gt_files, num_gt_files, num_lang_dirs): New globals.
7548         (measure_input_list, read_input_line, read_input_list)
7549         (set_lang_bitmap): New functions.
7550         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
7551         simplify, relying on read_input_list to set up the bitmaps.
7552         (main): Arguments are no longer unused.  Check for correct number
7553         of command line arguments, set srcdir and srcdir_len, then call
7554         read_input_list, before doing anything else.  No need to worry
7555         about duplicates in main loop.
7556         * configure.ac: Simplify the calculation of all_gtfiles.
7557         Put language tags in there.  Don't set or substitute
7558         all_gtfiles_files_langs or all_gtfiles_files_frags.
7559         * Makefile.in: Revamp the way gengtype is invoked, now that it
7560         takes a file on its command line with a much simpler format.
7561         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
7562         (GTFILES): Remove duplicates and C source files.
7563         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
7564         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
7565         * configure: Regenerate.
7566
7567         * gengtype.h: Remove all type definitions to gengtype.c; leave
7568         only definitions of options_p, type_p, and pair_p as opaque
7569         pointers.  Update prototypes.
7570         * gengtype.c: Many type definitions moved here from gengtype.h.
7571         Consolidate type definitions at the top of the file.
7572         (xvasprintf): Delete.
7573         (xasprintf): Make static.
7574         (create_nested_pointer_option): Add 'next' parameter.
7575         (create_field_all, create_field_at): New functions.
7576         (create_field): Now a thin wrapper around create_field_all.
7577         (create_optional_field): Rename create_optional_field_ and add
7578         line argument.  Original name is now a macro which supplies
7579         __LINE__.
7580         (oprintf): Use vsnprintf directly.
7581         (close_output_files): Use fatal rather than perror/exit.
7582         (note_def_vec, note_def_vec_alloc): Use create_field_at.
7583         (main): Set progname.  Don't use exit.
7584         * gengtype-yacc.y (struct_fields): Use create_field_at.
7585         (option, optionseqopt): Delete.
7586         (optionseq): Consolidate productions from option here so we
7587         can use the first argument to create_option.
7588
7589         * gengtype-lex.l: Distinguish unions from structures in the
7590         token type.  Don't call find_structure; return the tag as a string.
7591         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
7592         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
7593         Reorganize typedef_struct production accordingly.
7594         Use create_nested_ptr_option.
7595         * gengtype.c (create_nested_ptr_option): New function.
7596         * gengtype.h: Declare it.
7597
7598         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
7599         (string_type): Don't declare.
7600         (do_scalar_typedef): Declare.
7601         (create_scalar_type): Update prototype.
7602         * gengtype.c (string_type): Make static.
7603         (scalar_nonchar, scalar_char): New.
7604         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
7605         (resolve_typedef): Use scalar_nonchar for error recovery.
7606         (create_scalar_type): Remove name_len field.  Return scalar_char
7607         or scalar_nonchar as appropriate.
7608         (adjust_field_type): Look at scalar_is_char boolean to decide whether
7609         to use string_type.
7610         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
7611         whenever possible.
7612         (main): Initialize scalar_char and scalar_nonchar before calling
7613         gen_rtx_next.
7614         * gengtype-lex.l: Adjust for removal of second argument to
7615         create_scalar_type.  Use yylval.s instead of yylval.t when
7616         returning SCALAR.
7617         * gengtype-yacc.y: Type of SCALAR is string.  Call
7618         create_scalar_type from type:SCALAR rule.  Adjust for removal of
7619         second argument to create_scalar_type.
7620
7621         * vec.h: Remove all #if IN_GENGTYPE blocks.
7622         Add comment saying that changes may require adjustments to gengtype.
7623         * gengtype.c: Don't include coretypes.h or tm.h.
7624         Add comment to inclusion of errors.h.
7625         (note_def_vec, note_def_vec_alloc): New functions.
7626         * gengtype.h: Declare new functions.
7627         * gengtype-lex.l: Don't include coretypes.h.
7628         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
7629         Delete.
7630         (update_lineno): Remove unnecessary prototype.
7631         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
7632         (VEC rule): Just return VEC_TOKEN.
7633         * gengtype-yacc.y (VEC_TOKEN): New token type.
7634         (type): Add a production for VEC(a,b).
7635         * Makefile.in: Update dependencies.
7636
7637         * gengtype-lex.l: Remove rules for parsing pointer-to-function
7638         typedefs that use the old PARAMS macro.
7639
7640         * gengtype-lex.l: Remove all rules and states relating to yacc
7641         input files.
7642         * gengtype-yacc.y: Similarly.
7643         * gengtype.c (note_yacc_type): Delete function.
7644         * gengtype.h: Update prototypes.
7645
7646 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
7647
7648         * tree-pretty-print.c (dump_generic_node): Report precision of
7649         unnamed integer types.
7650
7651 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
7652
7653         * ifcvt.c (noce_try_store_flag_constants): Don't check
7654         no_new_pseudos here.
7655         (noce_try_store_flag_constants): Don't check no_new_pseudos.
7656         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
7657         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
7658         noce_try_sign_mask): Likewise.
7659         (if_convert): Check no_new_pseudos here.
7660
7661         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
7662         Remove prototypes.
7663         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
7664         (noce_get_condition): Handle new then_else_reversed argument.
7665         (noce_init_if_info): Remove, fold into noce_find_if_block.
7666         (noce_process_if_block): Take a struct noce_if_info as the
7667         argument.  Don't set up one based on ce_if_info.  Update pointer
7668         references accordingly.
7669         (cond_move_process_if_block): Likewise.
7670         (process_if_block): Removed.
7671         (find_if_block): Removed.  Move functionality two new functions,
7672         noce_find_if_block and cond_exec_find_if_block.
7673         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
7674         blocks and the symmetric IF-ELSE-JOIN case.
7675         (cond_exec_find_if_block): Also new function mostly based on old
7676         find_if_block and process_if_block.
7677         (find_if_header): Replace find_if_block call with separately
7678         guarded calls to noce_find_if_block and cond_exec_find_if_block.
7679         (find_cond_trap): Update noce_get_condition call.
7680         (dead_or_predicable): Likewise.
7681
7682 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
7683
7684         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
7685         Remove.
7686         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
7687         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
7688         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
7689         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
7690         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
7691         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
7692         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
7693         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
7694         __builtin_ia32_psrad128 builtins.
7695
7696 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
7697
7698         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
7699         * config/i386/constraints.md
7700         (define_constraint "I"): Use IN_RANGE macro.
7701         (define_constraint "J"): Ditto.
7702         (define_constraint "K"): Ditto.
7703         (define_constraint "M"): Ditto.
7704         (define_constraint "N"): Ditto.
7705         (define_constraint "O"): Ditto.
7706         * config/i386/predicates.md
7707         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
7708         (define_predicate "const_0_to_3_operand"): Ditto.
7709         (define_predicate "const_0_to_7_operand"): Ditto.
7710         (define_predicate "const_0_to_15_operand"): Ditto.
7711         (define_predicate "const_0_to_63_operand"): Ditto.
7712         (define_predicate "const_0_to_255_operand"): Ditto.
7713         (define_predicate "const_1_to_31_operand"): Ditto.
7714         (define_predicate "const_2_to_3_operand"): Ditto.
7715         (define_predicate "const_4_to_7_operand"): Ditto.
7716
7717 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
7718
7719         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
7720         in SImode for save_world.
7721         * config/rs6000/altivec.md (save_world, restore_world): Convert to
7722         LR hard reg.
7723
7724 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
7725
7726         PR tree-optimization/30784
7727         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
7728         BIT_FIELD_REF.
7729
7730 2007-03-25  Revital Eres  <eres@il.ibm.com>
7731
7732         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
7733           Fold movement_possibility function into it.
7734
7735 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
7736
7737         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
7738         (load_macho_picbase_{si,di}): Convert to LR hard reg.
7739         (call_indirect_nonlocal_darwin64): Same.
7740         (call_nonlocal_darwin64): Same.
7741         (call_value_indirect_nonlocal_darwin64): Same.
7742         (call_value_nonlocal_darwin64): Same.
7743         (sibcall_nonlocal_darwin64): Same.
7744         (sibcall_value_nonlocal_darwin64): Same.
7745         (sibcall_symbolic_64): Same.
7746         (sibcall_value_symbolic_64): Same.
7747         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
7748         LR pseudo.
7749         (rs6000_emit_load_toc_table): Same.
7750         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
7751         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
7752         (mull_call): Same.
7753         (divss_call): Same.
7754         (divus_call): Same.
7755         (quoss_call): Same.
7756         (quous_call): Same.
7757         (load_toc_v4_pic_si): Same
7758         (load_toc_v4_PIC_1): Same.
7759         (load_toc_v4_PIC_1b): Same.
7760         (call_indirect_aix{32,64}): Same.
7761         (call_value_indirect_aix{32,64}): Same.
7762         (call): Same.
7763         (call_value): Same.
7764         (call_local{32,64}): Same.
7765         (call_value_local{32,64}): Same.
7766         (call_indirect_nonlocal_aix{32,64}): Same.
7767         (call_nonlocal_aix{32,64}): Same.
7768         (call_value_indirect_nonlocal_aix{32,64}): Same.
7769         (call_value_nonlocal_aix{32,64}): Same.
7770         (call_indirect_nonlocal_sysv<mode>): Same.
7771         (call_nonlocal_sysv<mode>): Same.
7772         (call_value_indirect_nonlocal_sysv<mode>): Same.
7773         (call_value_nonlocal_sysv<mode>): Same.
7774         (sibcall): Same.
7775         (sibcall_local{32,64}): Same.
7776         (sibcall_value_local{32,64}): Same.
7777         (sibcall_nonlocal_aix{32,64}): Same.
7778         (sibcall_value_nonlocal_aix{32,64}): Same.
7779         (sibcall_nonlocal_sysv<mode>): Same.
7780         (sibcall_value): Same.
7781         (sibcall_value_nonlocal_sysv<mode>): Same.
7782
7783 2007-03-24  Paul Brook  <paul@codesourcery.com>
7784
7785         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
7786         * config/arm/linux-eabi.h: Remove legacy syscall hack.
7787
7788 2007-03-24  Richard Henderson  <rth@redhat.com>
7789
7790         * config/ia64/constraints.md: New file.
7791         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
7792         satisfies_constraint_?.
7793         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
7794         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
7795         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
7796         ia64_output_mi_thunk): Likewise.
7797         (ia64_const_ok_for_letter_p): Remove.
7798         (ia64_const_double_ok_for_letter_p): Remove.
7799         (ia64_extra_constraint): Remove.
7800         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
7801         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
7802         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
7803         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
7804         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
7805         EXTRA_MEMORY_CONSTRAINT): Remove.
7806         * config/ia64/ia64.md: Include constriants.md.  Replace
7807         CONST_OK_FOR_? with satisfies_constraint_?.
7808
7809 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
7810             H.J. Lu  <hongjiu.lu@intel.com>
7811
7812         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
7813         DPD or BID name.
7814         (name macros): Use DPD_BID_NAME to convert names properly.
7815
7816         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
7817         decimal floating point format.
7818         (init_floating_libfuncs): Change decimal functions so that they
7819         have a "bid_" prefix if the decimal system uses the BID format,
7820         and "dpd_" prefix if the decimal system uses the DPD format.
7821         (init_interclass_conv_libfuncs): Ditto.
7822         (init_intraclass_conv_libfuncs): Ditto.
7823
7824         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
7825         using the BID format.
7826
7827         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
7828         whether we are using the BID decimal format.
7829         * configure: Regenerate.
7830
7831         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
7832         the compiler has decimal floating point enabled.  Define
7833         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
7834         instead of DPD.
7835
7836         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
7837         using the BID format.
7838
7839         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
7840         whether we are using the BID decimal format.
7841         * configure: Regenerate.
7842
7843         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
7844         the compiler has decimal floating point enabled.  Define
7845         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
7846         instead of DPD.
7847
7848         * doc/install.texi (--enable-decimal-float): Document BID and DPD
7849         options, and that it is enabled for i386/x86_64 systems.
7850
7851         * Makefile.in (enable_decimal_float): New.
7852         (DECNUMFMT): New.
7853         (DECNUMINC): Add  -I$(DECNUMFMT).
7854         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
7855         to $(DECNUMFMT) from $(DECNUM).
7856
7857         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
7858         Substitute enable_decimal_float.
7859         * configure: Regenerated.
7860
7861         PR other/30529
7862         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
7863         unsigned long.
7864
7865         * configure.ac: Enable decimal float for x86_64-*-linux*.
7866         * configure: Regenerated.
7867
7868         PR other/30530
7869         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
7870         decimal128ClearSign to flip and clear the sign bit in decimal128.
7871         (decimal_real_maxval): Set decimal128SetSign to set the sign
7872         bit in decimal128.
7873
7874 2007-03-23  Ian Lance Taylor  <iant@google.com>
7875
7876         * fold-const.c (fold_binary): Correct warning for X - c >= X.
7877
7878 2007-03-23  Ian Lance Taylor  <iant@google.com>
7879
7880         * tree-dump.c (dump_files): Correct comment.
7881
7882 2007-03-23  Ian Lance Taylor  <iant@google.com>
7883
7884         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
7885
7886 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
7887
7888         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
7889         in cfglayout mode.  Don't go into and out of cfglayout mode.
7890         Link the blocks in the order of the constructed traces.
7891         (rest_of_handle_tracer): Adjust call to tracer.
7892         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
7893         Don't go into cfglayout mode.
7894         (rtl_loop_done): Don't go out of cfglayout mode.
7895         * cfglayout.c (relink_block_chain): New function, split out from...
7896         (fixup_reorder_chain): ...here.  Remove redundant checking.
7897         (cfg_layout_finalize): Don't clear the header, footer, and aux
7898         fields here, move the code to do so to relink_block_chain.  Likewise
7899         for free_original_copy_tables.
7900         * rtl.h (tracer): Update prototype.
7901         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
7902         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
7903         mode.  Use relink_block_chain to serialize the CFG according to the
7904         new basic block order.  Move targetm.cannot_modify_jumps_p check from
7905         here...
7906         (gate_handle_reorder_blocks): ...to here.
7907         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
7908         from here...
7909         (gate_duplicate_computed_gotos): ...to here.
7910         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
7911         something always changes when going into and out of cfglayout mode.
7912         Perform an expensive cfg cleanup while going into cfglayout mode.
7913         Always update liveness information on HAVE_conditional_execution
7914         targets.  Reserialize the basic blocks and go out of cfglayout mode.
7915         * reg-stack.c: Include cfglayout.h.
7916         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
7917         the call to reorder_basic_blocks.
7918         * basic-block.h (reorder_basic_blocks): Update prototype.
7919         (relink_block_chain): New prototype.
7920         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
7921
7922 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
7923
7924         * config/mips/mips.md (type, hazard, *movdi_32bit,
7925         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
7926         *movhi_internal, *movqi_internal, *movsf_hardfloat,
7927         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
7928         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
7929         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
7930         applicable.
7931         (movcc): Change first xfer to multi.
7932         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
7933         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
7934         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
7935         config/mips/generic.md: Change reservations using "xfer" to use
7936         "mfc,mtc".
7937         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
7938         using match_operand.
7939         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
7940         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
7941         examining mode.
7942         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
7943
7944 2007-03-22  Richard Henderson  <rth@redhat.com>
7945
7946         * config/i386/i386.c: Remove unnecessary function declarations.
7947         Move targetm definition, and all related macros, to the end of
7948         the file.  Resort some functions to put definitions before uses.
7949         (ix86_attribute_table): Make static.  Move to end of file.
7950         (ix86_gimplify_va_arg): Make static.
7951
7952 2007-03-22  Richard Henderson  <rth@redhat.com>
7953
7954         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
7955         don't increase local_regparm with force_align_arg_pointer check.
7956         (ix86_function_sseregparm): Assert 32-bit.
7957         (type_has_variadic_args_p): New.
7958         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
7959         type_has_variadic_args_p.
7960         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
7961         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
7962         use memset instead.  Do maybe_vaarg check first; skip attribute
7963         tests if true; skip attribute tests for 64-bit.
7964         (construct_container): Remove TARGET_DEBUG_ARG.
7965         (function_arg_advance_32, function_arg_advance_64): Split out ...
7966         (function_arg_advance): ... from here.
7967         (function_arg_32, function_arg_64): Split out ...
7968         (function_arg): ... from here.
7969         (ix86_pass_by_reference): Tidy.
7970         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
7971         (function_value_32): New, from parts of ix86_function_value
7972         and ix86_value_regno.
7973         (function_value_64): New, from parts of ix86_function_value
7974         and ix86_libcall_value.
7975         (ix86_function_value_1): New.
7976         (ix86_function_value, ix86_libcall_value): Use it.
7977         (return_in_memory_32, return_in_memory_64): Split out ...
7978         (ix86_return_in_memory): ... from here.
7979         (ix86_struct_value_rtx): Skip for 64-bit.
7980         (ix86_libcall_value, ix86_value_regno): Remove.
7981         (setup_incoming_varargs_64): Split out ...
7982         (ix86_setup_incoming_varargs): ... from here.
7983         (ix86_va_start): Remove TARGET_DEBUG_ARG.
7984         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
7985         * config/i386/i386-protos.h (ix86_function_value): Remove.
7986         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
7987
7988 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7989
7990         PR other/23572
7991         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
7992         infinities not supported, otherwise emit warning if -Woverflow. On
7993         underflow, emit warning if -Woverflow.
7994         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
7995         and 0 otherwise.
7996         * real.h (real_from_string): Update declaration
7997
7998 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
7999             Richard Henderson  <rth@redhat.com>
8000
8001         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
8002         * calls.c (compute_argument_block_size, expand_call,
8003         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
8004         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
8005         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
8006         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
8007         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
8008         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
8009         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
8010         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
8011         Set to 1.
8012
8013 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
8014
8015         * c-incpath.c (add_sysroot_to_chain): New.
8016         (merge_include_chains): Add sysroot argument.  Call
8017         add_sysroot_to_chain if sysrooted.
8018         (register_include_chains): Update call to merge_include_chains.
8019         * doc/cppopts.texi: Document use of '=' in include directory
8020         arguments.
8021
8022 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
8023
8024         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
8025         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
8026         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
8027         insn pattern using X87MODEF12 mode macro.
8028
8029 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
8030
8031         * regmove.c (regmove_optimize): Use reg_mentioned_p
8032         instead of reg_overlap_mentioned_p for DST.
8033
8034 2007-03-21  Mike Stump  <mrs@apple.com>
8035
8036         * c.opt: Fixup for Objective-C/C++.
8037
8038 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
8039
8040         * explow.c (convert_memory_address): Fold memory reference when
8041         POINTERS_EXTEND_UNSIGNED < 0
8042
8043 2007-03-21  Richard Henderson  <rth@redhat.com>
8044
8045         PR target/31245
8046         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
8047         * config/i386/mmintrin.h (__m64): Likewise.
8048         * config/i386/xmmintrin.h (__m128): Likewise.
8049
8050 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8051
8052         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
8053         (VXWORKS_OS_CPP_BUILTINS): Define.
8054         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
8055         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
8056
8057 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8058
8059         * rtl.h (constant_pool_reference_p): Delete.
8060         (find_constant_src): Declare.
8061         * rtlanal.c (find_constant_src): New function.
8062         * simplify-rtx.c (constant_pool_reference_p): Delete.
8063         * config/i386/i386.md: Use find_constant_src instead of
8064         constant_pool_reference_p/avoid_constant_pool_reference pairs.
8065
8066 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8067
8068         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
8069         * c-cppbuiltin.c (c_cpp_builtins): Define them.
8070
8071 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
8072
8073         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
8074         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
8075         (arm_elf_asm_constructor): Use it.
8076         (arm_elf_asm_destructor): New function.
8077
8078 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
8079
8080         * jump.c (mark_jump_label): Treat SEQUENCE specially.
8081
8082 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
8083
8084         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
8085
8086 2007-03-19  Andrew Haley  <aph@redhat.com>
8087
8088         PR tree-optimization/31264
8089         * tree-vrp.c (register_edge_assert_for_1): Don't look though
8090         VIEW_CONVERT_EXPRs.
8091
8092 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
8093
8094         PR rtl-optimization/30907
8095         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
8096         (fwprop_init): Always call loop_optimizer_initialize.
8097         (fwprop_done): Always call loop_optimizer_finalize.
8098         (fwprop): We always have loop info now.
8099         (gate_fwprop_addr): Remove.
8100         (pass_fwprop_addr): Use gate_fwprop as gate.
8101
8102         PR rtl-optimization/30841
8103         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
8104         df_chain_alloc): Call df_reorganize_refs unconditionally.
8105         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
8106         refs_organized to refs_organized_size.
8107         (df_ref_create_structure): Use refs_organized_size instead of
8108         bitmap_size if refs had been organized, and keep refs_organized_size
8109         up-to-date.
8110         * df.h (struct df_ref_info): Change refs_organized to
8111         refs_organized_size.
8112         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
8113         bitmap_size.
8114
8115 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
8116
8117         * except.c (output_function_exception_table): Do not reference the
8118         EH personality routine for functions that do not require an
8119         exception table.
8120
8121 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
8122
8123         PR c/30762
8124         * c-typeck.c (convert_for_assignment): Call comptypes for
8125         RECORD_TYPE or UNION_TYPE.
8126
8127         PR inline-asm/30505
8128         * reload1.c (reload): Do invalid ASM checking after
8129         cleanup_subreg_operands.
8130
8131 2007-03-19  Jeff Law  <law@redhat.com>
8132
8133         * tree-cfg.c (find_taken_edge): Tighten conditions for
8134         optimizing computed gotos.
8135
8136 2007-03-19  Michael Matz  <matz@suse.de>
8137
8138         * builtins.c (expand_builtin_sync_operation,
8139         expand_builtin_compare_and_swap,
8140         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
8141         correctly.
8142
8143         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
8144         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
8145         for operand 3.
8146
8147 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8148
8149         * doc/tm.texi: Add brackets around the return type of
8150         TARGET_SECONDARY_RELOAD.
8151
8152 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8153         Richard Guenther  <rguenther@suse.de>
8154
8155         PR tree-optimization/31254
8156         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
8157         Use handled_component_p () where appropriate.  Continue
8158         propagating into the rhs if we propagated into an INDIRECT_REF
8159         on the lhs.
8160
8161 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8162
8163         * config/s390/s390.md (op_type attribute): RRR instruction type added.
8164         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
8165         (xde, xdee): Mode attributes adjusted to support DFP modes.
8166         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
8167         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
8168         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
8169         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
8170         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
8171         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
8172         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
8173         numbers.
8174         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
8175         "movsf"): Insn definitions removed.
8176         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
8177         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
8178         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
8179         definitions added.
8180         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
8181         "reload_in<mode>", "reload_out<mode>"): Expander added.
8182         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
8183         Expander removed.
8184
8185 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8186
8187         * config/s390/s390.md: Only non-functional changes.  Renamed
8188         FPR mode macro to BFP all over the file.
8189
8190 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8191
8192         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
8193         (op_type attribute): RRF instruction type added.
8194         (fT0): New mode attribute.
8195         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
8196         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
8197         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
8198         no secondary memory is needed when moving DFmode values between GPRs
8199         and FPRs.
8200
8201 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8202
8203         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
8204         inverted and documentation adjusted.
8205         ("mhard-dfp", "msoft-dfp"): New options.
8206         * config/s390/s390.c (s390_handle_arch_option): New architecture
8207         switch: z9-ec.
8208         (override_options): Sanity checks for the new options added.
8209         * config.gcc: New architecture switch: z9-ec.
8210         * config/s390/s390.h (processor_flags): PF_DFP added.
8211         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
8212         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
8213         when the bit is NOT set so remove it from the defaults.
8214
8215 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8216
8217         * genemit.c (main): Print include statement for dfp.h.
8218         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
8219         is not available.
8220
8221 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
8222
8223         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
8224
8225 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
8226
8227         PR target/31022
8228         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
8229         instead of PATTERN.
8230
8231 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8232
8233         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
8234         attr_length_call, output_call, output_indirect_call): Cleanup
8235         formatting of targetm calls.
8236
8237 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
8238
8239         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
8240
8241 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8242
8243         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
8244         reservation, bypass and anti-bypass descriptions for these instructions.
8245         Update move patterns.
8246         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
8247         TYPE_FPSTORE.
8248
8249 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
8250
8251         * tree-vect-transform.c (get_initial_def_for_induction): Replace
8252         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
8253         (get_initial_def_for_reduction): Likewise.
8254
8255 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
8256
8257         Fix PR tree-optimization/29922
8258         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
8259         (get_representative): Removed.
8260         (value_dies_in_block_x): Update for rvuse removal.
8261         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
8262         (compute_antic_aux): Handle when PHI nodes appear in
8263         non-single-successors.
8264         (dump_bitmap_of_names): Removed.
8265         (compute_antic_safe): Renamed and removed rvuse calculation.
8266         Calculate only antic safe.
8267         (insert_into_preds_of_block): Remove assert.
8268         (execute_pre): Update for renamed functions.
8269         (defer_or_phi_translate_block): New function.
8270
8271 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
8272
8273         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
8274         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
8275         typos.
8276         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
8277         Follow spelling conventions.
8278
8279         * tree-data-ref.h: Remove the prototype for analyze_array.
8280
8281 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
8282
8283         PR tree-optimization/31041
8284         * tree-vect-transform.c (get_initial_def_for_induction): Call
8285         force_gimple_operand.
8286
8287 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
8288
8289         * ipa-type-escape.c (look_for_casts) : Revert code to use
8290         handled_component_p due to ada test a-numaux.adb.
8291
8292 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
8293
8294         * final.c (final_scan_insn): Alter the condition of a
8295         conditional trap if we have nonstandard CC.
8296
8297 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
8298
8299         * configure.ac: Remove excess quoting from asm line 0 test.
8300         * configure: Rebuilt.
8301
8302 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8303
8304         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
8305         * c-common.c (convert_and_check): Move warning logic to...
8306         (warnings_for_convert_and_check): ...here. Define.
8307         * c-common.h (warnings_for_convert_and_check): Declare.
8308
8309 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8310
8311         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
8312         (output_call): Likewise.
8313
8314 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
8315
8316         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
8317
8318 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
8319
8320         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
8321
8322 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
8323
8324         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
8325         opteron, athlon-64 and athlon-fx processor_alias_table entries.
8326
8327 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
8328
8329         PR tree-optimization/31183
8330         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
8331         Use double_int instead of unsigned int for representing access_strides.
8332         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
8333
8334 2007-03-16  Richard Guenther  <rguenther@suse.de>
8335
8336         PR tree-optimization/31146
8337         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
8338         to allow recursion of forward_propagate_addr_expr.
8339         (forward_propagate_addr_into_variable_array_index): Likewise.
8340         (forward_propagate_addr_expr): Likewise.
8341         (tree_ssa_forward_propagate_single_use_vars): Likewise.
8342         (forward_propagate_addr_expr_1): Recurse on simple copies
8343         instead of propagating into them.  Do so for useless conversions
8344         as well.
8345         (forward_propagate_addr_expr): Clean up unused statements after
8346         recursion.
8347
8348 2007-03-16  Richard Guenther  <rguenther@suse.de>
8349
8350         * builtins.c (expand_builtin_cexpi): Use the right argument
8351         for the expansion via cexp.
8352
8353 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
8354
8355         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
8356         * configure: Rebuilt.
8357
8358 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
8359
8360         PR debug/29906
8361         * dwarf2out.c (force_type_die): Adjust comment.
8362         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
8363
8364 2007-03-15  DJ Delorie  <dj@redhat.com>
8365
8366         * config/frv/predicates.md (minmax_operator): Don't check operands
8367         here.
8368
8369 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
8370
8371         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
8372         Update constant estimates of number of iterations.
8373         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
8374         argument renamed to "realistic".
8375         (compute_estimated_nb_iterations): Removed.
8376         (record_niter_bound): New function.
8377         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
8378         call record_nonwrapping_iv with upper = false.
8379         (infer_loop_bounds_from_signedness): Pass upper argument to
8380         record_nonwrapping_iv.
8381         (estimate_numbers_of_iterations_loop): Do not call
8382         compute_estimated_nb_iterations.  Record estimate based on profile
8383         information.  Initialize the constant estimates of number of
8384         iterations.
8385         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
8386         estimates.
8387         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
8388         number of iterations is too small.
8389         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
8390         (EST_NOT_AVAILABLE): Removed.
8391         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
8392         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
8393         fields.
8394
8395 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
8396
8397         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
8398         Handle NE_EXPR guards.
8399
8400 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8401
8402         PR c++/24924
8403         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
8404         Set also -pedantic-errors by default for the  preprocessor unless
8405         -fpermissive is given.
8406
8407 2007-03-15  Richard Guenther  <rguenther@suse.de>
8408
8409         PR middle-end/29719
8410         PR middle-end/31161
8411         * builtins.c (expand_builtin_cexpi): As a fallback if we
8412         don't have builtins for sincos or cexp create a function
8413         declaration for cexp and expand to a call to that.
8414         (expand_builtin_int_roundingfn): Always fall
8415         back to floor/ceil and its variants even if they may be
8416         not available.
8417
8418 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
8419
8420         PR middle-end/31159
8421         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
8422         jump tables, move the call to delete_dead_jumptables from here...
8423         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
8424         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
8425         don't allow merging of blocks that try_redirect_by_replacing_jump
8426         also does not handle when not optimizing.
8427
8428 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
8429             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
8430
8431         * config/i386/i386.md (x86_sahf_1): Correctly handle
8432         HAVE_AS_IX86_SAHF.
8433
8434 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
8435
8436         PR target/31167
8437         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
8438         x86_64_general_operand as operand[2] predicate.  Remove "iF"
8439         from operand constraints and use "e" constraint instead.
8440         (*subti3_1, *subti3_1 splitter): Ditto.
8441         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
8442         operand[1] predicate.
8443
8444 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
8445
8446         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
8447         arrays, multiply the access strides by the size of the sub-array.
8448         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
8449
8450 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
8451
8452         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
8453         the configured assembler supports the sahf mnemonic.
8454         * configure: Regenerate.
8455         * config.in: Regenerate.
8456
8457         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
8458         emit "sahf" or ".byte\t0x9e" as asm template.
8459
8460 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
8461
8462         PR 31018
8463         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
8464         option to replace hard coded TARGET_xxx in md file.
8465         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
8466         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
8467         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
8468         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
8469         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
8470         (X86_TUNE_NOT_VECTORMODE): Ditto.
8471         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
8472         (TUNE_AVOID_VECTOR_DECODE): Ditto.
8473         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
8474         (TUNE_SLOW_IMUL_IMM8): Ditto.
8475         (TUNE_MOVE_M1_VIA_OR): Ditto.
8476         (TUNE_NOT_UNPAIRABLE): Ditto.
8477         (TUNE_NOT_VECTORMODE): Ditto.
8478
8479         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
8480         options.
8481
8482         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
8483         tuning options instead of hard coded TARGET_xxx.
8484         (fix ssemode peephole2's): Ditto.
8485         (imul peephole2's): Ditto.
8486         (movsi_or): Ditto.
8487         (movdi_or_rex64): Ditto.
8488         (move peephole2): Ditto.
8489         (not peephole2's): Ditto.
8490
8491 2007-03-14  Dirk Mueller  <dmueller@suse.de>
8492
8493         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
8494         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
8495         * c-parser.c (c_parser_if_body): Always add an empty statement in case
8496         of empty body.
8497         * c-parser.c (c_parser_do_statement): Warn about empty body in
8498         do/while statement.
8499         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
8500         * doc/invoke.texi (-Wempty-body): Update documentation.
8501
8502 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8503
8504         PR c/21438
8505         * c-common.h (warn_for_div_by_zero): Declare.
8506         * c-common.c (warn_for_div_by_zero): Define.
8507         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
8508         warning.
8509
8510 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8511
8512         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
8513         to PREFIX and STANDARD_PREFIX.
8514
8515 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8516             Phil Edwards  <phil@codesourcery.com>
8517
8518         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
8519         (__gthread_once_t): Remove busy field for RTPs.
8520         (__GTHREAD_ONCE_INIT): Update accordingly.
8521
8522 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8523
8524         * doc/invoke.texi: Document VxWorks options.
8525
8526 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
8527
8528         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
8529
8530 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
8531
8532         PR tree-optimization/30590
8533         * tree-nrv.c (tree_nrv): Check for the partial update of the
8534         return value.
8535
8536 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
8537
8538         * flags.h (flag_random_seed): Remove declaration, in favor of...
8539         * toplev.h (get_random_seed, set_random_seed): ... these.
8540         * tree.c (get_file_function_name): Use the former.
8541         * opts.c (common_handle_option): Use the latter.
8542         * toplev.c
8543
8544 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
8545
8546         PR middle-end/31127
8547         * cse.c (cse_find_path): Do not bail out if a basic block that
8548         we already visited now becomes part of a path that starts at a
8549         different basic block.  Just disallow this, to make sure we
8550         visit each basic block at most once.
8551
8552 2007-03-13  Jan Hubicka  <jh@suse.cz>
8553
8554         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
8555         when profile esitmate is present, calls with very low frequency are
8556         cold.
8557
8558 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
8559
8560         PR tree-optimization/30730
8561         PR tree-optimization/26900
8562         * tree-ssa-loop-niter.c: Include gmp.h.
8563         (bounds): New type.
8564         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
8565         split_to_var_and_offset, determine_value_range,
8566         bound_difference_of_offsetted_base, refine_bounds_using_guard,
8567         bound_difference, bounds_add, bounds_negate,
8568         number_of_iterations_ne_max, dump_affine_iv): New functions.
8569         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
8570         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
8571         difference of initial and final value of control iv to validate
8572         results.
8573         (number_of_iterations_cond): Add loop parameter.  Determine bounds
8574         on the difference of the extremes of the control iv.  Add dumps.
8575         (expand_simple_operations): Handle phi nodes.
8576         (simplify_using_initial_conditions): Do not record used conditions.
8577         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
8578         Do not set additional_info.
8579         (implies_nonnegative_p, implies_ge_p): Removed.
8580         (derive_constant_upper_bound): Do not use parameter `additional'.
8581         (record_estimate): Parameter `additional' removed.  Parameter
8582         `i_bound' added.  Do not call derive_constant_upper_bound.
8583         (record_nonwrapping_iv): Use derive_constant_upper_bound to
8584         bound the number of iterations estimate.
8585         (estimate_numbers_of_iterations_loop): Pass the estimate from
8586         the number of iterations analysis to record_estimate.
8587         * tree.h (multiple_of_p): Declare.
8588         * tree-scalar-evolution.c (expression_expensive_p): Removed.
8589         (scev_const_prop): Do not check expression_expensive_p.
8590         * fold-const.c (multiple_of_p): Exported.
8591         * double-int.c (double_int_mask): Exported.
8592         * double-int.h (double_int_mask): Declare.
8593         * tree-flow.h (struct tree_niter_desc): Removed additional_info
8594         field.  Added max field.
8595
8596 2007-03-13  David Taylor  <taylor@candd.org>
8597
8598         PR driver/12448:
8599         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
8600         default -MQ.
8601
8602 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8603
8604         PR target/31123
8605         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
8606         two unamed patterns.
8607
8608 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
8609
8610         * config/i386/i386.opt (mcx16, msahf): New options.
8611         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
8612         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
8613
8614         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
8615         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
8616         Output -mcx16 and -msahf options when corresponding bit is set.
8617
8618         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
8619         and -msahf options.
8620
8621 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
8622
8623         * configure.ac: Test for assembler tolerance to # 0 "".
8624         * configure, config.in: Rebuilt.
8625         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
8626
8627 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
8628
8629         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
8630
8631         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
8632         (handle_syscall): Handle direct system calls.
8633         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
8634
8635 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
8636
8637         * doc/invoke.texi: Fix cpp.info cross-reference.
8638         * doc/passes.texi: Fix gcc.info cross-reference.
8639
8640 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
8641
8642         PR tree-optimization/30835
8643         * lambda-code.c (can_convert_to_perfect_nest): Check whether
8644         bb_for_stmt is not NULL before accessing it.
8645
8646 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
8647
8648         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
8649         some multilibs.
8650
8651 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
8652
8653         PR 30635
8654         * doc/install.texi: Document --enable-stage1-languages
8655
8656 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
8657
8658         * tree-pass.h (pass_into_cfg_layout_mode,
8659         pass_outof_cfg_layout_mode): Declare.
8660         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
8661         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
8662         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
8663         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
8664
8665 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
8666
8667         * c-decl.c (warn_variable_length_array): New function.
8668         Refactored from grokdeclarator to handle warn_vla
8669         and handle unnamed array case.
8670         (grokdeclarator): Refactored VLA warning case.
8671         * c.opt (Wvla): New flag.
8672         * doc/invoke.texi (Wvla): New warning.
8673
8674 2007-03-12  Richard Henderson  <rth@redhat.com>
8675
8676         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
8677         (TARGET_SECTION_TYPE_FLAGS): New.
8678
8679 2007-03-12  Richard Henderson  <rth@redhat.com>
8680
8681         * config/darwin.c (machopic_reloc_rw_mask): New.
8682         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
8683         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
8684
8685 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
8686
8687         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
8688         * cppdefault.h (cpp_PREFIX): Document.
8689         (cpp_PREFIX_len): Likewise.
8690         (cpp_EXEC_PREFIX): New variable.
8691         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
8692         * c-incpath.c (add_standard_paths): Correct logic for relocating
8693         paths within prefix.
8694
8695 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
8696
8697         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
8698         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
8699         mode macro.
8700         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
8701         fix_truncdfdi_sse using SSEMODEF mode macro.
8702         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
8703         fix_truncdfsi_sse using SSEMODEF mode macro.
8704         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
8705         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
8706
8707 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
8708
8709         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
8710         elfos.h to tm_file.
8711
8712 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
8713
8714         * tree.h : Add multiple_of_p declaration.
8715         * fold-const.c (multiple_of_p): Make multiple_of_p public.
8716         * ipa-type-escape.c (results_of_malloc): Redundant.
8717         (visited_stmts): New. Visited stmt for walk_use_def_chains.
8718         (cast_type): Extended with new members.
8719         (check_cast): Returns cast_type.
8720         (cast): New structure for data of walk_use_def_chains.
8721         (is_malloc_result, is_cast_from_non_pointer_1,
8722         is_cast_from_non_pointer,
8723         is_array_access_through_pointer_and_index): New functions.
8724         (look_for_casts): Returns cast types.
8725         (check_call): Returns void.
8726         (okay_pointer_operation): Use support of pointer plus index,
8727         pointer plus constant and allow all multiplications.
8728
8729 2007-03-11  Richard Guenther  <rguenther@suse.de>
8730
8731         PR tree-optimization/31115
8732         * tree-vrp.c (extract_range_from_binary_expr): Make sure
8733         the shift count is positive and non-anti-range for RSHIFT_EXPR.
8734         A shift count of zero is not special as with *_DIV_EXPR.
8735         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
8736         direction.
8737
8738 2007-03-11  Ian Lance Taylor  <iant@google.com>
8739
8740         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
8741         the *_DIV_EXPR codes correctly with overflow infinities.
8742
8743 2007-03-11  Ira Rosen  <irar@il.ibm.com>
8744
8745         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
8746         indicate success/failure of the analysis. Add negation to subtrahend
8747         in case of subtraction. Fail if both operands contain constants.
8748         (create_data_ref): Fail if analyze_offset fails.
8749
8750 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
8751
8752         * config/i386/i386.md (frndintxf2): Rename to ...
8753         (rintxf2): ... this. Remove expander having same name.
8754         (rintsf2, rintdf2): Implement using SSEMODEF macro.
8755         (roundsf2, rounddf2): Ditto.
8756         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
8757         (lround<mode>di2, lround<mode>si2): Ditto.
8758
8759 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
8760
8761         * lower-subreg.c: Include except.h.
8762         (decompose_multiword_subregs): Verify that the only control flow
8763         insns we can split are loads to multi-words pseudos.
8764         Handle breaking such blocks after splitting, instead of calling
8765         find_many_sub_basic_blocks.
8766
8767         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
8768         on the new basic block.  Add a lengthy comment explaining why we
8769         thought this was necessary.
8770         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
8771
8772 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
8773
8774         PR c++/30924
8775         * tree.c (walk_type_fields): Recurse into the element type of
8776         ARRAY_TYPEs if there is a pointer set.
8777
8778 2007-03-10  Dirk Mueller  <dmueller@suse.de>
8779
8780         * c-common.c (warn_logical_operator): Fix condition.
8781
8782 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
8783
8784         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
8785         quotation mark.
8786         * config/darwin.c (machopic_select_section): Remove superfluous
8787         argument in call to categorize_decl_for_section.  Remove unused
8788         variable shlib.
8789
8790 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
8791
8792         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
8793         defined.
8794         * configure: Regenerate.
8795
8796 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
8797
8798         PR target/31101
8799         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
8800         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
8801         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
8802         Add LABEL_NUSES to emitted label.
8803         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
8804         branch probability value to emitted jump insn.
8805         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
8806         Do not check life information and do not re-arrange input operands
8807         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
8808
8809 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
8810
8811         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
8812         the change of decode_asm_operands.
8813
8814 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
8815
8816         * mode-switching.c (create_pre_exit): Skip blockage insn.
8817
8818 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
8819
8820         * tree-pass.h (TODO_update_smt_usage): Remove.
8821         Update all users.
8822         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
8823         argument SOME.
8824         Update all users.
8825
8826 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8827
8828         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
8829         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
8830         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
8831         SOM target.
8832
8833 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
8834
8835         * gcc.c: Document %{, in big comment at top.
8836         (input_suffix_matches): Remove special handling for .s and
8837         .S.
8838         (input_spec_matches): New.
8839         (handle_braces): Handle %{,.
8840         (validate_switches): ',' indicates a value which is not a switch.
8841         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
8842         to detect assembler input.
8843         * config/i386/sol2.h (CPP_SPEC): Likewise.
8844         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
8845         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
8846         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
8847         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
8848         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
8849         -m64 causes deployment target to default to 10.5.
8850         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
8851
8852 2007-03-09  Richard Henderson  <rth@redhat.com>
8853
8854         PR target/26090
8855         * target.h (targetm.asm.out.reloc_rw_mask): New.
8856         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
8857         (TARGET_ASM_OUT): Use it.
8858         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
8859         * varasm.c (categorize_decl_for_section): Remove shlib argument;
8860         use the new reloc_rw_mask target hook instead.
8861         (default_section_type_flags_1): Merge into...
8862         (default_section_type_flags): ... here.
8863         (decl_readonly_section_1): Merge into...
8864         (decl_readonly_section): ... here.
8865         (default_elf_select_section_1): Merge into...
8866         (default_elf_select_section): ... here.
8867         (default_unique_section_1): Merge into...
8868         (default_unique_section): ... here.
8869         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
8870         (default_select_rtx_section): Use it.
8871         (default_elf_select_rtx_section): Likewise.
8872         * output.h: Update to match.
8873         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
8874         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
8875         (TARGET_ASM_RELOC_RW_MASK): New.
8876         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
8877         to categorize_decl_for_section.
8878         (x86_64_elf_unique_section): Likewise.
8879         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
8880         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
8881         (TARGET_ASM_RELOC_RW_MASK): New.
8882         * config/ia64/ia64.c (ia64_rwreloc_select_section,
8883         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
8884         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
8885         (TARGET_RWRELOC): Remove.
8886         (ia64_section_type_flags): Adjust call to default_section_type_flags.
8887         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
8888         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
8889         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
8890         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
8891         (rs6000_xcoff_select_section): Use decl_readonly_section.
8892         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
8893         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
8894         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
8895         (TARGET_SECTION_TYPE_FLAGS): Remove.
8896         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
8897
8898 2007-03-09  Roger Sayle  <roger@eyesopen.com>
8899
8900         * fold-const.c (fold_comparison): Remove compile-time evaluation of
8901         complex constant equality/inequality comparisons for here.
8902         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
8903         known at compile-time or can be simplified to a scalar comparison.
8904         (fold_relational_const): Move compile-time evaluation of complex
8905         constant equality/inequality comparisons to here.
8906
8907 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
8908
8909         PR rtl-optimization/30643
8910         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
8911         dest_addr_elt.
8912         (fold_rtx): Recurse, like before 2006-11-03.
8913
8914 2007-03-09  DJ Delorie  <dj@redhat.com>
8915
8916         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
8917         m32c-pragma.o.
8918
8919 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
8920
8921         PR tree-optimization/30375
8922         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
8923         LHS of statements is not the same.
8924         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
8925
8926 2007-03-09  Chao-ying Fu  <fu@mips.com>
8927
8928         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
8929         REV 2.
8930         * doc/invoke.texi (-mdspr2): Document new option.
8931         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
8932         New unspec for DSP REV 2.
8933         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
8934         these instructions are extended in DSP REV 2.
8935         (mips-dspr2.md): Include.
8936         * config/mips/mips.opt (mdspr2): New option.
8937         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
8938         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
8939         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
8940         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
8941         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
8942         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
8943         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
8944         and 2 builtins.
8945         (bdesc_map): Add one field of unsupported_target_flags.
8946         (bdesc_arrays):  Update entries to have extra fields.  Add
8947         dsp_32only_bdesc.
8948         (mips_init_builtins): Initialize new function types.
8949         Check unsupported_target_fileds to filter out builtins.
8950         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
8951         TARGET_DSPR2.
8952         (ASM_SPEC): Pass mdspr2 to the assembler.
8953         * config/mips/mips-dspr2.md: New file.
8954
8955 2007-03-09  Sa Liu  <saliu@de.ibm.com>
8956
8957         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
8958
8959 2007-03-09  Ian Lance Taylor  <iant@google.com>
8960
8961         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
8962         argument) like -Wstrict-overflow=2.
8963         * doc/invoke.texi (Warning Options): Update documentation.
8964
8965 2007-03-09  Dirk Mueller  <dmueller@suse.de>
8966
8967         PR c++/17946
8968         * doc/invoke.texi (-Wlogical-op): Document.
8969         * common.opt (-Wlogical-op): New.
8970         * c-common.h (warn_logical_operator): Declare.
8971         * c-common.c (warn_logical_operator): Define.
8972         * c-typeck.c (parser_build_binary_op): Call
8973         warn_logical_operator.
8974
8975 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
8976
8977         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
8978         * final.c (final_scan_insn): Test for non-"" file name.
8979
8980 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
8981
8982         * doc/loop.texi: Document the Omega linear constraints solver.
8983         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
8984         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
8985         omega-hash-table-size, omega-max-keys, and
8986         omega-eliminate-redundant-constraints.
8987         * tree-pass.h (pass_check_data_deps): Declared.
8988         * omega.c: New.
8989         * omega.h: New.
8990         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
8991         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
8992         pass_check_data_deps): New.
8993         * tree-data-ref.c (init_data_ref): Remove declaration.
8994         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
8995         (analyze_array): Renamed init_array_ref, move up initializations.
8996         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
8997         Removed arguments that are set to NULL.
8998         (analyze_indirect_ref): Correct indentation, correct call to
8999         init_pointer_ref.
9000         (object_analysis): Call init_array_ref instead of analyze_array.
9001         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
9002         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
9003         of DR_ACCESS_FNS_ADDR.
9004         (init_omega_eq_with_af, omega_extract_distance_vectors,
9005         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
9006         ddr_consistent_p): New.
9007         (compute_affine_dependence): Check consistency of ddrs when
9008         flag_check_data_deps is passed.
9009         (analyze_all_data_dependences): Uncomment.
9010         (tree_check_data_deps): New.
9011         * tree-data-ref.h: Include omega.h.
9012         (DR_ACCESS_FNS_ADDR): Removed.
9013         (data_dependence_relation): Add inner_loop.
9014         (DDR_INNER_LOOP): New.
9015         * common.opt (fcheck-data-deps): New.
9016         * tree-flow.h (tree_check_data_deps): Declare.
9017         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
9018         (OBJS-common): Depend on omega.o.
9019         (omega.o): Define.
9020         * passes.c (pass_check_data_deps): Scheduled.
9021         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
9022         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
9023         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
9024         PARAM_VECT_MAX_VERSION_CHECKS,
9025         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
9026
9027 2007-03-09  Richard Guenther  <rguenther@suse.de>
9028
9029         PR tree-optimization/30904
9030         PR middle-end/31058
9031         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
9032         the same way as *_DIV_EXPR.
9033
9034 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9035
9036         * recog.c (decode_asm_operands): No mixed declarations and code.
9037
9038 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9039
9040         * rtl.def (ASM_INPUT): Add location.
9041         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
9042         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
9043         (decode_asm_operands): Add loc operand.
9044         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
9045         * stmt.c (expand_asm): Rename to...
9046         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
9047         gen_rtx_ASM_INPUT_loc.
9048         (expand_asm_expr): Adjust.
9049         * recog.c (decode_asm_operands): Add loc operand.
9050         (check_asm_operands, extract_insn): Adjust.
9051         * reload1.c (maybe_fix_stack_asms): Likewise.
9052         * final.c (asm_insn_count): Likewise.
9053         (final_scan_insn): Output # line before and after asm.
9054
9055 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
9056
9057         * tree-ssa-structalias.c (variable_info): Remove
9058         finished_solution.
9059         (new_var_info): Ditto.
9060         (shared_bitmap_info_t): New structure.
9061         (shared_bitmap_table): New variable.
9062         (shared_bitmap_hash): New function.
9063         (shared_bitmap_eq): Ditto
9064         (shared_bitmap_lookup): Ditto.
9065         (shared_bitmap_add): Ditto.
9066         (merge_smts_into): Change to take bitmap directly.
9067         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
9068         (init_alias_vars): Init shared bitmap hashtable.
9069         (delete_points_to_sets): Delete shared bitmap hashtable.
9070         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
9071         is_aliased removal as a change that was still necessary was
9072         deleted.
9073
9074 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
9075
9076         * config/i386/i386.h (override_options): Conditionally disable
9077         x86_sahf for 64bit targets only.
9078
9079 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9080
9081         PR C/31072
9082         * c-decl.c (merge_decls): Don't call make_var_volatile.
9083         * varasm.c (make_var_volatile): Remove.
9084         * output.h (make_var_volatile): Remove.
9085
9086 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
9087
9088         PR tree-optimization/31085
9089         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
9090
9091 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9092
9093         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
9094         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
9095         ATTR_CONST_NOTHROW_LIST.
9096
9097         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
9098         FIX_TRUNC_EXPR.
9099
9100 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
9101
9102         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
9103
9104 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
9105
9106         PR 31013
9107         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
9108         is declared.
9109         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
9110         passed, use shared libgcc.
9111
9112 2007-03-08  Roger Sayle  <roger@eyesopen.com>
9113
9114         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
9115         instead of calling build2 with a GIMPLE_MODIFY_STMT.
9116         (honor_protect_cleanup_actions, lower_try_finally_switch):
9117         Likewise.
9118         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
9119         ifc_temp_var): Likewise.
9120         * tree-inline.c (setup_one_parameter): Likewise.
9121         * tree-mudflap.c (mf_decl_cache_locals,
9122         mf_build_check_statement_for): Likewise.
9123         * tree-nested.c (init_tmp_var, save_tmp_var,
9124         finalize_nesting_tree_1): Likewise.
9125         * tree-outof-ssa.c (insert_copy_on_edge,
9126         insert_backedge_copies): Likewise.
9127         * tree-profile.c (tree_gen_edge_profiler,
9128         tree_gen_ic_profiler): Likewise.
9129         * tree-scalar-evolution.c (scev_const_prop): Likewise.
9130         * tree-sra.c (sra_build_assignment): Likewise.
9131         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
9132         * tree-ssa-math-opts.c (insert_reciprocals,
9133         execute_cse_sincos_1): Likewise.
9134         * tree-tailcall.c (adjust_accumulator_values,
9135         adjust_return_value): Likewise.
9136         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
9137         * tree-vect-transform.c (vect_create_data_ref_ptr,
9138         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
9139         vect_create_epilog_for_reduction, vectorizable_reduction,
9140         vectorizable_call, vectorizable_conversion,
9141         vectorizable_assignment, vectorizable_operation,
9142         vectorizable_type_demotion, vect_gen_widened_results_half,
9143         vect_permute_store_chain, vectorizable_store,
9144         vect_setup_realignment, vect_permute_load_chain,
9145         vectorizable_load, vectorizable_condition,
9146         vect_create_cond_for_align_checks): Likewise.
9147         * tree-vrp.c (build_assert_expr_for): Likewise.
9148
9149 2007-03-08  Ian Lance Taylor  <iant@google.com>
9150
9151         * tree-vrp.c: Include "intl.h".
9152         (usable_range_p): New static function.
9153         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
9154         overflowed values, juts set *strict_overflow_p.
9155         (compare_values): Only return -2 if one of the operands is not a
9156         constant.
9157         (compare_ranges): Call usable_range_p.
9158         (compare_range_with_value): Likewise.
9159         (vrp_evaluate_conditional_warnv): Rename from
9160         vrp_evaluate_conditional.  Make static.  Change all callers.
9161         (vrp_evaluate_conditional): New function.
9162         (simplify_div_or_mod_using_ranges): Issue warning about reliance
9163         on signed overflow.
9164         (simplify_abs_using_ranges): Likewise.
9165         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
9166         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
9167         within_stmt parameter.
9168         * tree-ssa-propagate.c (fold_predicate_in): Update call to
9169         vrp_evaluate_conditional.
9170         * tree-ssa-threadedge.c
9171         (record_temporary_equivalences_from_stmts_at_dest): Change
9172         simplify parameter to take a second tree parameter.
9173         (simplify_control_stmt_condition): Likewise.
9174         (thread_across_edge): Likewise.
9175         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
9176         (thread_across_edge): Likewise.
9177         * Makefile.in (tree-vrp.o): Depend upon intl.h.
9178
9179 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
9180
9181         * config/i386/i386.h (TARGET_SAHF): New define.
9182         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
9183         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
9184         (x86_sahf): New global variable.
9185         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
9186         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
9187         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
9188         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
9189         for 64-bit.
9190         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
9191         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
9192         when expanding fcomi/sahf based tests.
9193         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
9194         expanding sahf based alternative. Emit sahf based sequence when
9195         optimizing for code size.
9196         * config/i386/i386.md (x86_sahf_1): Do not disable for
9197         TARGET_64BIT, enable for TARGET_SAHF.
9198
9199 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
9200
9201         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
9202         spurious whitespace from error message.
9203
9204 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
9205
9206         PR c++/30852
9207         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
9208
9209 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
9210
9211         * c-decl.c (grokdeclarator): Disable warnings for anonymous
9212         bitfields.
9213         * tree-sra.c (instantiate_element): Propagate disabled warnings
9214         from the element itself to the created variable.
9215
9216 2007-03-07  Richard Henderson  <rth@redhat.com>
9217
9218         PR target/30848
9219         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
9220         silently fix up the stack in the case of a missing register.
9221
9222 2007-03-07  Paul Brook  <paul@codesourcery.com>
9223
9224         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
9225
9226 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
9227
9228         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
9229         New.
9230         (phase1_vrs): Use them.
9231         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
9232         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
9233         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
9234         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
9235         __gnu_Unwind_Restore_WMMXC if required.
9236         (_Unwind_VRS_Pop): Implement iWMMXt support.
9237         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
9238         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
9239         gnu_Unwind_Save_WMMXC): Define.
9240
9241 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
9242
9243         * config/vxworks.h (vxworks_override_options): Declare.
9244         (VXWORKS_OVERRIDE_OPTIONS): Use it.
9245         * config/vxworks.c: Include target.h and toplev.h.
9246         (vxworks_override_options): New function.
9247         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
9248
9249 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
9250
9251         * config/s390/s390.c (override_options): Don't emit an error when
9252         -mstack-size is used without providing -mstack-guard.
9253         (s390_emit_prologue): Choose stack_guard value automatically if not
9254         provided via command line.
9255         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
9256
9257 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
9258
9259         * config/i386/i386.c (output_set_got): Add a GOT initialization
9260         sequence for VxWorks PIC.
9261         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
9262         around labels as well as symbols.  Use gotoff_operand instead
9263         of local_symbolic_operand.
9264         (legitimize_pic_address): Use gotoff_operand instead of
9265         local_symbolic_operand.  Use @GOT accesses for labels as
9266         well as symbols.
9267         (ix86_output_addr_diff_elt): Use PC-relative rather than
9268         GP-relative offsets for VxWorks PIC.
9269         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
9270         no_new_pseudos.  Check whether the returned register is op0.
9271         * config/i386/i386.md (tablejump): Use PC-relative rather than
9272         GP-relative offsets for VxWorks PIC.
9273         * config/i386/predicates.md (gotoff_operand): New predicate.
9274
9275 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9276
9277         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
9278         before defining.
9279         * config/vxworks-dummy.h: New file.
9280         * config/i386/i386.h: Include it.
9281
9282 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
9283
9284         * dwarf2out.c (is_inlined_entry_point): New
9285         (add_high_low_attributes): Emit DW_AT_entry_pc along with
9286         DW_AT_ranges if the first subblock is the entry point.
9287
9288 2007-03-06  David Daney  <ddaney@avtrex.com>
9289
9290         * doc/install.texi (mips-*-*): Change recommended binutils
9291         version.
9292
9293 2007-03-06  Anatoly Sokolov <aesok@post.ru>
9294
9295         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
9296         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
9297         devices.
9298         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
9299         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9300
9301 2007-03-06  Jan Hubicka  <jh@suse.cz>
9302
9303         * errors.h (warning, error, fatal, internal_error): Mark as cold.
9304         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
9305         are hot.
9306         (probably_cold_bb_p): Cold functions are cold.
9307         (probably_never_executed_bb_p): Cold functions are cold.
9308         (tree_bb_level_predictions): Predict calls to cold functions as not
9309         taken.
9310         (compute_function_frequency): Check hot/cold attributes.
9311         * function.h (function_frequency): Update comments.
9312         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
9313         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
9314         (c_common_att): Add cold and hot.
9315
9316         * doc/extend.texi (hot,cold attributes): Document.
9317
9318 2007-03-06  Andrew Haley  <aph@redhat.com>
9319
9320         * function.c (expand_function_end): Move blockage to just after we
9321         emit the label for the naked return from the function.
9322
9323 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9324
9325         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
9326         before redefining.
9327
9328 2007-03-06  Jan Hubicka  <jh@suse.cz>
9329
9330         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
9331         loaded for constant large models.  Non-large 64bit PIC can do.
9332         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
9333         * cmodel.h: Add LARGE PIC.
9334         * i386.md (UNSPEC_PLTOFF): New.
9335         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
9336         needed.
9337         (*call_1_rex64): Disable for large models.
9338         (*call_1_rex64_large): New.
9339         (*call_value_1_rex64): Disable for large models.
9340         (*call_value_1_rex64_large): New.
9341         (set_rip_rex4): New.
9342         (set_got_offset_rex64): New.
9343         * predicates.md (constant_call_address_operand): For large model
9344         constant calls are not possible.
9345         * i386-protos.h (construct_plt_address): Declare.
9346         * i386.c (override_options): Accept large models.
9347         (ix86_expand_prologue): Expand large PIC GOT pointer load.
9348         (legitimate_constant_p): Add new UNSPECs.
9349         (legitimate_pic_operand_p): Likewise.
9350         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
9351         (legitimize_pic_address): Do easy RIP relative way for TLS only for
9352         non-large model.
9353         (output_pic_addr_const): Add PLTOFF.
9354         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
9355         (ix86_expand_move): Legitimize pic address when in PIC mode.
9356         (construct_plt_address): New function.
9357         (ix86_expand_call): Offload the address to register and use GOT pointer
9358         for large model.
9359         * invoke.texi (mcmodel=large): Update documentation.
9360
9361 2007-03-06  Richard Henderson  <rth@redhat.com>
9362
9363         * config/i386/i386.c (x86_use_leave, x86_push_memory,
9364         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
9365         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
9366         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
9367         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
9368         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
9369         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
9370         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
9371         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
9372         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
9373         x86_partial_reg_dependency, x86_memory_mismatch_stall,
9374         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
9375         x86_sse_partial_reg_dependency, x86_sse_split_regs,
9376         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
9377         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
9378         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
9379         x86_schedule, x86_use_bt, x86_pad_returns,
9380         x86_use_xchgb): Merge into ...
9381         (ix86_tune_features): ... here.  New array.
9382         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
9383         x86_bswap): Merge into ...
9384         (ix86_arch_features): ... here.  New array.
9385         (x86_3dnow_a): Remove.
9386         (x86_accumulate_outgoing_args): Make static.
9387         (x86_arch_always_fancy_math_387): Make static.
9388         (ix86_tune_mask, ix86_arch_mask): Move ...
9389         (override_options): ... to local variables here.  Apply the
9390         appropriate mask to each element of ix86_arch_features and
9391         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
9392         as were done in the old macros.
9393         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
9394         * config/i386/i386.h (x86_use_leave, x86_push_memory,
9395         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
9396         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
9397         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
9398         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
9399         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
9400         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
9401         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
9402         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
9403         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
9404         x86_partial_reg_dependency, x86_memory_mismatch_stall,
9405         x86_accumulate_outgoing_args, x86_prologue_using_move,
9406         x86_epilogue_using_move, x86_decompose_lea,
9407         x86_arch_always_fancy_math_387, x86_shift1,
9408         x86_sse_partial_reg_dependency, x86_sse_split_regs,
9409         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
9410         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
9411         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
9412         x86_use_incdec, x86_pad_returns, x86_bswap,
9413         x86_partial_flag_reg_stall): Remove.
9414         (enum ix86_tune_indices): New.
9415         (ix86_tune_features): New.
9416         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
9417         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
9418         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
9419         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
9420         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
9421         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
9422         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
9423         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
9424         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
9425         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
9426         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
9427         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
9428         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
9429         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
9430         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
9431         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
9432         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
9433         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
9434         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
9435         TARGET_EXT_80387_CONSTANTS): Use it.
9436         (enum ix86_arch_indices): New.
9437         (ix86_arch_features): New.
9438         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
9439         TARGET_BSWAP): Use it.
9440         (ix86_tune_mask, ix86_arch_mask): Remove.
9441
9442 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
9443
9444         PR bootstrap/31020
9445         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
9446         Define using $${sysroot_headers_suffix}.
9447         * configure: Regenerate.
9448         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
9449         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
9450         defined.
9451         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
9452         * gcc.c (print_sysroot_headers_suffix): New.
9453         (option_map): Include --print-sysroot-headers-suffix.
9454         (display_help): Mention -print-sysroot-headers-suffix.
9455         (process_command): Handle -print-sysroot-headers-suffix.
9456         (do_spec_1): Append multilib directory to include-fixed path if
9457         sysroot suffixes in use.
9458         (main): Handle -print-sysroot-headers-suffix.
9459         * Makefile.in (start.encap): Don't depend on xlimits.h
9460         (xlimits.h): Remove.
9461         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
9462         limits.h for each multilib in fixinc_list.
9463         (fixinc_list, s-fixinc_list): New.
9464         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
9465         generate them for each multilib in fixinc_list.
9466         (stmp-fixproto): Use include-fixed.  Run fixproto for each
9467         multilib in fixinc_list.
9468         (mostlyclean): Don't remove xlimits.h.
9469         (clean): Remove include-fixed.
9470         (real-install-headers-tar, real-install-headers-cpio,
9471         real-install-headers-cp): Don't copy include, only include-fixed.
9472         (install-mkheaders): Depend on fixinc_list.  Don't depend on
9473         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
9474         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
9475         SYSTEM_HEADER_DIR setting in mkheaders.conf.
9476
9477 2007-03-06  Jan Hubicka  <jh@suse.cz>
9478
9479         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
9480         NANs easilly.
9481
9482 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9483
9484         * configure.ac: Allow tm_file to contain build-directory files.
9485         * configure: Regenerate.
9486         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
9487         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
9488         * config/m68k/print-sysroot-suffix.sh: New file.
9489
9490 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9491
9492         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
9493         of pic_offset_table_rtx if reload_completed.
9494         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
9495         PIC_OFFSET_TABLE_REGNUM.
9496         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
9497         return true.
9498         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
9499         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
9500
9501 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9502
9503         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
9504         functions that call eh_return.
9505
9506 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9507
9508         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
9509         functions that need a constant pool.
9510
9511 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9512
9513         PR target/28181
9514         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
9515         (m68k_preferred_reload_class): Likewise.
9516         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
9517         (SECONDARY_RELOAD_CLASS): Define.
9518         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
9519         (LIMIT_RELOAD_CLASS): Delete.
9520         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
9521         registers from storing bytes.
9522         (m68k_secondary_reload_class): New function.
9523         (m68k_preferred_reload_class): Likewise.
9524
9525 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9526
9527         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
9528         leaf functions.
9529         (m68k_expand_prologue): Likewise.
9530
9531 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9532
9533         * config/m68k/m68k-protos.h (output_sibcall): Declare.
9534         (mips_expand_epilogue): Add a bool parameter.
9535         (m68k_legitimize_sibcall_address): Declare.
9536         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
9537         (m68k_expand_epilogue): Add a parameter to select between sibling
9538         and normal epilogues.  Only generate a return for the latter.
9539         (m68k_ok_for_sibcall_p): New function.
9540         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
9541         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
9542         (sibcall_value, *sibcall_value): Likewise.
9543         (*call, *call_value): Require !SIBLING_CALL_P.
9544         (epilogue): Update call to m68k_expand_epilogue.
9545         (sibcall_epilogue): New pattern.
9546         * config/m68k/predicates.md (const_call_operand): Say that this
9547         predicate applies to sibling calls too.
9548         (sibcall_operand): New predicate.
9549
9550 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9551
9552         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
9553         alternatives as movsi_cf.
9554         (movsf_cf_hard): Add commentary.
9555
9556 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
9557             Richard Sandiford  <richard@codesourcery.com>
9558
9559         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
9560         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
9561         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
9562         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
9563         as being live on exit from an interrupt function.
9564         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
9565         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
9566         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
9567         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
9568         (m68k_interrupt_function_p): Globalize.
9569         (m68k_compute_frame_layout): Remove reverse mask code.
9570         (m68k_emit_movem, m68k_set_frame_related): New functions.
9571         (m68k_output_function_prologue): Delete in favor of...
9572         (m68k_expand_prologue): ...this new function.
9573         (m68k_output_function_epilogue): Delete in favor of...
9574         (m68k_expand_epilogue): ...this new function.
9575         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
9576         functions.
9577         (print_operand): Handle %?.
9578         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
9579         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
9580         (prologue, epilogue): New patterns.
9581         (return): Turn into a define_expand.
9582         (*return): New pattern, derived from old "return" pattern.  Use rte
9583         rather than rts for interrupt functions.  Only use rtd if the pop
9584         count is nonzero.
9585         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
9586         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
9587         (link, *link, unlink, *unlink, load_got): Likewise.
9588
9589 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9590
9591         PR target/23482
9592         PR target/17114
9593         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
9594         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
9595         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
9596         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
9597         and m68k_matches_u_p.
9598         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
9599         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
9600         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
9601         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
9602         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
9603         (REG_STRICT_P): New macro.
9604         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
9605         PCREL_GENERAL_OPERAND_OK.
9606         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
9607         m68k_legitimate_base_reg_p.
9608         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
9609         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
9610         (PIC_CASE_VECTOR_ADDRESS): Update comment.
9611         * config/m68k/m68k.c (m68k_address): New structure.
9612         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
9613         (m68k_decompose_index, m68k_legitimate_constant_address_p)
9614         (m68k_jump_table_ref_p, m68k_decompose_address)
9615         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
9616         (m68k_matches_u_p): New functions.
9617         (print_operand_address): Rewrite to use m68k_decompose_index.
9618
9619 2007-03-05  David Taylor  <dtaylor@emc.com>
9620
9621         * gcc.c: Correct copyright date in --version output.
9622
9623 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9624
9625         * pa.md: In unamed move patterns, disparge copies between general
9626         and floating point registers using '?' modifier.  Don't include 'f'
9627         constraint for register preferences in DImode, SImode, HImode and
9628         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
9629         Remove constraints for copies between general and floating registers
9630         in soft-float DFmode pattern.
9631         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
9632         floating register.
9633         (movsf): Likewise.
9634
9635 2007-03-05  Mike Stump  <mrs@apple.com>
9636
9637         * c-common.c (targetcm): Add.
9638         * c-opts.c (c_common_handle_option): Handle language specific
9639         target options.
9640         * opts.c (handle_option): Verify language for target options, if
9641         any are given.
9642         * opth-gen.awk: Add CL_LANG_ALL.
9643         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
9644         (TARGETCM_INITIALIZER): Add.
9645         * target.h (struct gcc_targetcm): Add.
9646         (targetcm): Add.
9647         * targhooks.c (default_handle_c_option): Add.
9648         * targhooks.h (default_handle_c_option): Add.
9649         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
9650
9651         * config/darwin.opt (iframework): Add.
9652         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
9653         * config/darwin-c.c (handle_c_option): Add.
9654         (TARGET_HANDLE_C_OPTION): Add.
9655         (targetcm): Add.
9656         * doc/invoke.texi (Darwin Options): Add -iframework.
9657
9658 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9659
9660         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
9661         conversion.
9662
9663 2007-03-05  Ian Lance Taylor  <iant@google.com>
9664
9665         * c.opt (fgnu89-inline): New option.
9666         * c-opts.c (c_common_post_options): Set default value for
9667         flag_gnu89_inline.
9668         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
9669         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
9670         inline functions.
9671         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
9672         (grokdeclarator, start_function): Likewise.
9673         * c-cppbuiltin.c (c_cpp_builtins): Define either
9674         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
9675         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
9676         (C Dialect Options): Document -fgnu89-inline.
9677         * doc/extend.texi (Function Attributes): Explain what the
9678         gnu_inline attribute does.
9679         * doc/cpp.texi (Common Predefined Macros): Document
9680         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
9681
9682 2007-03-05  Ian Lance Taylor  <iant@google.com>
9683
9684         PR tree-optimization/31034
9685         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
9686         half-range if the other side is an overflow infinity.
9687
9688 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
9689
9690         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
9691         (bfin*-linux-uclibc*): New configuration.
9692         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
9693         defining.
9694         * config/bfin/linux.h: New file.
9695         * config/bfin/libgcc-bfin.ver: New file.
9696         * config/bfin/t-bfin-uclinux: New file.
9697         * config/bfin/t-bfin-linux: New file.
9698         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
9699         (TARGET_OS_CPP_BUILTINS): New macro.
9700
9701 2007-03-05  Richard Guenther  <rguenther@suse.de>
9702
9703         * fold-const.c (fold_binary): Remove duplicate folding
9704         of comparison of non-null ADDR_EXPR against null.
9705
9706 2007-03-05  Richard Guenther  <rguenther@suse.de>
9707             Dorit Nuzman  <dorit@il.ibm.com>
9708
9709         PR tree-optimization/26420
9710         * tree-vectorizer.c (vectorize_loops): Bail out early if there
9711         are no loops in the function.  Only print the number of
9712         vectorized loops if it is greater than zero or we are supposed
9713         to print information about unvectorized loops.
9714
9715 2007-03-05  Revital Eres  <eres@il.ibm.com>
9716
9717         * gcc.dg/var-expand1.c: New test.
9718         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
9719         when an accumulator is expanded.
9720
9721 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9722
9723         PR other/30465
9724         * c-common.c (convert_and_check): Don't give warnings for
9725         conversion if 'expr' already overflowed.
9726
9727 2007-03-04  Roger Sayle  <roger@eyesopen.com>
9728
9729         PR middle-end/30744
9730         * fold-const.c (fold_comparison): Enforce type consistency when
9731         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
9732
9733 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
9734
9735         * tree-ssa-address.c (create_mem_ref): Do not put an expression
9736         containing a cast to the base of TARGET_MEM_REF.
9737
9738 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
9739
9740         * tree.c (tree_contains_struct_check_failed): Remove spurious
9741         whitespace from error message.
9742
9743 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
9744
9745         PR target/30406
9746         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
9747         instead of precision.
9748
9749 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
9750             Nathan Sidwell  <nathan@codesourcery.com>
9751
9752         * emit-rtl.c (find_auto_inc): New.
9753         (try_split): recreate REG_INC notes,
9754         Use regular for loops rather than whiles.
9755
9756 2007-03-03  Andreas Schwab  <schwab@suse.de>
9757
9758         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
9759         * configure: Regenerate.
9760
9761 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9762
9763         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
9764         flag_rounding_math, not flag_unsafe_math_optimizations.
9765
9766         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
9767         fold_build2.
9768         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
9769         alpha_fold_vector_minmax): Likewise.
9770         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
9771         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
9772
9773 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
9774
9775         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
9776         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
9777         if the lhs has side-effects.
9778         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
9779
9780 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
9781
9782         * config/i386/i386.h (TUNEMASK): Remove define.
9783         (ARCHMASK): Remove define.
9784         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
9785          Use ix86_arch_mask variable instead of ARCHMASK.
9786         * config/i386/i386.c (override_options): Ditto.
9787         (standard_80387_constant_p): Ditto.
9788
9789 2007-03-02  Ian Lance Taylor  <iant@google.com>
9790
9791         Used signed infinities in VRP.
9792         * tree-vrp.c (uses_overflow_infinity): New static function.
9793         (supports_overflow_infinity): New static function.
9794         (make_overflow_infinity): New static function.
9795         (negative_overflow_infinity): New static function.
9796         (positive_overflow_infinity): New static function.
9797         (is_negative_overflow_infinity): New static function.
9798         (is_positive_overflow_infinity): New static function.
9799         (is_overflow_infinity): New static function.
9800         (overflow_infinity_range_p): New static function.
9801         (compare_values_warnv): New function split out of compare_values.
9802         (compare_value): Call it.
9803         (set_value_range_to_nonnegative): Add overflow_infinity
9804         parameter.  Change caller.
9805         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
9806         Change callers.
9807         (vrp_expr_computes_nonzero): Likewise.
9808         (compare_ranges, compare_range_with_value): Likewise.
9809         (compare_name_with_value, compare_names): Likewise.
9810         (vrp_evaluate_conditional): Likewise.
9811         (set_value_range): Handle infinity
9812         (vrp_operand_equal_p, operand_less_p): Likewise.
9813         (extract_range_from_assert): Likewise.
9814         (vrp_int_const_binop): Likewise.
9815         (extract_range_from_binary_expr): Likewise.
9816         (extract_range_from_unary_expr): Likewise.
9817         (extract_range_from_comparison): Likewise.
9818         (extract_range_from_expr): Likewise.
9819         (dump_value_range): Likewise.
9820         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
9821         (test_for_singularity): Likewise.
9822         (vrp_int_const_binop): Remove inline qualifier.
9823         (adjust_range_with_scev): Add comment.
9824         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
9825
9826 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
9827
9828         * tree-ssa-structalias.c (could_have_pointers): Tidy.
9829         (get_constraint_for): Likewise.
9830         (do_structure_copy): Likewise.
9831         (find_func_aliases): Fix references to MODIFY_EXPR.
9832         (intra_create_variable_infos): Tidy.
9833         * tree-ssa-operands.c (add_virtual_operand): Add argument
9834         IS_CALL_SITE.
9835         When adding members of alias sets, if IS_CALL_SITE is true and
9836         the symbol is not call-clobbered, skip it.
9837         Adjust all callers.
9838
9839 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
9840
9841         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
9842         entry by means of emit_insn_at_entry.
9843
9844 2007-03-02  Richard Henderson  <rth@redhat.com>
9845
9846         * expr.h (promoted_input_arg): Remove decl.
9847         * function.c (promoted_input_arg): Merge into ...
9848         * combine.c (setup_incoming_promotions): ... only caller.
9849         Rearrange to avoid double loop.
9850
9851 2007-03-02  Ben Elliston  <bje@au.ibm.com>
9852             Peter Bergner  <bergner@vnet.ibm.com>
9853             Janis Johnson  <janis187@us.ibm.com>
9854
9855         * config/rs6000/dfp.md: New file.
9856         * config/rs6000/rs6000.md: Include dfp.md.
9857         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
9858         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
9859         and TDmode decimal float modes in FP registers.
9860         (num_insns_constant): Likewise.
9861         (rs6000_legitimate_offset_address_p): Likewise.
9862         (rs6000_legitimize_address): Likewise.
9863         (rs6000_legitimize_reload_address): Likewise.
9864         (rs6000_legitimate_address): Likewise.
9865         (rs6000_emit_move): Likewise.
9866         (function_arg_boundary): Likewise.
9867         (function_arg_advance): Likewise.
9868         (rs6000_darwin64_record_arg_recurse): Likewise.
9869         (function_arg): Likewise.
9870         (rs6000_gimplify_va_arg): Likewise.
9871         (rs6000_split_multireg_move): Likewise.
9872         (rs6000_output_function_epilogue): Likewise.
9873         (rs6000_output_function_epilogue): Likewise.
9874         (rs6000_register_move_cost): Likewise.
9875         (rs6000_function_value): Likewise.
9876         (rs6000_libcall_value): Likewise.
9877
9878 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
9879
9880         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
9881
9882 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
9883
9884         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
9885         Use $MULTIDIR to choose between the kernel and RTP headers,
9886         and use $WIND_BASE and $WIND_USR to locate them.
9887
9888 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
9889
9890         * config/i386/i386.c (override_options): Put initialization of
9891         ix86_tune_mask and ix86_arch_mask to the correct place.
9892
9893 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
9894             Michael Meissner  <michael.meissner@amd.com>
9895
9896         PR target/31019
9897         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
9898         (ARCHMASK): Define.
9899         (TARGET_CMOVE): Use ARCHMASK.
9900         (TARGET_CMPXCHG): Ditto.
9901         (TARGET_CMPXCHG8B): Ditto.
9902         (TARGET_XADD): Ditto.
9903         (TARGET_BSWAP): Ditto.
9904         * config/i386/i386.c (ix86_tune_mask): New global variable.
9905         (ix86_arch_mask): Ditto.
9906         (override_options): Initialize ix86_tune_mask and
9907         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
9908         target_flags.
9909
9910 2007-03-02  Ben Elliston  <bje@au.ibm.com>
9911
9912         PR 30992
9913         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
9914
9915 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
9916
9917         * target.h (init_dwarf_reg_sizes_extra): New target hook.
9918         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
9919         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
9920         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
9921         hook.
9922         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
9923         rs6000_init_dwarf_reg_sizes_extra): New.
9924         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
9925         SPE register high parts.
9926
9927 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
9928
9929         * Makefile.in: Add install-pdf target as
9930         copied from automake v1.10 rules.
9931         * configure.ac: Add install-pdf to target list.
9932         * configure: Regenerate.
9933
9934 2007-03-01  Paul Brook  <paul@codesourcery.com>
9935
9936         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
9937         modes to LDRD for DImode.
9938         (output_move_double): Fixup out of range ldrd/strd.
9939         (vfp_secondary_reload_class): Rename...
9940         (coproc_secondary_reload_class): ... to this.  Add wb argument.
9941         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
9942         coproc_secondary_reload_class for CLASS_IWMMXT.
9943         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
9944         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
9945
9946 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
9947
9948         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
9949         factor by the estimated number of iterations.
9950         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
9951         prefetch latency.
9952
9953         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
9954         decode_caches_intel, detect_caches_intel): New functions.
9955         (host_detect_local_cpu): Use detect_caches_amd and
9956         detect_caches_intel.
9957
9958 2007-03-01  Richard Henderson  <rth@redhat.com>
9959
9960         * expr.c (emit_move_complex_push): Export.
9961         (emit_move_complex_parts): Split out from ...
9962         (emit_move_complex): ... here.
9963         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
9964         * config/i386/i386.md (movcdi): New.
9965
9966 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
9967
9968         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
9969         size of mode1 to check for tieable modes in MMX case.
9970
9971 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
9972
9973         * Makefile.in (rtlanal.o): Depend on tree.h.
9974         * rtl.h (offset_within_section_p, split_const): Declare.
9975         * rtlanal.c: Include tree.h.
9976         (offset_within_block_p): New function, taken from
9977         mips_offset_within_object_p.
9978         (split_const): New function, taken from mips_split_const.
9979         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
9980         Declare.
9981         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
9982         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
9983         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
9984         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
9985         (m68k_illegitimate_symbolic_constant_p): New function.
9986         * config/m68k/m68k.md (movsi): Remove misleading predicates.
9987         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
9988         symbolic constant that might be outside the symbol's section,
9989         move the symbol first and then add the offset.
9990         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
9991         Override.
9992         * config/mips/mips.c (mips_split_const): Delete.
9993         (mips_offset_within_object_p): Delete.
9994         (mips_symbolic_constant_p): Use offset_within_section_p and
9995         split_const instead of mips_offset_within_object_p and
9996         mips_split_const.
9997         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
9998         (mips_legitimize_const_move, print_operand_reloc)
9999         (mips_dangerous_for_la25_p): Use split_const instead of
10000         mips_split_const.
10001
10002 2007-02-28  Eric Christopher  <echristo@apple.com>
10003
10004         * Makefile.in (install-include-dir): Don't rm -rf include.
10005
10006 2007-02-28  Richard Guenther  <rguenther@suse.de>
10007
10008         PR middle-end/30364
10009         * fold-const.c (fold_binary): Do not associate expressions
10010         with more than one variable for integer types that do not wrap.
10011
10012 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
10013
10014         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
10015         Delete, and replace with...
10016         (fold_builtin_call_array): This.  Update callers to use it.
10017         * fold-const.c (fold_build_call_list): Delete, and replace with...
10018         (fold_build_call_array): This.
10019         (fold_build_call_list_initializer): Delete, and replace with...
10020         (fold_build_call_array_initializer): This.
10021         * tree.h: Update declarations to reflect above changes.
10022
10023         * c-typeck.c (build_function_call): Store converted arguments
10024         in a stack-allocated array instead of building a list.
10025         (convert_arguments): Store arguments in the array passed in as an
10026         argument, and return the actual number of arguments.
10027         * c-format.c: (check_function_format): Pass arguments in an
10028         array instead of a list.
10029         * c-common.c (check_function_nonnull): Likewise.
10030         (check_function_sentinel): Likewise.
10031         (check_function_arguments): Likewise.
10032         * c-common.h: Update declarations to reflect above changes.
10033
10034 2007-02-28  Jan Hubicka  <jh@suse.cz>
10035
10036         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
10037         PRED_NEGATIVE_RETURN): Update outcomes.
10038
10039 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
10040
10041         * calls.c (emit_library_call_value_1): Handle partial registers
10042         correctly when building up CALL_INSN_FUNCTION_USAGE.
10043
10044 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10045
10046         * pa/predicates.md (move_src_operand): Allow zero for mode.
10047         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
10048         move pattern.
10049
10050 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
10051
10052         PR target/30970
10053         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
10054         *movv2df_internal): Enable pattern only for valid operand
10055         combinations.
10056         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
10057         tie only 128bit modes. For MMX registers, tie only 64bit modes.
10058
10059 2007-02-27  Mike Stump  <mrs@apple.com>
10060
10061         * config/darwin-crt3.c: Avoid compilation when compiling for a
10062         kext multilib.
10063
10064 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
10065
10066         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
10067         FIXED_INCLUDE_DIR.
10068         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
10069         for fixed headers and limits.h.
10070         (install-include-dir, install-headers-tar, install-headers-cpio,
10071         install-headers-cp, real-install-headers-tar,
10072         real-install-headers-cpio, real-install-headers-cp): Handle
10073         include-fixed as well as include.
10074         (install-mkheaders): Don't install files that go only in include
10075         not include-fixed.
10076         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
10077         from GCC_INCLUDE_DIR.
10078         * gcc.c (process_command): Remove special -BstageN/ handling.
10079         (do_spec_1): Add include-fixed directories.
10080
10081 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10082
10083         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
10084         _smulsi3_highpart.
10085         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
10086         New functions.
10087         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
10088         patterns.
10089
10090 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
10091
10092         * c-common.c (get_priority): Add check for
10093         SUPPORTS_INIT_PRIORITY.
10094
10095 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10096
10097         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
10098
10099         * config/bfin/bfin.c: Include "cfglayout.h".
10100         (MAX_LSETUP_DISTANCE): New macro.
10101         (struct loop_info): New members incoming, incoming_src and
10102         incoming_dest.  Delete member predecessor.
10103         (length_for_loop): New function.
10104         (bfin_optimize_loop): Handle more different loop structures.
10105         (bfin_discover_loop): Rework detection of predecessor blocks by
10106         examining incoming edges.
10107         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
10108         bfin_reorg_loops.
10109         (bfin_reorder_loops): New function.
10110         (bfin_reorg_loops): Use these three new functions.
10111
10112         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
10113         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
10114         (CONSTRAINT_LEN): Add entry for 'q'.
10115         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
10116         Add 'q' constraints.
10117         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
10118         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
10119
10120         * config/bfin/bfin.md (add_with_carry): New pattern.
10121         (s_or_u, su_optab, su_modifier): New code macros/attrs.
10122         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
10123         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
10124         support unsigned multiplies too.  Removed incorrect commutativity from
10125         operand 1 constraint where appropriate.
10126         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
10127         patterns.
10128         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
10129         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
10130         New patterns.
10131         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
10132         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
10133         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
10134         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
10135         usmulhisi_hh_huh): New patterns.
10136
10137         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
10138         lshifthi3): Fix output template to use half reg for operand 2.
10139
10140         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
10141         instead of R2.
10142
10143         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
10144
10145 2007-02-27  Andreas Schwab  <schwab@suse.de>
10146
10147         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
10148
10149 2007-02-27  Jan Hubicka  <jh@suse.cz>
10150
10151         * predict.c (last_basic_block_p): Remove.
10152         (tree_estimate_probability): Update return heuristic for commonized
10153         return blocks.
10154
10155 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
10156
10157         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
10158
10159 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
10160
10161         * doc/include/gcc-common.texi (versionsubtitle): New macro.
10162         * doc/cpp.texi: Standardize title page.
10163         * doc/cppinternals.texi: Likewise.
10164         * doc/gcc.texi: Standardize title page, remove version number
10165         from copyright page.
10166         * doc/gccint.texi: Likewise.
10167         * doc/install.texi: Standardize title page, add table of
10168         contents.
10169
10170 2007-02-26  Jan Hubicka  <jh@suse.cz>
10171
10172         * predict.def: Set outcomes according to more recent results.
10173         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
10174         Remove dead predictors.
10175         * predict.c (return_prediction): Fix pasto.
10176
10177 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10178
10179         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
10180         change; avoid a memory leak when returning early.
10181
10182 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
10183
10184         * c-decl.c (static_ctors): Move to c-common.c.
10185         (static_dtors): Likewise.
10186         (finish_function): Use c_record_cdtor_fn.
10187         (build_cdtor): Move to c-common.c.
10188         (c_write_global_declarations): Use c_build_cdtor_fns.
10189         * c-common.h (static_ctors): Declare.
10190         (static_dtors): Likewise.
10191         (c_record_cdtor_fn): Likewise.
10192         (c_build_cdtor_fns): Likewise.
10193         * c-common.c (static_ctors): New variable.
10194         (static_dtors): Likewise.
10195         (c_record_cdtor_fn): New function.
10196         (build_cdtor): Move from c-decl.c
10197         (c_build_cdtor_fns): New function.
10198
10199         * output.h (assemble_addr_to_section): Declare.
10200         (get_cdtor_priority_section): Likewise.
10201         * varasm.c (assemble_addr_to_section): New function.
10202         (get_cdtor_priority_section): Likewise.
10203         (default_named_section_asm_out_destructor): Use them.
10204         (destor_dtor_section_asm_out_destructor): Likewise.
10205         (default_named_section_asm_out_constructor): Likewise.
10206         (default_ctor_section_asm_out_constructor): Likewise.
10207         * config.gcc (*-*-vxworks*): Include vxworks.o.
10208         * config/t-vxworks (vxworks.o): New target.
10209         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
10210         (TARGET_ASM_CONSTRUCTOR): Define.
10211         (TARGET_ASM_DESTRUCTOR): Likewise.
10212         (vxworks_asm_out_constructor): Declare.
10213         (vxworks_asm_out_destructor): Likewise.
10214
10215         * c-common.c (get_priority): Check that we have not just an
10216         INTEGER_CST, but an integer constant with integeral type.
10217
10218 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
10219
10220         PR tree-optimization/30938
10221         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
10222         use &dt[nargs-1] instead of &dt[nargs] in the call to
10223         vect_is_simple_use().
10224
10225 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
10226
10227         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
10228         from register elimination as PRE_MODIFY / POST_MODIFY increments.
10229         Do not attempt to handle MEM inside auto-inc expressions.
10230         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
10231         of a register modified by an auto-inc expression.  However, do handle
10232         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
10233         (elimination_effects): Prohibit elimination of a register modified
10234         by an auto-inc expression.  Disable register elimination rules whose
10235         target register is modified by an auto-inc expression with variable
10236         increment.
10237
10238 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
10239
10240         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
10241         off-by-one error.
10242         (array_at_struct_end_p): New function.
10243         (idx_infer_loop_bounds): Use it.
10244         (estimate_numbers_of_iterations_loop): Export.
10245         * predict.c (predict_loops): Use estimated_loop_iterations_int.
10246         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
10247         (tree_estimate_probability): Call record_loop_exits.
10248         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
10249         (estimated_loop_iterations, estimated_loop_iterations_int,
10250         estimated_loop_iterations_tree): New functions.
10251         (analyze_siv_subscript_cst_affine,
10252         compute_overlap_steps_for_affine_1_2,
10253         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
10254         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
10255         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
10256         (PRED_LOOP_ITERATIONS_GUESSED): New.
10257         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
10258         * cfgloop.h (estimate_numbers_of_iterations_loop,
10259         estimated_loop_iterations_int): Declare.
10260
10261 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
10262
10263         * doc/extend.texi: Document optional priority argument to
10264         constructors and destructors.
10265         * tree.c (init_priority_for_decl): Adjust GTY markers.
10266         (init_ttree): Use priority-info hash functions for
10267         init_priority_for_decl.
10268         (tree_map_eq): Rename to ...
10269         (tree_map_base_eq): ... this.
10270         (tree_map_marked_p): Rename to ...
10271         (tree_map_base_marked_p): ... this.
10272         (tree_map_base_hash): New function.
10273         (decl_init_priority_lookup): Rework.
10274         (decl_fini_priority_lookup): New function.
10275         (decl_priority_info): New function.
10276         (decl_init_priority_insert): Use it.
10277         (decl_fini_priority_insert): Likewise.
10278         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
10279         hierarchy.
10280         (decl_restrict_base_insert): Likewise.
10281         (decl_debug_expr_insert): Likewise.
10282         (decl_value_expr_lookup): Likewise.
10283         (decl_value_expr_insert): Likewise.
10284         * tree.h (priority_type): New type.
10285         (decl_init_priority_lookup): Use priority_type.
10286         (decl_fini_priority_lookup): New function.
10287         (decl_init_priority_insert): Use priority_type.
10288         (decl_fini_priority_insert): New function.
10289         (DECL_HAS_INIT_PRIORITY): Tweak comments.
10290         (DECL_INIT_PRIORITY): Likewise.
10291         (SET_DECL_INIT_PRIORITY): Add comment.
10292         (DECL_FINI_PRIORITY): New macro.
10293         (SET_DECL_FINI_PRIORITY): Likewise.
10294         (DEFAULT_INIT_PRIORITY): Document.
10295         (MAX_INIT_PRIORITY): Likewise.
10296         (MAX_RESERVED_INIT_PRIORITY): Likewise.
10297         (tree_map_base): New type.
10298         (tree_map_base_eq): New function.
10299         (tree_map_base_hash): Likewise.
10300         (tree_map_base_marked_p): Likewise.
10301         (tree_map): Inherit from tree_map_base.
10302         (tree_map_eq): Make it a macro.
10303         (tree_map_marked_p): Likewise.
10304         (tree_int_map): Inherit from tree_map_base.
10305         (tree_int_map_eq): Make it a macro.
10306         (tree_int_map_hash): Likewise.
10307         (tree_int_map_marked_p): Likewise.
10308         (tree_priority_map): New type.
10309         (tree_priority_map_eq): New macro.
10310         (tree_priority_map_hash): Likewise.
10311         (tree_priority_map_marked_p): Likewise.
10312         * varasm.c (emults_decl): Adjust for refactoring of tree_map
10313         hierarchy.
10314         (emutls_common_1): Likewise.
10315         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
10316         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
10317         of tree_map hierarchy.
10318         * tree-cfg.c (move_stmt_r): Likewise.
10319         (new_label_mapper): Likewise.
10320         * c-tree.h (c_expand_body): Move to ...
10321         * c-common.h (c_expand_body): ... here.
10322         * c-decl.c (c_expand_body): Move to ...
10323         * c-common.c (c_expand_body): ... here.
10324         (c_common_attribute_table): Allow 1 argument for the constructor
10325         and destructor attributes.
10326         (get_priority): New function.
10327         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
10328         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
10329
10330 2007-02-24  Jan Hubicka  <jh@suse.cz>
10331
10332         PR middle-end/30509
10333         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
10334
10335 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
10336             Jan Hubicka  <jh@suse.cz>
10337
10338         PR target/30778
10339         * i386.c (counter_mode): New function.
10340         (expand_set_or_movmem_via_loop): Use it.
10341         (expand_movmem_epilogue): Likewise; fix pasto.
10342         (ix86_expand_movmem): Do emit guard even for constant counts.
10343         (ix86_expand_setmem): Likewise.
10344
10345 2007-02-25  Nick Clifton  <nickc@redhat.com>
10346
10347         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
10348         (JUMP_TABLES_IN_TEXT_SECTION): Define.
10349
10350 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
10351
10352         PR target/30770
10353         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
10354         count argument with 0x10, not with 0x16.
10355         (expand_setmem_epilogue): Ditto.
10356
10357 2007-02-24  Mike Stump  <mrs@apple.com>
10358
10359         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
10360         symbols.
10361
10362 2007-02-24  Richard Guenther  <rguenther@suse.de>
10363
10364         PR middle-end/30951
10365         * fold-const.c (fold_binary): Fold x +- CST op x for
10366         EQ_EXPR and NE_EXPR.
10367
10368 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10369
10370         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
10371
10372 2007-02-24  Jan Hubicka  <jh@suse.cz>
10373
10374         * cgraphunit.c (decide_is_function_needed): Honor
10375         -fkeep-inline-functions.
10376
10377 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10378
10379         * builtins.c (fold_builtin_modf): New.
10380         (fold_builtin_2): Use it.
10381
10382 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
10383
10384         * loop-iv.c (implies_p): Detect additional cases where A implies B.
10385         (determine_max_iter): Take additional LOOP arg; all callers changed.
10386         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
10387         one using simplifications.
10388         (simplify_using_initial_values): Return if the expression becomes
10389         invalid due to altered regs.
10390
10391 2007-02-23  DJ Delorie  <dj@redhat.com>
10392
10393         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
10394
10395 2007-02-23  Mike Stump  <mrs@apple.com>
10396
10397         * tlink.c (scan_linker_output): Parse linker messages from
10398         darwin9's linker better.
10399
10400 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
10401
10402         PR debug/29614
10403         * varpool.c (varpool_assemble_pending_decls):  Set
10404         varpool_last_needed_node to null.
10405
10406 2007-02-23  DJ Delorie  <dj@redhat.com>
10407
10408         * config/i386/i386.c (ix86_data_alignment): Don't specify an
10409         alignment bigger than the object file can handle.
10410
10411 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
10412
10413         PR target/30825
10414         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
10415         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
10416         (*movsf_1): Penalize MMX moves.
10417
10418 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
10419
10420         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
10421         2^32-1 or more times unless flag_unsafe_loop_optimizations.
10422
10423         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
10424
10425 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10426
10427         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
10428         (fold_builtin_1): Use them.
10429         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
10430         BUILT_IN_SIGNIFICAND.
10431
10432 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
10433
10434         * config/i386/i386.c (bdesc_1arg): Initialize
10435         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
10436         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
10437         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
10438         and IX86_BUILTIN_MOVSLDUP.
10439
10440 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
10441
10442         PR rtl-optimization/30841
10443         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
10444
10445 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10446
10447         * builtins.c (fold_builtin_frexp): New.
10448         (fold_builtin_2): Use it.
10449
10450 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
10451
10452         * doc/invoke.texi (Spec Files): Document getenv spec function.
10453
10454         * gcc.c (getenv_spec_function): New function.
10455         (static_spec_functions): Add it.
10456         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
10457         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
10458         header files.
10459
10460 2007-02-22  Michael Matz  <matz@suse.de
10461
10462         PR c++/29433
10463         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
10464         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
10465
10466 2007-02-22  Ian Lance Taylor  <iant@google.com>
10467
10468         PR debug/30898
10469         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
10470         (mem_loc_descriptor): Call it.
10471
10472 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
10473             Ira Rosen  <irar@il.ibm.com>
10474
10475         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
10476
10477 2007-02-22  Ira Rosen  <irar@il.ibm.com>
10478
10479         PR tree-optimization/30843
10480         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
10481         stores only after all the group is vectorized.
10482
10483 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
10484
10485         PR tree-optimization/30858
10486         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
10487         in the reduction cycle have a single use in the loop.
10488         * tree-vectorizer.h (relevant): Add documentation.
10489
10490 2007-02-20  Mike Stump  <mrs@apple.com>
10491
10492         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
10493         * configure: Regenerate.
10494
10495 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10496
10497         Change the defaults of some parameters and options.
10498         * config/spu/spu-protos.h (spu_optimization_options): Declare.
10499         * config/spu/spu.c (spu_optimization_options): Add.
10500         (spu_override_options): Change params in spu_optimization_options.
10501         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
10502
10503         Register 127 is only 16 byte aligned when used as a frame pointer.
10504         * config/spu/spu-protos.h (spu_init_expanders): Declare.
10505         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
10506         HARD_FRAME_POINTER_REGNUM.
10507         (spu_legitimate_address):  Use regno_aligned_for_reload.
10508         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
10509         aligned when frame_pointer_needed is true.
10510         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
10511         to 8 bits.
10512         * config/spu/spu.h (INIT_EXPANDERS): Define.
10513
10514         Make sure shift and rotate instructions have valid immediate operands.
10515         * config/spu/predicates.md (spu_shift_operand): Remove.
10516         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
10517         * config/spu/constraints.md (W, O): Extend range.
10518         * config/spu/spu.md (umask, nmask): Define.
10519         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
10520         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
10521         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
10522         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
10523         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
10524         (lshr<mode>3_reg):  Fix rtl description.
10525
10526         Make sure mulhisi immediate operands are valid.
10527         * config/spu/predicates.md (imm_K_operand): Add.
10528         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
10529
10530         Generate constants using fsmbi and andi.
10531         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
10532         (print_operand, spu_split_immediate, classify_immediate,
10533         fsmbi_const_p): Handle IC_FSMBI2.
10534
10535         Correctly handle a CONST_VECTOR containing symbols.
10536         * config/spu/spu.c (print_operand): Handle HIGH correctly.
10537         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
10538         (immediate_load_p): Allow symbols that use 2 instructions to create.
10539         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
10540         with symbols when flag_pic is set.
10541         (const_vector_immediate_p): New.
10542         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
10543         accept a CONST_VECTOR with symbols.
10544         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
10545         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
10546         correctly.
10547         * config/spu/spu.md (high, low): Delete.
10548         (low_<mode>): Define.
10549
10550         Remove INTRmode and INTR_REGNUM, which didn't work.
10551         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
10552         of INTR_REGNUM.
10553         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
10554         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
10555         peephole2 pattern): Don't use INTR or 131.
10556         (movintrcc): Delete.
10557         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
10558         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
10559         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
10560         (UNSPEC_SET_INTR): Add.
10561         * config/spu/spu-modes.def (INTR): Remove.
10562
10563         More accurate warnings about run-time relocations.
10564         * config/spu/spu.c (reloc_diagnostic): Test in_section.
10565
10566         Correctly warn about immediate arguments to specific intrinsics.
10567         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
10568         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
10569         the instruction predicate.
10570
10571         Fix tree check errors with latest update.
10572         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
10573         CALL_EXPR_ARG.
10574         (spu_expand_builtin): Use CALL_EXPR_FN.
10575
10576         Add missing specific intrinsics.
10577         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
10578         si_bislede.
10579         * config/spu/spu_internals.h: Ditto.
10580
10581         Fix incorrect operand modifiers.
10582         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
10583         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
10584
10585         Optimize one case of zero_extend of a vec_select.
10586         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
10587
10588         Accept any immediate for hbr.
10589         * config/spu/spu.md (hbr):  Change s constraints to i.
10590
10591 2007-02-21  Paul Brook  <paul@codesourcery.com>
10592
10593         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
10594         condexec_count when skipping USE and CLOBBER.
10595
10596 2007-02-21  Nick Clifton  <nickc@redhat.com>
10597
10598         * common.opt (Warray-bounds): Add Warning attribute.
10599         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
10600         Likewise.
10601         (fsized-zeroes): Add Optimization attribute.
10602         (fsplit-wide-types, ftree-scev-cprop): Likewise.
10603         * c.opt (Wc++0x-compat): Add Warning attribute.
10604
10605 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
10606
10607         PR middle-end/30761
10608         * reload1.c (eliminate_regs_in_insn): In the single_set special
10609         case, attempt to re-recognize the insn before falling back to
10610         having reload fix it up.
10611
10612 2007-02-20  Eric Christopher  <echristo@gmail.com>
10613
10614         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
10615         Rewrite accordingly.
10616         (frv_read_iacc_argument): Ditto.
10617         (frv_expand_set_builtin): Take a call instead of arglist, update for
10618         above changes.
10619         (frv_expand_unop_builtin): Ditto.
10620         (frv_expand_binop_builtin): Ditto.
10621         (frv_expand_cut_builtin): Ditto.
10622         (frv_expand_binopimm_builtin): Ditto.
10623         (frv_expand_voidbinop_builtin): Ditto.
10624         (frv_expand_int_void2arg): Ditto.
10625         (frv_expand_prefetches): Ditto.
10626         (frv_expand_voidtriop_builtin): Ditto.
10627         (frv_expand_voidaccop_builtin): Ditto.
10628         (frv_expand_load_builtin): Ditto.
10629         (frv_expand_store_builtin): Ditto.
10630         (frv_expand_mdpackh_builtin): Ditto.
10631         (frv_expand_mclracc_builtin): Ditto.
10632         (frv_expand_mrdacc_builtin): Ditto.
10633         (frv_expand_mwtacc_builtin): Ditto.
10634         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
10635         calls for above.
10636
10637 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
10638
10639         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
10640         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
10641         cmpb instruction.
10642         (HAVE_GAS_DFP): Check for assembler support of decimal floating
10643         point instructions.
10644         * configure: Regenerate.
10645         * config.in: Regenerate.
10646         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
10647         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
10648         masks to power6 and power6x and to POWERPC_MASKS.
10649         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
10650         _ARCH_PWR6.
10651         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
10652         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
10653         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
10654         Access PROTOTYPE as variable, not mask.
10655
10656 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
10657
10658         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
10659         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
10660         * combine.c (adjust_for_new_dest): Use it.
10661         * postreload.c (reload_combine): Likewise.
10662
10663 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
10664
10665         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
10666         notes on an insn with multiple sets, even if single_set returns
10667         non-NULL for that insn.
10668
10669 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10670
10671         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
10672         scalbn and scalbln.
10673
10674 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
10675
10676         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
10677         if user didn't pass it.
10678         * config/i386/darwin.h (CC1_SPEC): Likewise.
10679         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
10680         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
10681         -mmacosx-version-min.
10682
10683 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10684             Uros Bizjak  <ubizjak@gmail.com>
10685
10686         * optabs.h (enum optab_index): Add new OTI_scalb.
10687         (scalb_optab): Define corresponding macro.
10688         * optabs.c (init_optabs): Initialize scalb_optab.
10689         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
10690         patterns.
10691         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
10692         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
10693         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
10694         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
10695         flag_unsafe_math_optimizations is set.
10696
10697         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
10698         to implement scalbf, scalb and scalbl built-ins as inline x87
10699         intrinsics.
10700
10701 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10702             DJ Delorie <dj@redhat.com>
10703
10704         PR other/30824
10705         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
10706         (diagnostic_report_diagnostic): ... here, and turn them into real
10707         errors. If warnings are inhibited, no need to do anything.
10708
10709 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
10710
10711         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
10712         better code generation.
10713
10714 2007-02-20  Ben Elliston  <bje@au.ibm.com>
10715
10716         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
10717
10718 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
10719
10720         * config/alpha/alpha.c, config/alpha/alpha.md,
10721         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
10722         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
10723         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
10724         config/arm/lib1funcs.asm: Follow spelling conventions.
10725
10726         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
10727         config/fr30/fr30.md, config/i386/i386.h,
10728         config/iq2000/iq2000.h, config/iq2000/predicates.md,
10729         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
10730         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
10731         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
10732         config/rs6000/altivec.md, config/rs6000/rs6000.c,
10733         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
10734         config/sparc/sparc.c, config/sparc/sparc.h,
10735         config/sparc/sparc.md, config/spu/constraints.md,
10736         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
10737         conventions.
10738
10739 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
10740
10741         PR target/29943
10742         * varasm.c (use_blocks_for_decl_p): Return false for decls with
10743         alias attribute.
10744
10745 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
10746
10747         * doc/invoke.texi (-ftree-lrs): Remove.
10748
10749 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
10750
10751         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
10752         NULL.
10753
10754 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
10755
10756         * config/ia64/ia64.c (ia64_expand_builtin): Use the
10757         new CALL_EXPR_FN macro for retrieving the function
10758         declaration of the input expression.
10759
10760 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10761
10762         * c.opt (Waddress): New.
10763         * common.opt (Walways-true): Delete.
10764         (Wstring-literal-comparison): Delete.
10765         * doc/invoke.texi (Warning Options): Delete -Walways-true and
10766         -Wstring-literal-comparison. Add -Waddress.
10767         (Waddress): New.
10768         (Walways-true): Delete.
10769         (Wstring-literal-comparison): Delete.
10770         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
10771         consistently instead of -Walways-true in example.
10772         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
10773         * c-typeck.c (parser_build_binary_op): Replace
10774         -Wstring-literal-comparison and -Walways-true with -Waddress.
10775         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
10776         with -Waddress.
10777
10778 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
10779
10780         * tree-cfg.c (dump_function_to_file): Be prepared for functions
10781         without DECL_STRUCT_FUNCTION initialized.
10782
10783 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
10784
10785         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
10786         due to calls to functions taking pointers as parameters.
10787
10788 2007-02-19  Richard Henderson  <rth@redhat.com>
10789
10790         PR debug/29558
10791         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
10792         in memory.
10793
10794 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10795
10796         * config/s390/s390.c (s390_call_saved_register_used,
10797         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
10798         accessed to the new scheme.
10799
10800 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
10801
10802         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
10803         (cris_print_index, cris_print_operand, cris_print_operand_address)
10804         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
10805         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
10806         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
10807         GET_CODE () == xxx.
10808         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
10809         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
10810         GO_IF_LEGITIMATE_ADDRESS): Ditto.
10811         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
10812         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
10813         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
10814         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
10815         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
10816         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
10817         (uminsi3, call, call_value): Ditto.
10818         (define_split: indir_to_reg_split, unnamed): Ditto.
10819
10820 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
10821
10822         PR tree-optimization/30975
10823         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
10824         wrong assert.
10825
10826 2007-02-18  Eric Christopher  <echristo@gmail.com>
10827
10828         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
10829         Remove use of arglist.
10830         (mips_expand_builtin): Remove use of arglist, pass in expr.
10831         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
10832         (mips_expand_builtin_movtf): Ditto.
10833         (mips_expand_builtin_compare): Ditto.
10834
10835 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
10836
10837         * tree-sra.c (sra_build_assignment): Replace assertion
10838         checking with a comment explaining why it can't be done.
10839
10840 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
10841
10842         PR middle-end/30833
10843         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
10844         during CALL_EXPR representation conversion.
10845         * tree-ssa-propagate.c (set_rhs): Likewise.
10846
10847 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
10848
10849         * tree-sra.c (sra_build_assignment): Disable assertion checking
10850         for now.
10851
10852 2007-02-18  Roger Sayle  <roger@eyesopen.com>
10853
10854         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
10855         instead of calling build2 with a GIMPLE_MODIFY_STMT.
10856         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
10857         Likewise.
10858         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
10859         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
10860         gimplify_init_ctor_eval_range, gimple_push_cleanup,
10861         gimplify_omp_for, gimplify_omp_atomic_pipeline,
10862         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
10863         force_gimple_operand): Likewise.
10864         * ipa-cp.c (constant_val_insert): Likewise.
10865         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
10866         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
10867         perfect_nestify): Likewise.
10868         * langhooks.c (lhd_omp_assignment): Likewise.
10869         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
10870         lower_copyprivate_clauses, lower_send_clauses,
10871         lower_send_shared_vars, expand_parallel_call,
10872         expand_omp_for_generic, expand_omp_for_static_nochunk,
10873         expand_omp_for_static_chunk, expand_omp_sections,
10874         lower_omp_single_copy, lower_omp_for_lastprivate,
10875         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
10876         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
10877         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
10878         Likewise.
10879
10880 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
10881
10882         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
10883         config/sh/sh.md: Follow spelling conventions.
10884
10885         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
10886         config/frv/predicates.md: Follow spelling conventions.
10887
10888         * config/m68k/linux-unwind.h: Fix a comment typo.
10889         * target.h: Follow spelling conventions.
10890
10891 2007-02-18  Roger Sayle  <roger@eyesopen.com>
10892
10893         PR rtl-optimization/28173
10894         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
10895         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
10896         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
10897         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
10898         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
10899
10900 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10901
10902         * builtins.c (fold_builtin_load_exponent): New.
10903         (fold_builtin_2): Use it.
10904
10905 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
10906
10907         PR rtl-optimization/30773
10908         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
10909         if we fail to attach a REG_EQUIV note.
10910
10911 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
10912             Roger Sayle  <roger@eyesopen.com>
10913
10914         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
10915
10916 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
10917
10918         * calls.c (initialize_argument_information): Pass original EXP
10919         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
10920         code to split complex arguments here, as part of initializing the
10921         ARGS array.
10922         (expand_call): Remove code that builds a list of arguments and
10923         inserts implicit arguments into it.  Instead, just count how many
10924         implicit arguments there will be so we can determine the size of
10925         the ARGS array, and let initialize_argument_information do the work.
10926         (split_complex_values): Delete unused function.
10927
10928 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
10929
10930         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
10931
10932 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
10933
10934         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
10935         for arg pointer based indexed addressing.
10936
10937 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
10938
10939         * config/ia64/ia64.h, config/ia64/ia64.md,
10940         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
10941         spelling conventions.
10942
10943 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
10944
10945         * config/m68k/m68k.c (split_di): New.
10946         * config/m68k/m68k-protos.h: Declare split_di.
10947         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
10948           Improve predicate handling and split constant shifts.
10949
10950 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
10951
10952         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
10953         parameter for register bitfield operations, general predicates
10954         cleanup
10955
10956 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
10957
10958         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
10959         * config/m68k/linux-unwind.h: New file.
10960
10961 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
10962
10963         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
10964         config/i386/athlon.md, config/ia64/ia64.md,
10965         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
10966         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
10967         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
10968         tree-ssa-loop-niter.c, tree-vect-analyze.c,
10969         tree-vect-transform.c: Fix comment typos.
10970
10971 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
10972
10973         * sched-deps.c (find_insn_list): Remove.
10974         * sched-int.h: Remove the prototype for find_insn_list.
10975
10976 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
10977
10978         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
10979         to linker.
10980         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
10981         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
10982         darwin_rs6000_override_options.
10983         (C_COMMON_OVERRIDE_OPTIONS): Expect
10984         darwin_macosx_version_min to be non-NULL always.
10985         (TARGET_C99_FUNCTIONS): Likewise.
10986         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
10987         (DARWIN_MINVERSION_SPEC): New.
10988         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
10989         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
10990         to cc1*.
10991         (DARWIN_MINVERSION_SPEC): New.
10992         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
10993         value.
10994         * config/darwin-c.c (darwin_cpp_builtins): Expect
10995         darwin_macosx_version_min to be non-NULL always.
10996
10997         * config/rs6000/rs6000.c: Clean up trailing whitespace.
10998
10999 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
11000
11001         * config/i386/i386.h (x86_use_xchgb): New.
11002         (TARGET_USE_XCHGB): New macro.
11003         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
11004         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
11005         Split after reload into bswaphi for shifts of 8.
11006         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
11007         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
11008         or when optimizing for size.
11009
11010 2007-02-16  Richard Guenther  <rguenther@suse.de>
11011             Christian Bruel  <christian.bruel@st.com>
11012
11013         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
11014         DECLs but prefer SSA_NAMEs over DECLs.
11015
11016 2007-02-16  Richard Guenther  <rguenther@suse.de>
11017
11018         * tree-flow-inline.h (single_imm_use_p): Remove.
11019         (zero_imm_uses_p): Likewise.
11020         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
11021         instead of single_imm_use_p.
11022         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
11023         zero_imm_uses_p.
11024
11025 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11026
11027         PR other/27843
11028         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
11029         nested double- and backquotes.
11030
11031 2007-02-15  Roger Sayle  <roger@eyesopen.com>
11032
11033         PR middle-end/30391
11034         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
11035         should be unreachable.
11036         (build2_stat): Allow construction of MODIFY_EXPR at any time.
11037         For the time being redirect GIMPLE_MODIFY_STMT to the new
11038         (renamed) build_gimple_modify_stmt_stat.
11039         (build2_gimple_stat): Rename to...
11040         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
11041         Always build a GIMPLE_MODIFY_STMT node.
11042         * tree.h (build2_gimple, build2_gimple_stat): Delete.
11043         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
11044         declarations.
11045
11046         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
11047         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
11048         * tree-complex.c (set_component_ssa_name, expand_complex_move,
11049         expand_complex_div_wide): Likewise.
11050         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
11051         * tree-ssa-loop-im.c (schedule_sm): Likewise.
11052         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
11053         * tree-ssa-loop-manip.c (create_iv): Likewise.
11054         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
11055         abs_replacement): Likewise.
11056         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
11057         realify_fake_stores): Likewise.
11058
11059         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
11060         node rather than a GIMPLE_MODIFY_STMT node.
11061         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
11062         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
11063         Likewise.
11064         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
11065         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
11066         GIMPLE_MODIFY_STMT.
11067
11068 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11069
11070         PR middle-end/30433
11071         * fold-const.c (fold_comparison): Add back the
11072         folding of constant complex comparisions.
11073
11074 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11075
11076         PR middle-end/30729
11077         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
11078         effects unknown to this function, return early.
11079
11080 2007-02-15  Ian Lance Taylor  <iant@google.com>
11081
11082         * lower-subreg.c (move_eh_region_note): New static function.
11083         (resolve_simple_move): Call it.
11084         (decompose_multiword_subregs): Track blocks for which we resolve a
11085         simple move which is also a control flow insn.  Pass them to
11086         find_many_sub_basic_blocks.
11087         (pass_lower_subreg): Add TODO_verify_flow.
11088         (pass_lower_subreg2): Likewise.
11089
11090 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11091             Brooks Moses  <brooks.moses@codesourcery.com>
11092             Lee Millward  <lee.millward@codesourcery.com>
11093
11094         * tree.h (enum tree_code_class): Add tcc_vl_exp.
11095         (VL_EXP_CLASS_P): New.
11096         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
11097         TREE_CODE_LENGTH.
11098         (TREE_OPERAND_CHECK_CODE): Likewise.
11099         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
11100         (TREE_RTL_OPERAND_CHECK): Likewise.
11101         (tree_operand_check_failed): Make second parameter the whole tree
11102         instead of its code.  Fixed callers.
11103         (VL_EXP_CHECK): New.
11104         (TREE_OPERAND_LENGTH): New.
11105         (VL_EXP_OPERAND_LENGTH): New.
11106         (CALL_EXPR_FN): New.
11107         (CALL_EXPR_STATIC_CHAIN): New.
11108         (CALL_EXPR_ARGS): New.
11109         (CALL_EXPR_ARG): New.
11110         (call_expr_nargs): New.
11111         (CALL_EXPR_ARGP): New.
11112         (build_nt_call_list): Declare.
11113         (build_vl_exp_stat): Declare.
11114         (build_vl_exp): New.
11115         (build_call_list): Declare.
11116         (build_call_nary): Declare.
11117         (build_call_valist): Declare.
11118         (build_call_array): Declare.
11119         (call_expr_arg): Declare.
11120         (call_expr_argp): Declare.
11121         (call_expr_arglist): Declare.
11122         (fold_build_call_list): Declare.
11123         (fold_build_call_list_initializer): Declare.
11124         (fold_call_expr): Declare to replace fold_builtin.
11125         (fold_builtin_fputs): Update to agree with modified definition.
11126         (fold_builtin_strcpy): Likewise.
11127         (fold_builtin_strncpy): Likewise.
11128         (fold_builtin_memory_chk): Likewise.
11129         (fold_builtin_stxcpy_chk): Likewise.
11130         (fold_builtin_strncpy_chk): Likewise.
11131         (fold_builtin_next_arg): Likewise.
11132         (fold_build_call_expr): Declare.
11133         (fold_builtin_call_list): Declare.
11134         (fold_builtin_call_valist): Declare.
11135         (build_call_expr): Declare.
11136         (validate_arglist): Update to agree with modified definition.
11137         (tree_operand_length): New.
11138         (call_expr_arg_iterator): New.
11139         (init_call_expr_arg_iterator): New.
11140         (next_call_expr_arg): New.
11141         (first_call_expr_arg): New.
11142         (more_call_expr_args_p): New.
11143         (FOR_EACH_CALL_EXPR_ARG): New.
11144
11145         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
11146         and tcc_gimple_stmt.
11147         (tree_code_size): Update documentation.  Use sizeof (tree) rather
11148         than sizeof (char *).
11149         (tree_size): Likewise.  Add case for tcc_vl_exp.
11150         (tree_node_structure): Add case for tcc_vl_exp.
11151         (contains_placeholder_p): Likewise.
11152         (substitute_in_expr): Likewise.
11153         (substitute_placeholder_in_expr): Likewise.
11154         (stabilize_reference_1): Likewise.
11155         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
11156         to diagnose breakage of this interface for constructing CALL_EXPRs.
11157         (build_nt): Add similar assertion here.
11158         (build_nt_call_list): New.
11159         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
11160         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
11161         TREE_CODE_LENGTH.
11162         (get_callee_fndecl): Use new CALL_EXPR accessors.
11163         (tree_operand_check_failed): Change parameters to pass entire node
11164         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
11165         (process_call_operands): New.
11166         (build_vl_exp_stat): New.
11167         (build_call_list): New.
11168         (build_call_nary): New.
11169         (build_call_valist): New.
11170         (build_call_array): New.
11171         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11172         (call_expr_arglist): New.
11173
11174         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
11175         tcc_vl_exp instead of a fixed-size tcc_expression.
11176
11177         * doc/c-tree.texi (CALL_EXPR): Document new representation and
11178         accessors for CALL_EXPRs.
11179         (AGGR_INIT_EXPR): Likewise.
11180
11181 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11182             Brooks Moses  <brooks.moses@codesourcery.com>
11183             Lee Millward  <lee.millward@codesourcery.com>
11184
11185         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
11186         (expand_builtin_nonlocal_goto): Change parameter to be entire
11187         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
11188         (expand_builtin_prefetch): Likewise.
11189         (expand_builtin_classify_type): Likewise.
11190         (mathfn_built_in): Return NULL_TREE instead of 0.
11191         (expand_errno_check): Use new CALL_EXPR accessors.
11192         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
11193         Return NULL_RTX instead of 0.
11194         (expand_builtin_mathfn_2): Likewise.
11195         (expand_builtin_mathfn_3): Likewise.
11196         (expand_builtin_interclass_mathfn): Likewise.
11197         (expand_builtin_sincos): Likewise.
11198         (expand_builtin_cexpi): Likewise.
11199         (expand_builtin_int_roundingfn): Likewise.
11200         (expand_builtin_int_roundingfn_2): Likewise.
11201         (expand_builtin_pow): Likewise.
11202         (expand_builtin_powi): Likewise.
11203         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
11204         of arglist, fixing callers appropriately.  Use new CALL_EXPR
11205         accessors and constructors.  Return NULL_RTX instead of 0.
11206         (expand_builtin_strstr): Likewise.
11207         (expand_builtin_strchr): Likewise.
11208         (expand_builtin_strrchr): Likewise.
11209         (expand_builtin_strpbrk): Likewise.
11210         (expand_builtin_memcpy): Likewise.
11211         (expand_builtin_mempcpy): Likewise.
11212         (expand_builtin_mempcpy_args): New.
11213         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
11214         (expand_builtin_memmove_args): New.
11215         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
11216         (expand_movstr): Likewise.
11217         (expand_builtin_strcpy): Likewise.
11218         (expand_builtin_strcpy_args): New.
11219         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
11220         (expand_builtin_strncpy): Likewise.
11221         (expand_builtin_memset): Likewise.
11222         (expand_builtin_memset_args): New.
11223         (expand_builtin_bzero): Similarly to expand_builtin_memset.
11224         (expand_builtin_memcmp): Likewise.
11225         (expand_builtin_strcmp): Likewise.
11226         (expand_builtin_strncmp): Likewise.
11227         (expand_builtin_strcat): Likewise.
11228         (expand_builtin_strncat): Likewise.
11229         (expand_builtin_strspn): Likewise.
11230         (expand_builtin_strcspn): Likewise.
11231         (expand_builtin_args_info): Likewise.
11232         (expand_builtin_va_start): Likewise.
11233         (gimplify_va_arg_expr): Likewise.
11234         (expand_builtin_va_end): Likewise.
11235         (expand_builtin_va_copy): Likewise.
11236         (expand_builtin_frame_address): Likewise.
11237         (expand_builtin_alloca): Likewise.
11238         (expand_builtin_bswap): Likewise.
11239         (expand_builtin_unop): Likewise.
11240         (expand_builtin_fputs): Likewise.
11241         (expand_builtin_expect): Likewise.
11242         (expand_builtin_fabs): Likewise.
11243         (expand_builtin_copysign): Likewise.
11244         (expand_builtin_printf): Likewise.
11245         (expand_builtin_fprintf): Likewise.
11246         (expand_builtin_sprintf): Likewise.
11247         (expand_builtin_init_trampoline): Likewise.
11248         (expand_builtin_signbit): Likewise.
11249         (expand_builtin_fork_or_exec): Likewise.
11250         (expand_builtin_sync_operation): Likewise.
11251         (expand_builtin_compare_and_swap): Likewise.
11252         (expand_builtin_lock_test_and_set): Likewise.
11253         (expand_builtin_lock_release): Likewise.
11254         (expand_builtin): Likewise.
11255         (builtin_mathfn_code): Likewise.
11256
11257         (fold_builtin_constant_p): Pass call arguments individually instead
11258         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11259         accessors and constructors.  Return NULL_TREE instead of 0.
11260         (fold_builtin_expect): Likewise.
11261         (fold_builtin_classify_type): Likewise.
11262         (fold_builtin_strlen): Likewise.
11263         (fold_builtin_nan): Likewise.
11264         (integer_valued_real_p): Likewise.
11265         (fold_trunc_transparent_mathfn): Likewise.
11266         (fold_fixed_mathfn): Likewise.
11267         (fold_builtin_cabs): Likewise.
11268         (fold_builtin_sqrt): Likewise.
11269         (fold_builtin_cbrt): Likewise.
11270         (fold_builtin_cos): Likewise.
11271         (fold_builtin_cosh): Likewise.
11272         (fold_builtin_tan): Likewise.
11273         (fold_builtin_sincos): Likewise.
11274         (fold_builtin_cexp): Likewise.
11275         (fold_builtin_trunc): Likewise.
11276         (fold_builtin_floor): Likewise.
11277         (fold_builtin_ceil): Likewise.
11278         (fold_builtin_round): Likewise.
11279         (fold_builtin_int_roundingfn): Likewise.
11280         (fold_builtin_bitop): Likewise.
11281         (fold_builtin_bswap): Likewise.
11282         (fold_builtin_logarithm): Likewise.
11283         (fold_builtin_hypot): Likewise.
11284         (fold_builtin_pow): Likewise.
11285         (fold_builtin_powi): Likewise.
11286         (fold_builtin_exponent): Likewise.
11287         (fold_builtin_memset): Likewise.
11288         (fold_builtin_bzero): Likewise.
11289         (fold_builtin_memory_op): Likewise.
11290         (fold_builtin_bcopy): Deleted; call site changed to invoke
11291         fold_builtin_memory_op directly.
11292         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
11293         (fold_builtin_strncpy): Likewise.
11294         (fold_builtin_memcmp): Likewise.
11295         (fold_builtin_strcmp): Likewise.
11296         (fold_builtin_strncmp): Likewise.
11297         (fold_builtin_signbit): Likewise.
11298         (fold_builtin_copysign): Likewise.
11299         (fold_builtin_isascii): Likewise.
11300         (fold_builtin_toascii): Likewise.
11301         (fold_builtin_isdigit): Likewise.
11302         (fold_builtin_fabs): Likewise.
11303         (fold_builtin_abs): Likewise.
11304         (fold_builtin_fmin_fmax): Likewise.
11305         (fold_builtin_carg): Likewise.
11306         (fold_builtin_classify): Likewise.
11307         (fold_builtin_unordered_cmp): Likewise.
11308
11309         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
11310         New functions split out from fold_builtin_1.
11311         (fold_builtin_n): New.
11312         (fold_builtin_varargs): New.
11313         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
11314         instead.
11315         (fold_call_expr): New.
11316         (build_function_call_expr): Rewrite to use new helper function.
11317         (fold_builtin_call_list): New.
11318         (build_call_expr): New.
11319         (fold_builtin_call_valist): New.
11320         (rewrite_call_expr): New.
11321         (validate_arg): New.
11322         (validate_arglist): Change parameter to be entire CALL_EXPR instead
11323         of an arglist.  Change return type to bool.  Use new CALL_EXPR
11324         accessors.
11325
11326         (fold_builtin_strstr):  Pass call arguments individually instead
11327         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11328         accessors and constructors.  Return NULL_TREE instead of 0.
11329         (fold_builtin_strchr): Likewise.
11330         (fold_builtin_strrchr): Likewise.
11331         (fold_builtin_strpbrk): Likewise.
11332         (fold_builtin_strcat): Likewise.
11333         (fold_builtin_strncat): Likewise.
11334         (fold_builtin_strspn): Likewise.
11335         (fold_builtin_strcspn): Likewise.
11336         (fold_builtin_fputs): Likewise.
11337         (fold_builtin_next_arg): Likewise.
11338         (fold_builtin_sprintf): Likewise.
11339
11340         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
11341         NULL_RTX instead of 0.
11342         (expand_builtin_memory_chk): Likewise.
11343         (maybe_emit_chk_warning): Likewise.
11344         (maybe_emit_sprintf_chk_warning): Likewise.
11345
11346         (fold_builtin_object_size): Pass call arguments individually instead
11347         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11348         accessors and constructors.  Return NULL_TREE instead of 0.
11349         (fold_builtin_memory_chk): Likewise.
11350         (fold_builtin_stxcpy_chk): Likewise.
11351         (fold_builtin_strncpy_chk): Likewise.
11352         (fold_builtin_strcat_chk): Likewise.
11353         (fold_builtin_strcat_chk): Likewise.
11354         (fold_builtin_strncat_chk): Likewise.
11355         (fold_builtin_sprintf_chk): Likewise.
11356         (fold_builtin_snprintf_chk): Likewise.
11357         (fold_builtin_printf): Likewise.
11358         (fold_builtin_vprintf): Likewise.
11359
11360         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
11361         constructors.
11362         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
11363         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11364         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
11365         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
11366         (fold_unary): Likewise.
11367         (fold_binary): Likewise.
11368         (fold_ternary): Remove CALL_EXPR case, since they are no longer
11369         ternary expressions.
11370         (fold): Add logic for tcc_vl_exp.
11371         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
11372         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11373         (fold_build3_stat): Add assertion to flag broken interface for
11374         constructing CALL_EXPRs.
11375         (fold_build_call_list): New.
11376         (fold_build_call_list_initializer): New.
11377         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
11378         constructors.
11379         (fold_strip_sign_ops): Likewise.
11380
11381 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11382             Brooks Moses  <brooks.moses@codesourcery.com>
11383             Lee Millward  <lee.millward@codesourcery.com>
11384
11385         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
11386         accessors and dump arguments explicitly.
11387
11388         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
11389         TREE_CODE_LENGTH.
11390         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
11391         explicitly.
11392         (print_call_name): Use new CALL_EXPR accessors.
11393
11394         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
11395         CALL_EXPR arguments explicitly instead of as a list.  Use
11396         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11397
11398         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
11399         (vrp_visit_stmt): Likewise.
11400
11401         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
11402         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
11403         TREE_CODE_LENGTH.
11404         (force_move_till_expr): Likewise.
11405
11406         * targhooks.c (default_external_stack_protect_fail): Use
11407         build_call_expr instead of build_function_call_expr.
11408         (default_hidden_stack_protect_fail): Likewise.
11409
11410         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
11411         build the call.
11412
11413         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
11414         and walk arguments explicitly.
11415
11416         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
11417         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11418         (expand_simple_operations): Likewise.
11419         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
11420
11421         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
11422         of TREE_CODE_LENGTH.
11423         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
11424
11425         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
11426         instead of TREE_CODE_LENGTH.
11427
11428         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
11429         (tree_ic_transform): Likewise.
11430         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
11431         parameter instead of arglist.  Fix callers.
11432         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
11433         (tree_stringops_transform): Likewise.
11434         (tree_indirect_call_to_profile): Likewise.
11435         (tree_stringops_values_to_profile): Likewise.
11436
11437         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
11438         (eliminate_tail_call): Likewise.
11439
11440         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
11441
11442         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
11443         Use TREE_OPERAND_LENGTH and generalize to handle any number of
11444         operands.
11445         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
11446
11447         * omp-low.c (build_omp_barrier): Use build_call_expr.
11448         (lower_rec_input_clauses): Likewise.
11449         (lower_reduction_clauses): Likewise.
11450         (expand_parallel_call): Likewise.
11451         (maybe_catch_exception): Likewise.
11452         (expand_omp_for_generic): Likewise.
11453         (expand_omp_for_static_nochunk): Likewise.
11454         (expand_omp_sections): Likewise.
11455         (lower_omp_single_simple): Likewise.
11456         (lower_omp_single_copy): Likewise.
11457         (lower_omp_master): Likewise.
11458         (lower_omp_ordered): Likewise.
11459         (lower_omp_critical): Likewise.
11460
11461         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
11462         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
11463
11464         * tree-gimple.c (is_gimple_call_addr): Fix doc.
11465         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
11466         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
11467
11468         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
11469         and generalize to handle any number of operands.
11470         (chrec_contains_undetermined): Likewise.
11471         (tree_contains_chrecs): Likewise.
11472         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
11473
11474         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
11475
11476         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
11477         fold_call_expr instead of fold_builtin.
11478         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
11479         match declarations there.
11480         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
11481         updates.
11482
11483         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
11484         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11485
11486         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
11487         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
11488
11489         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
11490         accessors.
11491
11492         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
11493         (execute_cse_sincos): Use new CALL_EXPR accessors.
11494
11495         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
11496
11497         * gimple-low.c (lower_function_body): Use build_call_expr.
11498         (lower_builtin_setjmp): Likewise.
11499
11500         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
11501         (set_storage_via_libcall): Likewise.
11502         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
11503         instead of TREE_CODE_LENGTH.
11504         (expand_expr_real_1): Use new CALL_EXPR accessors.
11505
11506         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
11507         generalize to handle any number of operands.
11508         (TB_parent_eq): Likewise.
11509
11510         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
11511         (strip_builtin_expect): Likewise.
11512
11513         * function.c (gimplify_parameters): Use build_call_expr.
11514
11515         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
11516         instead of TREE_CODE_LENGTH.
11517
11518         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
11519         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
11520
11521         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
11522         iterators.
11523
11524         * gimplify.c (build_stack_save_restore): Use build_call_expr.
11525         (gimplify_decl_expr): Likewise.
11526         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
11527         Use new CALL_EXPR iterators.
11528         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
11529         (gimplify_modify_expr_to_memset): Likewise.
11530         (gimplify_variable_sized_compare): Likewise.
11531         (gimplify_omp_atomic_fetch_op): Likewise.
11532         (gimplify_omp_atomic_pipeline): Likewise.
11533         (gimplify_omp_atomic_mutex): Likewise.
11534         (gimplify_function_tree): Likewise.
11535
11536         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
11537         (call_expr_flags): Likewise.
11538         (expand_call): Likewise.
11539
11540         * except.c (expand_builtin_eh_return_data_regno): Pass entire
11541         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
11542         accessors.
11543
11544         * coverage.c (create_coverage): Use build_call_expr.
11545
11546         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
11547         (temp_call_expr_obstack): New.
11548         (pool_copy_list): Delete.
11549         (temp_copy_call_expr): New.
11550         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
11551         CALL_EXPR accessors.  Get rid of special goo for copying argument
11552         lists and use temp_copy_call_expr instead.
11553         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
11554         CALL_EXPR accessors.
11555         (create_expression_by_pieces): Likewise.  Use build_call_array
11556         to construct the result instead of fold_build3.
11557         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
11558         dealing with argument lists.
11559         (init_pre): Remove references to expression_node_pool and
11560         list_node_pool.  Init temp_call_expr_obstack instead.
11561         (fini_pre): Remove references to expression_node_pool and
11562         list_node_pool.
11563
11564         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
11565         and walk arguments explicitly instead of as a list.
11566
11567         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
11568         (mx_register_decls): Likewise.
11569         (mudflap_register_call): Likewise.
11570         (mudflap_finish_file): Likewise.
11571
11572         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
11573         (ipa_callsite_compute_param): Likewise.
11574
11575         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
11576         accessors and constructor.
11577
11578         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
11579         accessors and constructor.
11580         (convert_tramp_reference): Likewise.
11581         (convert_call_expr): Likewise.
11582         (finalize_nesting_tree_1): Likewise.
11583
11584         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
11585         accessors.
11586
11587         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
11588
11589         * tree-inline.c (initialize_inlined_parameters): Pass entire
11590         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
11591         accessors.
11592         (estimate_num_insns_1): Use new CALL_EXPR accessors.
11593         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
11594
11595         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
11596         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11597         (vectorizable_reduction): Likewise.
11598         (vectorizable_call): Use new CALL_EXPR iterators.
11599         (vectorizable_conversion): Use build_call_expr.
11600         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
11601         (vect_gen_widened_results_half): Use build_call_expr.
11602         (vect_setup_realignment): Likewise.
11603         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
11604
11605         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
11606         (pass_through_call): Likewise.
11607         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
11608         fold_builtin.
11609
11610         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
11611         (tree_gen_pow2_profiler): Likewise.
11612         (tree_gen_one_value_profiler): Likewise.
11613         (tree_gen_ic_func_profiler): Likewise.
11614         (tree_gen_average_profiler): Likewise.
11615         (tree_gen_ior_profiler): Likewise.
11616
11617         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
11618         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
11619         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11620
11621         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
11622         of TREE_CODE_LENGTH.
11623
11624         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
11625         of TREE_CODE_LENGTH.
11626
11627         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
11628         constructor.
11629         (convert_to_integer): Likewise.
11630
11631         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
11632         accessors.
11633
11634 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11635             Brooks Moses  <brooks.moses@codesourcery.com>
11636             Lee Millward  <lee.millward@codesourcery.com>
11637
11638         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
11639         accessors.
11640         * config/frv/frv.c (frv_expand_builtin): Likewise.
11641         * config/s390/s390.c (s390_expand_builtin): Likewise.
11642
11643         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
11644         (sparc_expand_builtin): Use new CALL_EXPR accessors.
11645
11646         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
11647         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
11648         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
11649         (ix86_expand_store_builtin): Likewise.
11650         (ix86_expand_unop_builtin): Likewise.
11651         (ix86_expand_unop1_builtin): Likewise.
11652         (ix86_expand_sse_compare): Likewise.
11653         (ix86_expand_sse_comi): Likewise.
11654         (ix86_expand_vec_init_builtin): Likewise.
11655         (ix86_expand_vec_ext_builtin): Likewise.
11656         (ix86_expand_vec_set_builtin): Likewise.
11657         (ix86_expand_builtin): Use new CALL_EXPR accessors.
11658
11659         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
11660         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
11661
11662         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
11663         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11664         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
11665
11666         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
11667         build_call_expr.
11668         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
11669         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
11670         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11671         (altivec_expand_abs_builtin): Likewise.
11672         (rs6000_expand_binop_builtin): Likewise.
11673         (altivec_expand_predicate_builtin): Likewise.
11674         (altivec_expand_lv_builtin): Likewise.
11675         (spe_expand_stv_builtin): Likewise.
11676         (altivec_expand_stv_builtin): Likewise.
11677         (rs6000_expand_ternop_builtin): Likewise.
11678         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
11679         (altivec_expand_st_builtin): Likewise.
11680         (altivec_expand_dst_builtin): Likewise.
11681         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
11682         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11683         (altivec_expand_vec_set_builtin): Likewise.
11684         (altivec_expand_vec_ext_builtin): Likewise.
11685         (altivec_expand_builtin): Use new CALL_EXPR accessors.
11686         (spe_expand_builtin): Likewise.
11687         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
11688         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11689         (spe_expand_evsel_builtin): Likewise.
11690         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
11691         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
11692
11693         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
11694         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11695         (arm_expand_unop_builtin): Likewise.
11696         (arm_expand_builtin): Use new CALL_EXPR accessors.
11697
11698         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
11699         accessors.
11700
11701         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
11702         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11703         (bfin_expand_unop_builtin): Likewise.
11704         (bfin_expand_builtin): Use new CALL_EXPR accessors.
11705
11706 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11707             Brooks Moses  <brooks.moses@codesourcery.com>
11708             Lee Millward  <lee.millward@codesourcery.com>
11709
11710         * c-semantics.c (build_stmt): Add internal diagnostic check.
11711
11712         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
11713         accessors.  Print arguments explicitly instead of as a list.
11714
11715         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
11716
11717         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
11718         (c_finish_omp_flish): Likewise.
11719
11720         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
11721         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
11722         instead of TREE_CODE_LENGTH.
11723         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
11724         (c_warn_unused_result): Likewise.
11725
11726 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11727
11728         PR c/26494
11729         * doc/invoke.texi (Warning Options): Remove
11730         -Werror-implicit-function-declaration.
11731         (Wimplicit-function-declaration): Update description.
11732         * opts.c (common_handle_option): Move handling of -Werror=* to...
11733         (enable_warning_as_error): ...here.
11734         * opts.h (enable_warning_as_error): Declare.
11735         * c-decl.c (implicit_decl_warning): Unless
11736         -Wno-implicit-function-declaration is given, emit a pedwarn if
11737         -std=c99 or emit a warning if -Wimplicit-function-declaration.
11738         * c.opt (Wimplicit-function-declaration): Replace
11739         mesg_implicit_function_declaration with
11740         warn_implicit_function_declaration.
11741         * c-opts.c (c_common_handle_option):
11742         -Werror-implicit-function-declaration is exactly equal as
11743         -Werror=implicit-function-declaration.
11744         (set_Wimplicit): Replace mesg_implicit_function_declaration with
11745         warn_implicit_function_declaration.
11746         (c_common_post_options): -Wimplict-function-declaration is enabled
11747         by default by -std=c99, otherwise is disabled by default.
11748         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
11749
11750 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
11751
11752         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
11753         DECL on the rhs to a DECL on the lhs for debug info purposes if the
11754         former is ignored but not the latter.
11755
11756 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
11757
11758         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
11759         is made and the reference doesn't use the alias set of its type,
11760         do not create the temporary using that type.
11761
11762 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
11763
11764         * jump.c: Remove prototypes for delete_computation and
11765         delete_prior_computation.
11766
11767 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
11768
11769         * jump.c (get_label_after): Delete.
11770         (get_label_before, delete_computation, delete_jump,
11771         delete_prior_computation, follow_jumps): Move...
11772         * reorg.c (delete_computation, delete_prior_computation): ... here...
11773         (get_label_before, delete_jump): ... making these static ...
11774         (follow_jumps): ... and simplifying this since it only runs after
11775         reload.
11776         * rtl.h (get_label_after, get_label_before, delete_jump,
11777         follow_jumps): Delete prototypes.
11778
11779 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
11780
11781         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
11782
11783 2007-02-15  Nick Clifton  <nickc@redhat.com>
11784
11785         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
11786         order to prevent it from being munged by the target.
11787
11788 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
11789
11790         * config/i386/i386.md: Remove misleading comment.
11791
11792 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11793
11794         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
11795         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
11796         invalid patterns.
11797
11798 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11799
11800         * tree-sra.c (instantiate_missing_elements): Canonicalize
11801         bit-field types.
11802         (sra_build_assignment): New.
11803         (generate_copy_inout, generate_element_copy,
11804         generate_element_zero, generate_one_element_init): Use it.
11805
11806 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11807
11808         * tree-sra.c (instantiate_missing_elements): Canonicalize
11809         bit-field types.
11810         (sra_build_assignment): New.
11811         (generate_copy_inout, generate_element_copy,
11812         generate_element_zero, generate_one_element_init): Use it.
11813
11814 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11815
11816         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
11817         limbo die nodes.
11818
11819 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
11820
11821         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
11822         types as aggregates not scalars.
11823         * function.c (assign_stack_temp_for_type): Likewise.
11824
11825 2007-02-14  Roger Sayle  <roger@eyesopen.com>
11826             Zdenek Dvorak  <dvorakz@suse.cz>
11827
11828         * tree-dump.c (dump_switch_p_1): Require exact match of the option
11829         name.
11830
11831 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
11832
11833         * passes.c (next_pass_1): Clear the next field of the copied
11834         pass structure.
11835
11836 2007-02-14  Richard Henderson  <rth@redhat.com>
11837
11838         * tree-sra.c (early_sra): New.
11839         (decl_can_be_decomposed_p): Deny va_list if early_sra.
11840         (tree_sra_early, pass_sra_early): New.
11841         * tree-pass.h (pass_sra_early): Declare.
11842         * passes.c (init_optimization_passes): Use it.
11843
11844 2007-02-14  Richard Guenther  <rguenther@suse.de>
11845
11846         * flags.h (issue_strict_overflow_warning): Convert to a macro.
11847
11848 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
11849
11850          PR tree-optimization/30771
11851         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
11852         also phi nodes.
11853         (vect_analyze_operations): Induction phis can now be marked as
11854         used_in_loop.
11855         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
11856         Update documentation accordingly.
11857
11858 2007-02-14  Nick Clifton  <nickc@redhat.com>
11859
11860         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
11861         most 3 arguments are supported.
11862         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
11863
11864 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
11865
11866         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
11867         Ensure dst->current is valid.
11868
11869 2007-02-13  Paul Brook  <paul@codesourcery.com>
11870
11871         * config.gcc: Add arm*-*-uclinux-*eabi.
11872         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
11873         (SUBTARGET_EXTRA_LINK_SPEC): Define.
11874         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
11875         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
11876         (LINK_SPEC): Define.
11877         (LIB_SPEC): Define.
11878         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
11879         register.
11880         * config/arm/uclinux-eabi.h: New file.
11881         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
11882         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
11883         based targets.
11884
11885 2007-02-13  Ian Lance Taylor  <iant@google.com>
11886
11887         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
11888         * flags.h (warn_strict_overflow): Declare.
11889         (enum warn_strict_overflow_code): Define.
11890         (issue_strict_overflow_warning): New static inline function.
11891         * opts.c (warn_strict_overflow): New variable.
11892         (common_handle_option): Handle OPT_Wstrict_overflow and
11893         OPT_Wstrict_overflow_.
11894         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
11895         OPT_Wall.
11896         * fold-const.c: Include intl.h.
11897         (fold_deferring_overflow_warnings): New static variable.
11898         (fold_deferred_overflow_warning): New static variable.
11899         (fold_deferred_overflow_code): New static variable.
11900         (fold_defer_overflow_warnings): New function.
11901         (fold_undefer_overflow_warnings): New function.
11902         (fold_undefer_and_ignore_overflow_warnings): New function.
11903         (fold_deferring_overflow_warnings_p): New function.
11904         (fold_overflow_warning): New static function.
11905         (make_range): Add strict_overflow_p parameter.  Change all
11906         callers.
11907         (extract_muldiv, extract_muldiv_1): Likewise.
11908         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
11909         tree_expr_nonnegative_p.
11910         (fold_negate_expr): Call fold_overflow_warning.
11911         (fold_range_test): Likewise.
11912         (fold_comparison): Likewise.
11913         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
11914         instead of tree_expr_nonnegative_p.
11915         (tree_expr_nonnegative_warnv_p): Rename from
11916         tree_expr_nonnegative_p, add strict_overflow_p parameter.
11917         (tree_expr_nonnegative_p): New function.
11918         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
11919         strict_overflow_p parameter.
11920         (tree_expr_nonzero_p): New function.
11921         * passes.c (verify_interpass_invariants): New static function.
11922         (execute_one_pass): Call it.
11923         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
11924         warnings.
11925         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
11926         (estimate_numbers_of_iterations): Likewise.
11927         (scev_probably_wraps_p): Likewise.
11928         * tree-ssa-ccp.c: Include "toplev.h".
11929         (evaluate_stmt): Defer fold overflow warnings until we know we are
11930         going to optimize.
11931         (struct fold_stmt_r_data): Add stmt field.
11932         (fold_stmt_r): Defer fold overflow warnings until we know we
11933         optimized.
11934         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
11935         (fold_stmt_inplace): Likewise.
11936         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
11937         (cleanup_control_expr_graph): Defer fold overflow warnings until
11938         we know we are going to optimize.
11939         * tree-cfg.c (fold_cond_expr_cond): Likewise.
11940         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
11941         Likewise.
11942         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
11943         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
11944         * tree-ssa-loop-manip.c (create_iv): Likewise.
11945         * c-typeck.c (build_conditional_expr): Likewise.
11946         (build_binary_op): Likewise.
11947         * tree-vrp.c (vrp_expr_computes_nonzero): Call
11948         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
11949         (extract_range_from_unary_expr): Likewise.
11950         * simplify-rtx.c (simplify_const_relational_operation): Warn when
11951         assuming that signed overflow does not occur.
11952         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
11953         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
11954         (fold_defer_overflow_warnings): Declare.
11955         (fold_undefer_overflow_warnings): Declare.
11956         (fold_undefer_and_ignore_overflow_warnings): Declare.
11957         (fold_deferring_overflow_warnings_p): Declare.
11958         (tree_expr_nonzero_warnv_p): Declare.
11959         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
11960         of warning options.
11961         (Warning Options): Document -Wstrict-overflow.
11962         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
11963         (tree-ssa-ccp.o): Likewise.
11964         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
11965         (fold-const.o): Depend on intl.h.
11966
11967 2007-02-13  Ian Lance Taylor  <iant@google.com>
11968
11969         PR middle-end/30751
11970         * lower-subreg.c (resolve_simple_move): Decompose subregs in
11971         addresses.
11972
11973 2007-02-13  Stuart Hastings  <stuart@apple.com>
11974
11975         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
11976
11977 2007-02-13  Richard Henderson  <rth@redhat.com>
11978
11979         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
11980         handled_component_p before looking for the indirect_ref.
11981
11982 2007-02-13  Richard Henderson  <rth@redhat.com>
11983
11984         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
11985         remove flags clobber.
11986         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
11987         (bswaphi_lowpart): New.
11988         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
11989         remove TARGET_BSWAP test.  Delete expander of the same name.
11990
11991         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
11992         (expand_unop): Use them.
11993
11994 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
11995
11996         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
11997         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
11998         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
11999         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
12000         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
12001         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
12002         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
12003         assembler dialect choice from asm templates.
12004
12005 2007-02-12  Richard Henderson  <rth@redhat.com>
12006
12007         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
12008         (fixuns_trunc<SSEMODEF>si2): Use it.
12009         * config/i386/sse.md (vec_setv4sf_0): Export.
12010         * config/i386/i386.c (ix86_build_const_vector): Export.
12011         (ix86_split_convert_uns_si_sse): Rename from
12012         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
12013         * config/i386/i386-protos.h: Update.
12014
12015 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12016
12017         PR c/29521
12018         * c-typeck.c (c_finish_return): Improve warning message.
12019
12020 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12021
12022         * alias.c (find_symbolic_term): Delete unused function.
12023
12024 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
12025
12026         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
12027         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
12028         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
12029
12030 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
12031
12032         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
12033         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
12034         the function, temporarily point the debug interface to the null one.
12035
12036 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
12037
12038         * dwarf2out.c (round_up_to_align): New static function.
12039         (field_byte_offset): Use it to round the offset.
12040
12041 2007-02-12  Richard Henderson  <rth@redhat.com>
12042
12043         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
12044         (inswl_const): Export.
12045
12046 2007-02-12  Richard Henderson  <rth@redhat.com>
12047
12048         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
12049         result mode of the libcall, convert back to outmode.
12050
12051 2007-02-12  Roger Sayle  <roger@eyesopen.com>
12052
12053         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
12054         (bswapdi2): New define_expand to implement 32-bit implementation.
12055
12056 2007-02-12  Nick Clifton  <nickc@redhat.com>
12057
12058         * doc/invoke.texi (Overall Options): Document --help=.
12059         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
12060         (cc1_options): Pass --help= on to cc1.
12061         (display_help): Add description of --help=.
12062         (process_command): Add code to handle --help=.  Allow translated
12063         --help and --target-help switches to be passed on to compiler
12064         sub-process.
12065         (main): Remove unused if statement.
12066         * opts.c (columns): Remove.
12067         (LEFT_COLUMN): Define.
12068         (wrap_help): Add columns argument.
12069         (print_filtered_help): Change parameters to be an include bitmask,
12070         an exclude bitmask, an any bitmask and the column width.  Move the
12071         code to display the params list here.  Add code to display the
12072         status of options rather than their descriptions if the quiet flag
12073         is not active.
12074         (print_specific_help): Change parameters to be an include bitmask,
12075         an exclude bitmask and an any bitmask.  Move code to look up the
12076         column width here.  Decide upon the title for an options listing.
12077         (common_handle_options): Add code to handle --help=.  Adapt code
12078         for --help and --target-help to use the revised form of the
12079         print_specific_help function.
12080         (print_help): Delete.
12081         (print_param_help): Delete.
12082         (print_switch): Delete.
12083         * opts.h (cl_lang_count): Add prototype.
12084         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
12085         CL_MAX_OPTION_CLASS): New defines.
12086         * optc-gen.awk: Add construction of cl_lang_count.
12087         * c.opt: Add Warning attribute to warning options and Optimization
12088         attribute to optimization options.
12089         * common.opt: Likewise.
12090         Add --help=.
12091         Add -fhelp and -ftarget-help as aliases for the transformed --help
12092         and --target-help options.
12093         * opt-functions.awk: Add code to handle Warning and Optimization
12094         attributes.
12095
12096 2007-02-12  Richard Henderson  <rth@redhat.com>
12097
12098         * config/alpha/constraints.md: New file.
12099         * config/alpha/alpha.c: Include tm-constrs.h.
12100         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
12101         alpha_extra_constraint): Remove.
12102         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
12103         * config/alpha/alpha-protos.h: Update.
12104         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
12105         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
12106         (EXTRA_CONSTRAINT): Remove.
12107         * config/alpha/alpha.md: Include constraints.md.
12108         (adddi splitter): Use satisfies_constraint_*.
12109         * config/alpha/predicates.md (add_operand): Likewise.
12110         (sext_add_operand, addition_operation): Likewise.
12111
12112 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
12113
12114         PR tree-optimization/29145
12115         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
12116         in our handling of restrict qualified pointers.
12117
12118 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12119
12120         PR middle-end/7651
12121         * doc/invoke.texi (Wunused-value): Update description.
12122         (Wextra): Delete item.
12123         * opts.c (set_Wextra): Don't use the value of Wextra to set the
12124         value of Wunused-value.
12125         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
12126         (c_finish_stmt_expr): Don't check extra_warnings.
12127         (emit_side_effect_warnings): The caller is responsible to check
12128         warn_unused_value.
12129
12130 2007-02-11  Roger Sayle  <roger@eyesopen.com>
12131             Matt Thomas  <matt@3am-software.com>
12132
12133         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
12134
12135 2007-02-11  Roger Sayle  <roger@eyesopen.com>
12136
12137         * simplify-rtx.c (simplify_relational_operation_1): Optimize
12138         comparisons of POPCOUNT against zero.
12139         (simplify_const_relational_operation): Likewise.
12140
12141 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12142
12143         * doc/invoke.texi (Wextra): Delete outdated paragraph.
12144
12145 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12146
12147         * dwarf2out.c (root_type): Delete unused function.
12148
12149 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12150
12151         * genattrtab.c (contained_in_p): Delete unused function.
12152         (write_expr_attr_cache): Likewise.
12153
12154 2007-02-11  Jan Hubicka  <jh@suse.cz>
12155
12156         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
12157         previous patch.
12158
12159 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
12160
12161         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
12162         to add the REG_EQ* note.
12163         * see.c (see_merge_one_use_extension): Likewise.
12164         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
12165         turn REG_EQUAL notes into REG_EQUIV notes if the target
12166         register may have more than one set.
12167         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
12168         * gcse.c (try_replace_reg): Likewise.
12169         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
12170         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
12171         more than one REG_EQUIV note.
12172         * reload1.c (gen_reload): Use set_unique_reg_note.
12173
12174 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
12175
12176         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
12177         (ix86_builtin_conversion): New function.
12178
12179 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
12180
12181         PR target/29487
12182         * tree.h (DECL_REPLACEABLE_P): New macro.
12183         * except.c (set_nothrow_function_flags): Likewise.
12184
12185 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
12186             Ira Rosen  <irar@il.ibm.com>
12187             Dorit Nuzman  <dorit@il.ibm.com>
12188
12189         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
12190         * targhooks.c (default_builtin_vectorized_conversion): New.
12191         * targhooks.h (default_builtin_vectorized_function): New declaration.
12192         * target.h (struct vectorize): Add builtin_conversion field.
12193         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
12194         stmt_vec_info_type value.
12195         (vectorizable_conversion): New declaration.
12196         * tree-vect-analyze.c (vect_analyze_operations): Add
12197         vectorizable_conversion call.
12198         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
12199         * tree-vect-transform.c (vectorizable_conversion): New function.
12200         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
12201         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
12202         mode.
12203         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
12204         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
12205         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
12206         or ALTIVEC_BUILTIN_VCFSX.
12207
12208 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12209
12210         PR target/30634
12211         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
12212         CONST_DOUBLE and operand 0 is a hard register.
12213         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
12214         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
12215         is a hard floating-point register.
12216
12217 2007-02-10  Richard Henderson  <rth@redhat.com>
12218             Jakub Jelinek  <jakub@redhat.com>
12219             Alexandre Oliva  <aoliva@redhat.com>
12220
12221         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
12222         * builtin-types.def (BT_WORD): Make unsigned.
12223         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
12224         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
12225         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
12226         * c-decl.c (grokdeclarator): Don't error if !have_tls.
12227         * c-parser.c (c_parser_omp_threadprivate): Likewise.
12228         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
12229         emulated tls.
12230         * expr.c (emutls_var_address): New.
12231         (expand_expr_real_1): Expand emulated tls.
12232         (expand_expr_addr_expr_1): Likewise.
12233         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
12234         * output.h (emutls_finish): Declare.
12235         * toplev.c (compile_file): Call it.
12236         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
12237         address before wrapping in CONST.
12238         * varasm.c (emutls_htab, emutls_object_type): New.
12239         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
12240         (get_emutls_object_name, get_emutls_object_type): New.
12241         (get_emutls_init_templ_addr, emutls_decl): New.
12242         (emutls_common_1, emutls_finish): New.
12243         (assemble_variable): When emulating tls, swap decls; generate
12244         constructor for the emutls objects.
12245         (do_assemble_alias): When emulating tls, swap decl and target name.
12246         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
12247         for emulated tls.
12248         * varpool.c (decide_is_variable_needed): Look at force_output.
12249         Recurse for emulated tls.
12250         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
12251         with decide_is_variable_needed.
12252         * emutls.c: New file.
12253         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
12254         tls_object for real tls.
12255
12256 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12257
12258         PR rtl-optimization/29599
12259         * reload1.c (eliminate_regs_in_insn): Take the destination
12260         mode into account when computing the offset.
12261
12262 2007-02-09  Stuart Hastings  <stuart@apple.com>
12263             Richard Henderson  <rth@redhat.com>
12264
12265         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
12266         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
12267         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
12268         fixuns_truncdfhi2): New.
12269         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
12270         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
12271         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
12272         (floatunssidf2): Allow nonimmediate source.
12273         * config/i386/sse.md (movdi_to_sse): New.
12274         (vec_concatv2di): Drop '*'.
12275         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
12276         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
12277         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
12278         New.
12279         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
12280         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
12281         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
12282         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
12283         (ix86_build_signbit_mask): Fix decl of v, refactor to call
12284         ix86_build_const_vector.
12285         (x86_emit_floatuns): Rewrite.
12286
12287 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12288
12289         * genautomata.c (longest_path_length): Delete unused function.
12290         (struct state): Delete unused longest_path_length.
12291         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
12292         (get_free_state): Delete unused.
12293
12294 2007-02-09  Jan Hubicka  <jh@suse.cz>
12295
12296         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
12297         * doc/invoke.texi (inline-unit-growth): Update default value.
12298
12299         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
12300         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
12301         (rebuild_cgraph_edges): Likewise.
12302         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
12303         (dump_cgraph_node): Dump frequencies.
12304         (cgraph_clone_edge): Add frequency scales.
12305         (cgraph_clone_node): Add freuqnecy.
12306         * cgraph.h (cgraph_edge): Add freuqnecy argument.
12307         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
12308         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
12309         * tree-pass.h (TODO_rebuild_frequencies): New constant.
12310         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
12311         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
12312         (save_inline_function_body): Likewise.
12313         * ipa-inline.c: inluce rtl.h
12314         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
12315         (cgraph_edge_badness): Use frequencies.
12316         (cgraph_decide_recursive_inlining): Update clonning.
12317         (cgraph_decide_inlining_of_small_function): Dump frequency.
12318         * predict.c (estimate_bb_frequencies): Export.
12319         * predict.h (estimate_bb_frequencies): Declare.
12320         * tree-inline.c (copy_bb): Watch overflows.
12321         (expand_call_inline): Update call of cgraph_create_edge.
12322         (optimize_inline_calls): Use TODO flags to update frequnecies.
12323         * passes.h: Include predict.h
12324         (init_optimization_passes): Move profile ahead.
12325         (execute_function_todo): Handle TODO_rebuild_frequencies.
12326
12327 2007-02-09  Roger Sayle  <roger@eyesopen.com>
12328
12329         * config/alpha/alpha.c (emit_insxl): Force the first operand of
12330         the insbl or inswl pattern into a register.
12331
12332 2007-02-09  Roger Sayle  <roger@eyesopen.com>
12333
12334         * config/ia64/ia64.md (bswapdi2): New define_insn.
12335
12336 2007-02-09  Richard Henderson  <rth@redhat.com>
12337
12338         * config/i386/constraints.md (Ym): New constraint.
12339         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
12340         (movdi_1_rex64): Split sse and xmm general register moves from
12341         memory move alternatives.  Use conditional register constraints.
12342         (movsf_1, movdf_integer): Likewise.
12343         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
12344         (movdf_integer_rex64): New.
12345         (pushsf_rex64): Fix output constraints.
12346         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
12347         (sse2_stored): Likewise.
12348         (sse2_storeq_rex64): New.
12349         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
12350         amd and not generic.
12351         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
12352         for optimize_size.  Remove SF/DFmode hack.
12353
12354 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12355
12356         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
12357         (bit_SSE4a): New.
12358
12359 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
12360             Richard Sandiford  <richard@codesourcery.com>
12361
12362         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
12363         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
12364         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
12365         m68k/t-mlib to tmake_file.
12366         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
12367         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
12368         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
12369         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
12370         variable is not empty, add t-$m68k_arch_family to tmake_file.
12371         Add t-mlibs to tmake_file.
12372         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
12373         * config/m68k/t-cf: New file.
12374         * config/m68k/t-m68k: Likewise.
12375         * config/m68k/t-mlibs: Likewise.
12376         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12377         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
12378         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
12379         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12380         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
12381         Delete.
12382         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
12383         (INSTALL_LIBGCC): Delete.
12384         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
12385         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12386         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
12387         (M68K_MLIB_CPU): Define.
12388         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12389         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
12390         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
12391
12392 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
12393             Richard Guenther  <rguenther@suse.de>
12394
12395         PR middle-end/23361
12396         * fold-const.c (fold_comparison): Handle obfuscated comparisons
12397         against INT_MIN/INT_MAX.
12398         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
12399         file if a loop is removed.
12400
12401 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
12402
12403         * calls.c (store_one_arg): Pass correct alignment to
12404         emit_push_insn for non-BLKmode values.
12405         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
12406         unaligned stack slot via a suitably aligned slot.
12407
12408 2007-02-08  DJ Delorie  <dj@redhat.com>
12409
12410         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
12411         warnings.
12412         (legal_subregs): Use unsigned char, make const.
12413         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
12414
12415 2007-02-08  Paul Brook  <paul@codesourcery.com>
12416
12417         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
12418         special interworking needed.
12419
12420 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
12421
12422         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
12423         conditional to __SSE2__.
12424         (Entries below should have been added to first ChangeLog
12425         entry for amdfam10 dated 2007-02-05)
12426         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
12427         defined.
12428         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
12429         defined.
12430         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
12431         defined.
12432
12433 2007-02-08  DJ Delorie  <dj@redhat.com>
12434
12435         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
12436         * config/m32c/m32c.c (legal_subregs): New.
12437         (m32c_illegal_subreg_p): New.
12438         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
12439         unsupported subregs of hard regs.
12440
12441 2007-02-08  Jan Hubicka  <jh@suse.cz>
12442
12443         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
12444         the same one; always update histograms.
12445
12446 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
12447
12448         * passes.c (init_optimization_passes): Tidy comment.
12449
12450 2007-02-08  Roger Sayle  <roger@eyesopen.com>
12451
12452         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
12453         strip zero_extend, bswap and rotates from POCOUNT's argument.
12454         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
12455         zero_extend and rotates from PARITY's argument.
12456         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
12457         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
12458         of an integer constant at compile-time.
12459
12460 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
12461
12462         PR 30562
12463         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
12464         Update all users.
12465         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
12466         users.
12467         (init_alias_info):
12468         * tree-ssa-live.c (remove_unused_locals): Do not remove
12469         TREE_ADDRESSABLE variables.
12470         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
12471         * tree-ssa-operands.c (add_virtual_operand): Remove argument
12472         FOR_CLOBBER.  Update all users.
12473         If VAR has an associated alias set, add a virtual operand for
12474         it if no alias is found to conflict with the memory reference.
12475
12476 2007-02-07  Jan Hubicka  <jh@suse.cz>
12477             Robert Kidd <rkidd@crhc.uiuc.edu>
12478
12479         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
12480
12481 2007-02-07  Ian Lance Taylor  <iant@google.com>
12482
12483         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
12484
12485 2007-02-07  Roger Sayle  <roger@eyesopen.com>
12486
12487         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
12488         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
12489         tablejumpdi, movsi_to_cr_one): Remove constraints from
12490         define_expand's match_operands.
12491
12492 2007-02-07  Roger Sayle  <roger@eyesopen.com>
12493
12494         * global.c (compute_regsets): Move declatation of "i" inside of
12495         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
12496
12497 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
12498
12499         PR c++/30703
12500         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
12501         of INDIRECT_REF <RESULT_DECL>.
12502
12503         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
12504
12505 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
12506             Kaz Kojima  <kkojima@gcc.gnu.org>
12507
12508         PR target/29746
12509         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
12510         properly.
12511         (sh_initialize_trampoline): Add parentheses to avoid a warning.
12512
12513 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
12514
12515         * doc/loop.texi: Document possibility not to perform disambiguation
12516         of loops with multiple latches.
12517         * cfgloopmanip.c (alp_enum_p): Removed.
12518         (add_loop): Handle subloops.  Use get_loop_body_with_size.
12519         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
12520         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
12521         the new forwarder block.
12522         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
12523         Handle the case latch is NULL.
12524         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
12525         when marking loop exits.
12526         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
12527         be modified.
12528         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
12529         disambiguate_loops_with_multiple_latches.
12530         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
12531         before fix_loop_structure.
12532         * cfgloop.c: Include pointer-set.h and output.h.
12533         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
12534         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
12535         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
12536         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
12537         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
12538         disambiguate_multiple_latches, get_loop_body_with_size,
12539         disambiguate_loops_with_multiple_latches): New functions.
12540         (flow_loop_dump): Dump multiple latch edges.
12541         (flow_loop_nodes_find): Handle loops with multiple latches.
12542         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
12543         (glb_enum_p): Modified.
12544         (get_loop_body): Use get_loop_body_with_size.
12545         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
12546         (AVOID_CFG_MODIFICATIONS): New constant.
12547         (disambiguate_loops_with_multiple_latches, add_loop,
12548         get_loop_body_with_size): Declare.
12549         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
12550
12551 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
12552
12553         PR inline-asm/28686
12554         * global.c (compute_regsets): New function.
12555         (global_alloc): Refactored ELIMINABLE_REGSET
12556         and NO_GLOBAL_ALLOC_REGS computation out.
12557         (rest_of_handle_global_alloc): Call compute_regsets()
12558         for non-optimizing case.
12559
12560 2007-02-06  Richard Henderson  <rth@redhat.com>
12561
12562         * config/i386/constraints.md (Y2): Rename from Y.
12563         (Yi): New constraint.
12564         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
12565         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
12566         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
12567         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
12568         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
12569         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
12570         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
12571         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
12572         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
12573         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
12574         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
12575         vec_extractv2si_1): Change Y constraints to Y2.
12576         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
12577         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
12578         Change Y constraints to Y2.
12579         (sse2_loadld): Change Y constraints to x.
12580
12581 2007-02-06  Roger Sayle  <roger@eyesopen.com>
12582
12583         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
12584         (parity<mode>2): New define_expand using rs6000_emit_parity.
12585         * config/rs6000/rs6000.c (rs6000_emit_popcount,
12586         rs6000_emit_parity): New functions.
12587         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
12588         rs6000_emit_parity): Prototype here.
12589
12590 2007-02-06  Ian Lance Taylor  <iant@google.com>
12591
12592         * lower-subreg.c (simple_move_operand): Reject CONST.
12593         (resolve_clobber): Call validate_change rather than directly
12594         assigning to XEXP (pat, 0).
12595
12596 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
12597
12598         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
12599         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
12600         (tree-cfg.o): Remove hashtab.h dependency.
12601
12602         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
12603         (struct ivopts_data): Change niters to pointer_map_t.
12604         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
12605         (niter_for_exit): Create pointer_map on demand.  Change for
12606         pointer_map API.
12607         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
12608         (free_loop_data): Destroy data->niters if created and reset field.
12609         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
12610         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
12611
12612         * tree-ssa-reassoc.c: Include pointer-set.h.
12613         (bb_rank): Change to long *.
12614         (operand_rank): Change to pointer_map_t.
12615         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
12616         (insert_operand_rank): Accept long.
12617         (operand_entry_hash, operand_entry_eq): Remove.
12618         (get_rank): Return long.  Adjust for changes above.
12619         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
12620         and operand_rank.
12621         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
12622
12623         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
12624         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
12625         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
12626         is not NULL.
12627         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
12628         directly since it cannot be NULL.
12629         (get_vi_for_tree): Rewrite for pointer_map API.
12630         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
12631         (init_alias_vars): Create vi_for_tree as pointer_map.
12632         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
12633
12634         * tree-cfg.c: Don't include hashtab.h.
12635         (edge_to_cases): Declare as pointer_map.
12636         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
12637         Delete.
12638         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
12639         (start_recording_case_labels): Create edge_to_cases as pointer_map.
12640         (end_recoding_case_labels): Cleanup edge_to_cases manually before
12641         destroying it.
12642         (record_switch_edge): Delete.
12643         (get_cases_for_edge): Adjust for pointer_map API, inline
12644         record_switch_edge (rewritten for new API), remove goto.
12645
12646 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
12647
12648         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
12649         * tree-nested.c: Include pointer-set.h.
12650         (var_map_elt, var_map_eq, var_map_hash): Delete.
12651         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
12652         to pointer_map_t's.
12653         (nesting_info_bitmap_obstack): New.
12654         (lookup_field_for_decl): Adjust for pointer_map API.
12655         (lookup_tramp_for_decl): Adjust for pointer_map API.
12656         (get_nonlocal_debug_decl): Adjust for pointer_map API.
12657         (get_local_debug_decl): Adjust for pointer_map API.
12658         (convert_nl_goto_reference): Adjust for pointer_map API.
12659         (convert_nl_goto_receiver): Adjust for pointer_map API.
12660         (create_nesting_tree): Create outside GGC space.  Create bitmap on
12661         the new obstack.  Create field_map and var_map as pointer_maps.
12662         (free_nesting_tree): Adjust for changes to create_nesting_tree.
12663         (root): Delete.
12664         (lower_nested_functions): Move root here, no need to NULL it.
12665         Initialize and release the obstack.
12666
12667 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
12668
12669         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
12670         Remove prototypes and make them non-static.
12671         (struct tree_int_map): Remove.
12672         * tree.h (struct tree_int_map): Move here, turning TO into an
12673         unsigned int.
12674         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
12675
12676         * tree.h (TREE_COMPLEXITY): Remove.
12677         (struct tree_exp): Remove complexity field.
12678         * tree.c (build1_stat): Don't set it.
12679
12680 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
12681             Victor Kaplansky  <victork@il.ibm.com>
12682
12683         * tree-vectorizer.c (vect_is_simple_use): Support induction.
12684         (vect_is_simple_reduction): Support reduction with induction as
12685         one of the operands.
12686         (vect_is_simple_iv_evolution): Fix formatting.
12687         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
12688         formatting.  Don't mark induction phis for vectorization.
12689         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
12690         * tree-vect-transform.c (get_initial_def_for_induction): New function.
12691         (vect_get_vec_def_for_operand): Support induction.
12692         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
12693         induction case.
12694         (vectorizable_reduction): Support reduction with induction as one of
12695         the operands.
12696         (vectorizable_type_demotion): Use def-type of stmt argument rather
12697         than dummy def-type.
12698
12699         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
12700         flag_tree_scev_cprop.
12701         * common.opt (tree-scev-cprop): New flag.
12702
12703         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
12704         call to vect_get_new_vect_var.
12705
12706 2007-02-06  Ira Rosen  <irar@il.ibm.com>
12707
12708         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
12709         vectype is not NULL.
12710         (vect_pattern_recog_1): Likewise.
12711
12712 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12713
12714         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
12715         (fold_negate_expr): Likewise.
12716
12717 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
12718
12719         PR debug/30189
12720         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
12721         even if cv-qualification is the same.
12722
12723 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
12724
12725         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
12726         __enable_execute_stack on completion.
12727
12728 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12729
12730         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
12731         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
12732         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
12733         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
12734         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
12735         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
12736         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
12737         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
12738
12739 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12740
12741         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
12742         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
12743         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
12744         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
12745         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
12746         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
12747         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
12748         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
12749         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
12750         umuldi3_highpart_rex64, umulsi3_highpart_insn,
12751         umulsi3_highpart_zext, smuldi3_highpart_rex64,
12752         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
12753         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
12754         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
12755         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
12756         sqrtextenddfxf2_i387): Added amdfam10_decode.
12757
12758         * config/i386/athlon.md (athlon_idirect_amdfam10,
12759         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
12760         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
12761         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
12762         athlon_ivector_store_amdfam10): New define_insn_reservation.
12763         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
12764         amdfam10.
12765
12766 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12767
12768         * config/i386/athlon.md (athlon_call_amdfam10,
12769         athlon_pop_amdfam10, athlon_lea_amdfam10): New
12770         define_insn_reservation.
12771         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
12772         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
12773         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
12774
12775 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12776
12777         * config/i386/athlon.md (athlon_sseld_amdfam10,
12778         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
12779         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
12780
12781 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12782
12783         * config/i386/athlon.md (athlon_sseins_amdfam10): New
12784         define_insn_reservation.
12785         * config/i386/i386.md (sseins): Added sseins to define_attr type
12786         and define_attr unit.
12787         * config/i386/sse.md: Set type attribute to sseins for insertq
12788         and insertqi.
12789
12790 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12791
12792         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
12793         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
12794         ssecomi_load_amdfam10, ssecomi_amdfam10,
12795         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
12796         define_insn_reservation.
12797         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
12798
12799 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12800
12801         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
12802         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
12803         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
12804         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
12805         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
12806         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
12807         define_insn_reservation.
12808
12809         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
12810         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
12811         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
12812         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
12813         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
12814
12815 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12816
12817         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
12818         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
12819         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
12820         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
12821         athlon_ssemul_load_k8): Added amdfam10.
12822
12823 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12824
12825         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
12826         (x86_sse_unaligned_move_optimal): New variable.
12827
12828         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
12829         m_AMDFAM10.
12830         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
12831         for unaligned vector SSE double/single precision loads for AMDFAM10.
12832
12833 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12834
12835         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
12836         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
12837         Define TARGET_CPU_DEFAULT_amdfam10.
12838         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
12839         (processor_type): Add PROCESSOR_AMDFAM10.
12840
12841         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
12842         processor_type in config/i386/i386.h.
12843         Enable imul peepholes for TARGET_AMDFAM10.
12844
12845         * config.gcc: Add support for --with-cpu option for amdfam10.
12846
12847         * config/i386/i386.c (amdfam10_cost): New variable.
12848         (m_AMDFAM10): New macro.
12849         (m_ATHLON_K8_AMDFAM10): New macro.
12850         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
12851         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
12852         x86_promote_QImode, x86_integer_DFmode_moves,
12853         x86_partial_reg_dependency, x86_memory_mismatch_stall,
12854         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
12855         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
12856         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
12857         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
12858         Enable/disable for amdfam10.
12859         (override_options): Add amdfam10_cost to processor_target_table.
12860         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
12861         processor_alias_table.
12862         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
12863         (ix86_adjust_cost): Add code for amdfam10.
12864
12865 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12866
12867         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
12868         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
12869         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
12870         * config/i386/i386.h: Add builtin definition for SSE4A.
12871         * config/i386/i386.md: Add support for ABM instructions
12872         (popcnt and lzcnt).
12873         * config/i386/sse.md: Add support for SSE4A instructions
12874         (movntss, movntsd, extrq, insertq).
12875         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
12876         Add -march=amdfam10 flag.
12877         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
12878         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
12879         and amdfam10.
12880         * doc/extend.texi: Add documentation for SSE4A builtins.
12881
12882 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
12883
12884         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
12885
12886 2007-02-05  Richard Guenther  <rguenther@suse.de>
12887
12888         * tree-vectorizer.h (vectorizable_function): Add argument type
12889         argument, change return type.
12890         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
12891         * tree-vect-transform.c (vectorizable_function): Handle extra
12892         argument, return vectorized function decl.
12893         (build_vectorized_function_call): Remove.
12894         (vectorizable_call): Handle calls with result and argument types
12895         differing.  Handle loop vectorization factor correctly.
12896         * targhooks.c (default_builtin_vectorized_function): Adjust for
12897         extra argument.
12898         * targhooks.h (default_builtin_vectorized_function): Likewise.
12899         * target.h (builtin_vectorized_function): Add argument type
12900         argument.
12901         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
12902         extra argument, allow vectorizing of lrintf.
12903         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
12904         documentation of target hook.
12905
12906 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
12907
12908         PR target/30665
12909         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
12910         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
12911         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
12912
12913 2007-02-05  Roger Sayle  <roger@eyesopen.com>
12914
12915         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
12916         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
12917         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
12918         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
12919         before canonicalizing sincos to cexpi.
12920         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
12921
12922 2007-02-05  Roger Sayle  <roger@eyesopen.com>
12923
12924         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
12925         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
12926         (alpha_init_builtins): Use alpha_add_builtins to process tables.
12927
12928 2007-02-05  Roger Sayle  <roger@eyesopen.com>
12929
12930         * mips-tfile.c (initialize_init_file): Correct endianness test.
12931
12932 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
12933
12934         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
12935         the 'y' constraint.
12936
12937 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
12938
12939         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
12940         saves in a PARALLEL before the register assignments.
12941
12942 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
12943
12944         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
12945         DWARF_FRAME_RETURN_COLUMN to be a general register.
12946         * dwarf2out.c (init_return_column_size): New function, split from...
12947         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
12948         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
12949         to be nongeneral registers.
12950         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
12951         integer registers.
12952         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
12953         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
12954
12955 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
12956
12957         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
12958
12959 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
12960
12961         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
12962         (remove_path): Use can_remove_branch_p and remove_branch instead
12963         of loop_delete_branch_edge.
12964         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
12965         (tree_transform_and_unroll_loop): Remove dead branches immediately.
12966         Update profile using scale_dominated_blocks_in_loop.
12967         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
12968         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
12969         (can_remove_branch_p, remove_branch): Declare.
12970         * tree-cfg.c (tree_can_remove_branch_p): New function.
12971         (tree_cfg_hooks): Add tree_can_remove_branch_p.
12972         * cfgrtl.c (rtl_can_remove_branch_p): New function.
12973         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
12974
12975 2007-02-05  Jan Hubicka  <jh@suse.cz>
12976
12977         PR middle-end/30696
12978         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
12979         nodes in cgraph, don't remove offline copy of the function.
12980
12981 2007-02-04  Jan Hubicka  <jh@suse.cz>
12982
12983         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
12984         vectors might cause maybe_lookup_element_for_expr to be called
12985         on non-sra-candidate.
12986
12987 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
12988
12989         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
12990         config/bfin/bfin.md, config/bfin/predicates.md: Follow
12991         spelling conventions.
12992
12993 2007-02-04  Richard Guenther  <rguenther@suse.de>
12994
12995         PR middle-end/30636
12996         * fold-const.c (try_move_mult_to_index): Make sure to not
12997         overflow one dimension of a multi-dimensional array access.
12998
12999 2007-02-04  Jan Hubicka  <jh@suse.cz>
13000
13001         * passes.c (init_optimization_passes): Reindent.
13002
13003 2007-02-04  Jan Hubicka  <jh@suse.cz>
13004             Eric Botcazou  <ebotcazou@adacore.com>
13005
13006         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
13007         (execute_fixup_cfg): Break out the abnormal goto code.
13008         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
13009         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
13010         (optimize_inline_calls): Call make_nonlocal_label_edges.
13011
13012 2007-02-04  Jan Hubicka  <jh@suse.cz>
13013
13014         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
13015         true when something was changed.
13016         (rename_ssa_copies): When something was changed, do
13017         TODO_remove_unused_locals.
13018         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
13019         add TODO_remove_unused_locals when instruction was removed.
13020
13021 2007-02-04  Jan Hubicka  <jh@suse.cz>
13022
13023         * ipa-inline.c (try_inline): Improve debug output; work on already
13024         inline edges too.
13025         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
13026         call try_inline for already inlined edges too when flattening;
13027         inline also functions that make callee growth but overall unit size
13028         reduce.
13029
13030 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13031
13032         * config/m32c/bitops.md, config/m32c/jump.md,
13033         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
13034         config/m32r/m32r.h, config/m32r/m32r.md,
13035         config/m32r/predicates.md, config/m68hc11/larith.asm,
13036         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
13037         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
13038         config/mips/mips-protos.h, config/mips/mips.c,
13039         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
13040         config/mn10300/mn10300.h, config/mn10300/predicates.md,
13041         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
13042         spelling conventions.
13043
13044         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
13045         Follow spelling conventions.
13046
13047 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
13048
13049         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
13050         warn about C++0x compatibility.
13051
13052 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13053
13054         * config/h8300/h8300.c, config/h8300/h8300.h,
13055         config/h8300/h8300.md: Follow spelling conventions.
13056
13057 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
13058
13059         PR middle-end/30667
13060         * combine.c (try_combine): Do not substitute source operand
13061         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
13062
13063 2007-02-03  Jan Hubicka  <jh@suse.cz>
13064
13065         PR gcov-profile/30650
13066         * value-prof.c (stringop_block_profile): Fix handling of size counter;
13067         do not divide by zero for never executed counters.
13068         (tree_find_values_to_profile): Fix counters.
13069         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
13070
13071 2007-02-03  Ian Lance Taylor  <iant@google.com>
13072
13073         * lower-subreg.c (simple_move_operand): New static function,
13074         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
13075         operands.
13076         (simple_move): Call simple_move_operand.
13077         (find_decomposable_subregs): Add special handling of MEMs.
13078         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
13079         meaning of return value.  If we see a hard register, test whether
13080         it can store a word_mode value.  Change all callers.
13081
13082 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13083
13084         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
13085         ftrapv insns and expanders.
13086         (subdi3): Change define_expand operand 1 to arith11_operand, and
13087         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
13088         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
13089         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
13090         respectively.
13091
13092         PR middle-end/30174
13093         * varasm.c (notice_global_symbol): Treat global objects as weak when
13094         flag_shlib is true.
13095
13096 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13097
13098         * emit-rtl.c (dconstpi): Delete.
13099         (dconstsqrt2): New.
13100         (init_emit_once): Delete dconstpi and init dconstsqrt2.
13101         * real.h (dconstpi): Delete.
13102         (dconstsqrt2): New.
13103         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
13104         (fold_builtin_hypot): Likewise.
13105
13106 2007-02-03  Tom Tromey  <tromey@redhat.com>
13107
13108         PR driver/30246
13109         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
13110         -gcoff3, -gxcoff3, -gvms3 implies -dD.
13111
13112 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
13113
13114         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
13115         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
13116         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
13117         config/rs6000/cell.md, config/rs6000/darwin.h,
13118         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
13119         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
13120         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
13121         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
13122         typos.  Follow spelling conventions.
13123         * doc/invoke.texi: Follow spelling conventions.
13124
13125 2007-02-03  Roger Sayle  <roger@eyesopen.com>
13126
13127         * simplify-rtx.c (simplify_relational_operation_1): Implement some
13128         canonicalization transformations that attempt to simplify integer
13129         constant comparisons to become comparisons against zero.
13130
13131 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13132
13133         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
13134         fabs(x)*sqrt(2).
13135         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
13136         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
13137
13138 2007-02-02  Mike Stump  <mrs@apple.com>
13139
13140         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
13141         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
13142         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
13143         generate a branch island.
13144
13145 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
13146
13147         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
13148         (xtensa_legitimate_address_p): New.
13149         (xtensa_legitimize_address): New.
13150         (xtensa_output_addr_const_extra): New.
13151         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
13152         (BASE_REG_P): New.
13153         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
13154         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
13155         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
13156         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
13157         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
13158         (xtensa_legitimize_address): New.
13159         (xtensa_output_addr_const_extra): New.
13160
13161 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
13162
13163         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
13164
13165 2007-02-02  Ian Lance Taylor  <iant@google.com>
13166
13167         * expmed.c (expand_divmod): Add comment.
13168
13169 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
13170
13171         * emit-rtl.c (renumber_insns): Remove.
13172         * flags.h: Remove the extern for flag_renumber_insns.
13173         * rtl.h: Remove the prototype for renumber_insns.
13174         * toplev.c (flag_renumber_insns): Remove.
13175
13176 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
13177
13178         Revert for x86 darwin:
13179         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
13180
13181         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
13182         code before the following patch under TARGET_MACHO.
13183         (ix86_function_value_regno_p): Likewise.
13184
13185 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13186
13187         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
13188         COMPLEX_EXPR.
13189
13190 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13191
13192         PR target/29682
13193         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
13194         general or fp registers.  Add comments.
13195         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
13196
13197 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
13198
13199         * pointer-set.c (insert_aux): Only return insertion slot.
13200         (pointer_set_insert): Adjust.
13201         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
13202         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
13203         pointer_map_traverse): New.
13204         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
13205         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
13206         pointer_map_contains, pointer_map_traverse): Declare.
13207
13208 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
13209
13210         PR middle-end/30473
13211         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
13212         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
13213
13214 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13215
13216         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
13217
13218         (struct _dep): New type.
13219         (dep_t): New typedef.
13220         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
13221         (DEP_STATUS): New access macro.  The macro with the same name was
13222         renamed to DEP_LINK_STATUS.
13223         (dep_init): Declare function
13224
13225         (struct _dep_link): New type.
13226         (dep_link_t): New typedef.
13227         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
13228         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
13229         (DEP_LINK_STATUS): New macro.
13230         (debug_dep_links): New debug function.
13231
13232         (struct _deps_list): New type.
13233         (deps_list_t): New typedef.
13234         (DEPS_LIST_FIRST): New access macro.
13235         (FOR_EACH_DEP_LINK): New cycle macro.
13236         (create_deps_list, free_deps_list, delete_deps_list): Declare
13237         functions.
13238         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
13239         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
13240         (copy_deps_list_change_con): Ditto.
13241
13242         (move_dep_link): Declare function.
13243
13244         (struct _dep_node): New type.
13245         (dep_node_t): New typedef.
13246         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
13247
13248         (struct haifa_insn_data.back_deps): New field to hold backward
13249         dependencies of the insn.
13250         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
13251         to deps_list_t.
13252         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
13253         Change its type to deps_list_t.
13254         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
13255         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
13256         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
13257
13258         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
13259
13260         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
13261
13262         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
13263         all callers.
13264         (dep_cost): Declare.
13265
13266         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
13267         (ds_to_dk, dk_to_ds): New functions.
13268
13269         (init_dep_1): New static function.
13270         (init_dep): New function.
13271         (copy_dep): New static function.
13272
13273         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
13274         functions.
13275         (detach_dep_link): New static function.
13276         (move_dep_link): New function.
13277
13278         (dep_links_consistent_p, dump_dep_links): New static functions.
13279         (debug_dep_links): New debugging function.
13280
13281         (deps_obstack, dl_obstack, dn_obstack): New static variables.
13282
13283         (alloc_deps_list, init_deps_list): New static functions.
13284         (create_deps_list): New function.
13285         (clear_deps_list): New static function.
13286         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
13287         (deps_list_consistent_p, dump_deps_list): New static functions.
13288         (debug_deps_list): New function.
13289         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
13290         functions.
13291         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
13292
13293         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
13294         use new scheduler dependencies lists.
13295         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
13296         (sched_analyze): Ditto.  Initialize dependencies lists.
13297         (add_forw_dep, compute_forward_dependences): Update to use new
13298         scheduler dependencies lists.
13299
13300         (init_dependency_caches): Init deps_obstack.
13301         (free_dependency_caches): Free deps_obstack.
13302
13303         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
13304         new scheduler dependencies lists.
13305         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
13306         (add_back_forw_dep, delete_back_forw_dep): Ditto.
13307
13308         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
13309         Update to use new scheduler dependencies lists.
13310         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
13311         (debug_dependencies): Ditto.
13312         (schedule_region): Update comments.
13313
13314         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
13315         scheduler dependencies lists.
13316         (schedule_ebb): Update comments.
13317
13318         * rtl.def (DEPS_LIST): Remove.
13319
13320         * lists.c (unused_deps_list): Remove.
13321         (free_list): Update assertions.
13322
13323         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
13324         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
13325
13326         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
13327         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
13328
13329         * haifa-sched.c (comments): Update.
13330         (insn_cost1): Remove.  Inline the code into insn_cost ().
13331         (insn_cost): Update to use new scheduler dependencies lists.  Move
13332         processing of the dependency cost to dep_cost ().
13333         (dep_cost): New function.  Use it instead of insn_cost () when
13334         evaluating cost of the dependency.  Use compatible interface to
13335         interact with the target.
13336         (priority): Update to use new scheduler dependencies lists.
13337         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
13338         with greater number of insns that depend on the insn.
13339         (schedule_insn): Update to use new scheduler dependencies lists.  Add
13340         code to free backward dependencies lists.  Inline and optimize code
13341         from resolve_dep () - see PR28071.
13342         (ok_for_early_queue_removal): Update to use new scheduler dependencies
13343         lists.  Update call to targetm.sched.is_costly_dependence hook.
13344
13345         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
13346         scheduler dependencies lists.
13347
13348         (resolve_dep): Remove.  Move the logic to schedule_insn ().
13349         (init_h_i_d): Initialize dependencies lists.
13350
13351         (process_insn_depend_be_in_spec): Rename to
13352         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
13353         dependencies lists.
13354         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
13355         Update to use new scheduler dependencies lists.
13356         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
13357
13358         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
13359         new scheduler dependencies lists.
13360         (build_intra_loop_deps): Ditto.
13361
13362         * target.h (struct _dep): Declare to use in
13363         gcc_target.sched.is_costly_dependence.
13364         (struct gcc_target.sched.adjust_cost): Fix typo.
13365         (struct gcc_target.sched.is_costly_dependence): Change signature to use
13366         single dep_t parameter instead of an equivalent triad.
13367         (struct gcc_target.sched.adjust_cost_2): Remove.
13368
13369         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
13370
13371         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
13372
13373         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
13374         documentation.
13375         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
13376
13377         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
13378         (REG_DEP_TRUE): Document.
13379
13380         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
13381         Change signature to correspond to the targetm.sched.adjust_cost hook.
13382         Update use in TARGET_SCHED_ADJUST_COST_2.
13383         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
13384         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
13385         new scheduler dependencies lists.
13386         (ia64_gen_check): Ditto.
13387
13388         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
13389         dependencies lists.
13390
13391         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
13392         signature to correspond to the targetm.sched.is_costly_dependence hook.
13393         (is_costly_group): Update to use new scheduler dependencies lists.
13394
13395         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
13396         instead of INSN_COST () macro.
13397
13398 2007-02-01  Ian Lance Taylor  <iant@google.com>
13399
13400         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
13401
13402 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
13403
13404         * pa.md (tp_load): Correct mfctl instruction syntax.
13405
13406 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
13407
13408         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
13409         altivec_padding_size calculation on AIX.  Improve comment, add
13410         assert to verify that it's right.
13411
13412         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
13413         64-bit.
13414
13415 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
13416
13417         PR inline-asm/28686
13418         * global.c (global_alloc): Add mising initialization of
13419         ELIMINABLE_REGSET.
13420
13421 2007-02-01  Roger Sayle  <roger@eyesopen.com>
13422
13423         * alias.c (init_alias_analysis): Correct whitespace.
13424         * bb-reorder.c (fix_edges_for_rarely_executed_code,
13425         partition_hot_cold_basic_blocks): Likewise.
13426         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
13427         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
13428         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
13429         fold_builtin_snprintf_chk, fold_builtin_printf,
13430         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
13431         do_mpfr_arg3, do_mpfr_sincos): Likewise.
13432         * cfgcleanup.c (cleanup_cfg): Likewise.
13433         * cfgexpand.c (tree_expand_cfg): Likewise.
13434         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
13435         * function.c (get_next_funcdef_no): Likewise.
13436         * gengtype.c (main): Likewise.
13437         * genmodes.c (main): Likewise.
13438         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
13439         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
13440         * ifcvt.c (noce_emit_move_insn): Likewise.
13441         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
13442         Likewise.
13443         * stor-layout.c (get_best_mode): Likewise.
13444         * tree-ssa-loop-niter.c (get_val_for): Likewise.
13445         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
13446         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
13447         perform_var_substitution, solve_graph): Likewise.
13448         * tree-vrp.c (vrp_finalize): Likewise.
13449
13450 2007-02-01  Ian Lance Taylor  <iant@google.com>
13451
13452         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
13453         high part of a paradoxical subreg, return a constant zero.
13454
13455 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
13456
13457         * toplev.c (lang_dependent_init): Call init_set_costs.
13458         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
13459
13460 2007-02-01  Richard Guenther  <rguenther@suse.de>
13461
13462         PR middle-end/30656
13463         * fold-const.c (fold_negate_expr): Allow negating a
13464         constant if overflow does not change.
13465
13466 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13467
13468         * doc/c-tree.texi (Expression trees): Improve markup.
13469         * doc/tm.texi (Register Classes, Addressing Modes)
13470         (Floating Point): Fix spacing after abbreviations.  Fix some
13471         typos.
13472
13473 2007-02-01  Ben Elliston  <bje@au.ibm.com>
13474
13475         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
13476         * doc/contrib.texi: Likewise.
13477         * doc/install.texi: Likewise.
13478
13479 2007-01-31  Richard Henderson  <rth@redhat.com>
13480             Ian Lance Taylor  <iant@google.com>
13481
13482         * lower-subreg.c: New file.
13483         * rtl.def (CONCATN): Define.
13484         * passes.c (init_optimization_passes): Add pass_lower_subreg and
13485         pass_lower_subreg2.
13486         * emit-rtl.c (update_reg_offset): New static function, broken out
13487         of gen_rtx_REG_offset.
13488         (gen_rtx_REG_offset): Call update_reg_offset.
13489         (gen_reg_rtx_offset): New function.
13490         * regclass.c: Revert patch of 2006-03-05, restoring
13491         reg_scan_update.
13492         (clear_reg_info_regno): New function.
13493         * dwarf2out.c (concatn_loc_descriptor): New static function.
13494         (loc_descriptor): Handle CONCATN.
13495         * common.opt (fsplit_wide_types): New option.
13496         * opts.c (decode_options): Set flag_split_wide_types when
13497         optimizing.
13498         * timevar.def (TV_LOWER_SUBREG): Define.
13499         * rtl.h (gen_reg_rtx_offset): Declare.
13500         (reg_scan_update): Declare.
13501         * regs.h (clear_reg_info_regno): Declare.
13502         * tree-pass.h (pass_lower_subreg): Declare.
13503         (pass_lower_subreg2): Declare.
13504         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
13505         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
13506         -fsplit-wide-types.
13507         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
13508         * Makefile.in (OBJS-common): Add lower-subreg.o.
13509         (lower-subreg.o): New target.
13510
13511 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13512
13513         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
13514
13515 2007-01-31  Anatoly Sokolov <aesok@post.ru>
13516
13517         PR target/19087
13518         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
13519
13520 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13521
13522         PR middle-end/29335
13523         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
13524
13525 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
13526
13527         * cfgloop.h: Include vec-prim.h.
13528         (enum li_flags): Remove LI_ONLY_OLD.
13529         (loop_iterator): Changed.
13530         (fel_next, fel_init): Iterate over loop tree.
13531         (FOR_EACH_LOOP_BREAK): New macro.
13532         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
13533         FOR_EACH_LOOP.
13534         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
13535         * modulo-sched.c (sms_schedule): Ditto.
13536         * tree-vectorizer.c (vectorize_loops): Ditto.
13537         * doc/loop.texi: Update information on loop numbering and behavior of
13538         FOR_EACH_LOOP wrto new loops.
13539         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
13540         add_to_evolution_1): Test nestedness of loops instead of comparing
13541         their numbers.
13542         * tree-chrec.c (chrec_fold_plus_poly_poly,
13543         chrec_fold_multiply_poly_poly, chrec_evaluate,
13544         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
13545         reset_evolution_in_loop): Ditto.
13546         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
13547
13548 2007-01-31  Dirk Mueller  <dmueller@suse.de>
13549
13550         * c-common.c (warn_about_parentheses): Separate warning about
13551         un-parenthized sequence of comparison operators from the one
13552         which is supposed to warn about x <= y <= z.
13553
13554 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
13555
13556         * optabs.h (enum optab_index): Add new OTI_isinf.
13557         (isinf_optab): Define corresponding macro.
13558         * optabs.c (init_optabs): Initialize isinf_optab.
13559         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
13560         patterns.
13561         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
13562         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
13563         using isinf_optab.
13564         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
13565         expand_builtin_interclass_mathfn.
13566         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
13567         * config/i386/i386.md (UNSPEC_FXAM): New constant.
13568         (fxam<mode>2_i387): New insn pattern.
13569         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
13570         built-in functions as x87 inline asm.
13571
13572 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13573
13574         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
13575
13576 2007-01-30  Eric Christopher  <echristo@apple.com>
13577
13578         * config.gcc: Add geode.
13579
13580 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13581
13582         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
13583         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
13584         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
13585         value-prof.c: Fix comment typos.
13586
13587 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13588
13589         PR c++/24745
13590         * doc/invoke.texi (Wpointer-arith): Document warning.
13591
13592 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
13593
13594         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
13595         the list of discrepancies from the draft TR.
13596
13597 2007-01-30  Dirk Mueller  <dmueller@suse.de>
13598
13599         PR c++/30601
13600         * doc/invoke.texi (-Wreturn-type): Update description to
13601         match new behavior.
13602
13603 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
13604
13605         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
13606
13607 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
13608
13609         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
13610         to handle optabs that operate on floating point input argument and
13611         output to integer output.
13612         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
13613         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
13614         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
13615         expand_builtin_interclass_mathfn ().
13616         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
13617         (ilogbsi2): Remove.
13618         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
13619         ilogbl built-in functions as x87 intrinsics.
13620
13621 2007-01-30  Richard Guenther  <rguenther@suse.de>
13622
13623         PR middle-end/27657
13624         * dwarf2out.c (reference_to_unused): Query varpool if the
13625         variable was output.
13626
13627 2007-01-30  Richard Guenther  <rguenther@suse.de>
13628
13629         PR middle-end/30313
13630         * passes.c (execute_one_pass): Reset in_gimple_form to not
13631         confuse non-unit-at-a-time mode.
13632
13633 2007-01-29  Roger Sayle  <roger@eyesopen.com>
13634             Richard Guenther  <rguenther@suse.de>
13635
13636         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
13637         avoid undefined behaviour on overflow.  Use force_fit_type_double
13638         to construct the constant with the specified TREE_OVERFLOW.
13639
13640 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
13641
13642         * config/dfp-bit.c: Add parameterized support for fp exceptions.
13643         * config/dfp-bit.h: Ditto.
13644
13645 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13646
13647         * c-decl.c (pop_scope): Replace warnings with call to
13648         warn_for_unused_label.
13649         * c-common.h (warn_for_unused_label): Declare.
13650         * c-common.c (warn_for_unused_label): Define.
13651
13652 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13653
13654         * tree-optimize.c (update_inlined_to_pointers): Delete unused
13655         function.
13656
13657 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
13658
13659         * Makefile.in (USER_H): Remove decfloat.h.
13660         * ginclude/decfloat.h: Delete, moving contents to ...
13661         * ginclude/float.h: Add support for decimal floating point,
13662         guarded by __STDC_WANT_DEC_FP__.
13663
13664 2007-01-29  Mike Stump  <mrs@apple.com>
13665
13666         * doc/gccint.texi (Top): Rename Loop Representation to Loop
13667         Analysis and Representation to resolve case insensitive conflict.
13668         * doc/loop.texi (Loop Analysis and Representation): Likewise.
13669
13670 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
13671
13672         * tree.h (struct tree_memory_tag): Add aliases member.
13673         (MTAG_ALIASES): New macro.
13674         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
13675         (add_may_alias): Remove pointer-set. Update for may_aliases being
13676         a bitmap.
13677         (mark_aliases_call_clobbered): Update for may_aliases being a
13678         bitmap.
13679         (compute_tag_properties): Ditto.
13680         (create_partition_for): Ditto.
13681         (compute_memory_partitions): Ditto.
13682         (dump_may_aliases_for): Ditto.
13683         (is_aliased_with): Ditto.
13684         (add_may_alias_for_new_tag): Ditto.
13685         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
13686         (compute_is_aliased): New function.
13687         (compute_may_aliases): Call compute_is_aliased).
13688         (init_alias_info): Initialize alias_bitmap_obstack.
13689         (union_alias_set_into): New function.
13690         (compute_flow_sensitive_aliasing): Use union_aliases_into.
13691         (have_common_aliases_p): Rewrite to take two bitmaps and use
13692         intersection.
13693         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
13694         Update for bitmaps.
13695         (finalize_ref_all_pointers): Update for add_may_alias changes.
13696         (new_type_alias): Ditto.
13697         * tree-flow-inline.h (may_aliases): Return a bitmap.
13698         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
13699         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
13700         may_aliases being a bitmap.
13701         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
13702         may_aliases now returns a bitmap.
13703         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
13704         being a bitmap.
13705         * tree-ssa-operands.c (add_virtual_operand): Update for
13706         may_aliases being a bitmap.
13707
13708 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
13709
13710         PR tree-optimization/30630
13711         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
13712         variable as changed.
13713
13714 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
13715
13716         PR c++/28266
13717         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
13718         expanded only once even if an error occurs.
13719
13720 2007-01-29  Ben Elliston  <bje@au.ibm.com>
13721
13722         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
13723         (__gcov_average_profiler): Likewise.
13724         (__gcov_ior_profiler): Likewise.
13725         (__gcov_merge_ior): Likewise.
13726
13727 2007-01-28  Jan Hubicka  <jh@suse.cz>
13728
13729         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
13730         * value-prof.c (stringop_block_profile): Likewise.
13731
13732 2007-01-28  Jan Hubicka  <jh@suse.cz>
13733
13734         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
13735         variant handling histograms; add wrapper.
13736         (clear_storage_via_libcall): Export.
13737         (emit_block_move_hints): Break out from ...; add histograms.
13738         (emit_block_move): ... this one.
13739         (clear_storage_hints): Break out from ...; add histograms.
13740         (clear_storage): ... this one.
13741         (set_storage_via_memset): Handle histogram.
13742         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
13743         (clear_storage_hints, clear_storage_via_libcall): Declare.
13744         (set_storage_via_setmem): Update prototype.
13745         * doc/md.texi (movmem, setmem): Document new arguments.
13746
13747         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
13748         new histograms.
13749         (stringop_block_profile): New global function.
13750         (tree_stringops_values_to_profile): Profile block size and alignment.
13751         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
13752         HIST_TYPE_IOR.
13753         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
13754         (stringop_block_profile): Declare.
13755         * builtins.c: Include value-prof.h.
13756         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
13757         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
13758         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
13759         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
13760         * profile.c (instrument_values): Add new counters.
13761         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
13762         calls.
13763         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
13764         (tree_init_edge_profiler): Build new profilers.
13765         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
13766         (pass_tree_profile): Add dump.
13767         (tree_profile_hooks): Update.
13768         * Makefile.in (LIBGCOV): Add new constants.
13769         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
13770         __gcov_ior_profiler): New.
13771         * i386.md (movmem/setmem expanders): Add new optional arguments.
13772
13773 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
13774
13775         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
13776
13777 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
13778
13779         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
13780         (tree_unswitch_single_loop): Pass eni_size_weights to
13781         tree_num_loop_insns.
13782         * tree-ssa-loop-manip.c: Include tree-inline.h.
13783         (can_unroll_loop_p): Pass eni_size_weights to
13784         tree_num_loop_insns.
13785         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
13786         Pass eni_size_weights to estimate_num_insns.
13787         * tree.h (init_inline_once): Export.
13788         * toplev.c (backend_init): Call init_inline_once.
13789         * cgraphunit.c (cgraph_process_new_functions,
13790         cgraph_analyze_function): Pass eni_inlining_weights to
13791         estimate_num_insns.
13792         * ipa-inline.c (compute_inline_parameters): Ditto.
13793         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
13794         to estimate_num_insns.
13795         (try_unroll_loop_completely): Pass eni_size_weights to
13796         tree_num_loop_insns.
13797         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
13798         ot estimate_num_insns.
13799         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
13800         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
13801         * tree-inline.c (eni_inlining_weights, eni_size_weights,
13802         eni_time_weights): New variables.
13803         (init_inline_once): Initialize them.
13804         (struct eni_data): Mew.
13805         (estimate_num_insns_1, estimate_num_insns): Use weights.
13806         * tree-inline.h (struct eni_weights_d): New.
13807         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
13808         (estimate_num_insns): Declaration changed.
13809         * cfgloop.h (tree_num_loop_insns): Declaration changed.
13810         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
13811         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
13812
13813 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
13814
13815         * tree-data-ref.c (conflict_fn): Assert that the number of affine
13816         relations in the conflict function is valid.
13817
13818 2007-01-27  Ian Lance Taylor  <iant@google.com>
13819
13820         * common.opt: Add fstrict-overflow.
13821         * opts.c (decode_options): Set flag_strict_overflow if -O2.
13822         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
13823         (TYPE_OVERFLOW_UNDEFINED): Define.
13824         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
13825         Replace all uses.
13826         * tree.h (TYPE_TRAP_SIGNED): Don't define.
13827         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
13828         (fold_negate_expr): Likewise.
13829         (make_range): Likewise.
13830         (extract_muldiv_1): Likewise.
13831         (maybe_canonicalize_comparison): Likewise.
13832         (fold_comparison): Likewise.
13833         (fold_binary): Likewise.
13834         (tree_expr_nonnegative_p): Likewise.
13835         (tree_expr_nonzero_p): Likewise.
13836         * tree-vrp.c (compare_values): Likewise.
13837         (extract_range_from_binary_expr): Likewise.
13838         (extract_range_from_unary_expr): Likewise.
13839         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
13840         Likewise.
13841         (nowrap_type_p): Likewise.
13842         * tree-scalar-evolution.c (simple_iv): Likewise.
13843         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
13844         (build_range_check): Likewise.
13845         (extract_muldiv_1): Likewise.
13846         (fold_comparison): Likewise.
13847         * tree-vrp.c (vrp_int_const_binop): Likewise.
13848         (extract_range_from_unary_expr): Likewise.
13849         * convert.c (convert_to_integer): Likewise.
13850         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
13851         (fold_comparison): Likewise.
13852         (fold_binary): Likewise.
13853         * optabs.c (optab_for_tree_code): Likewise.
13854         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
13855         * simplify-rtx.c (simplify_const_relational_operation): Check
13856         flag_strict_overflow and flag_trapv.
13857         (simplify_const_relational_operation): Likewise.
13858         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
13859         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
13860         -fstrict-overflow.
13861
13862 2007-01-27  Roger Sayle  <roger@eyesopen.com>
13863
13864         * tree.c (tree_fold_gcd): Delete.
13865         * tree.h (tree_fold_gcd): Remove prototype.
13866         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
13867         test whether one constant integer is a multiple of another.  Instead
13868         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
13869         * fold-const.c (multiple_of_p):  We've determined both TOP and
13870         BOTTOM are integer constants so we can call int_const_binop directly
13871         instead of the more generic const_binop.
13872
13873 2007-01-27  Roger Sayle  <roger@eyesopen.com>
13874
13875         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
13876         1*X check that the constant hasn't overflowed, to preserve the
13877         TREE_OVERFLOW bit.
13878         (round_up): Provide an efficient implementation when rouding-up an
13879         INTEGER_CST to a power-of-two.
13880
13881 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13882
13883         * doc/sourcebuild.texi: Add comma for clarity.
13884         * doc/extend.texi: Fix some typos.
13885         * doc/passes.texi: Likewise.
13886         * doc/cppinternals.texi: Likewise.
13887         * doc/c-tree.texi: Likewise.
13888         * doc/tree-ssa.texi: Likewise.
13889         * doc/install.texi: Likewise.
13890
13891 2007-01-27  Jan Hubicka  <jh@suse.cz>
13892
13893         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
13894         (pass_sra): Do not require alias information.
13895         * passes.c (init_optimization_passes): Add SRA
13896
13897 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
13898
13899         * tracer.c (rest_of_handle_tracer): We already cleaned
13900         up the CFG in tracer() so don't do it here again.
13901         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
13902         cleanup_cfg here, either.  And don't call renumber_insns.
13903
13904         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
13905         and BB_HEAD are in the insn stream here.  Instead make sure
13906         that BB_INSN is valid on all insns.  Also, do check here that
13907         there are no pending branch predictions...
13908         (rtl_verify_flow_info): ...instead of doing it here.  Checks
13909         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
13910         here.
13911
13912 2007-01-26  Roger Sayle  <roger@eyesopen.com>
13913
13914         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
13915         function to simplify/factorize operand order canonicalization.
13916         (ix86_fixup_binary_operands): Reorganize using the above function.
13917         (ix86_binary_operator_ok): Likewise.
13918
13919 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
13920
13921         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
13922         file scope from optimize_attrs.
13923         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
13924         up search.
13925         (optimize_attrs): Clear insn_code_values after freeing it.
13926
13927 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
13928
13929         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
13930         a parts.base assignment.
13931
13932 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
13933
13934         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
13935         (compute_subscript_distance, initialize_data_dependence_relation,
13936         finalize_ddr_dependent, analyze_ziv_subscript,
13937         analyze_siv_subscript_cst_affine,
13938         compute_overlap_steps_for_affine_univar,
13939         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
13940         analyze_siv_subscript, analyze_miv_subscript,
13941         analyze_overlapping_iterations, subscript_dependence_tester_1,
13942         compute_self_dependence, free_dependence_relation): Work
13943         with affine_fn instead of chrecs.
13944         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
13945         common_affine_function, affine_function_base,
13946         affine_function_constant_p, affine_fn_op, affine_fn_plus,
13947         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
13948         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
13949         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
13950         (all_chrecs_equal_p): Removed.
13951         * tree-data-ref.h (affine_fn, conflict_function): New types.
13952         (struct subscript): Change type of conflicting_iterations_in_a
13953         and conflicting_iterations_in_b.
13954
13955 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
13956
13957         PR other/30182
13958         * config/pa/pa.h (TARGET_HPUX_11): New.
13959         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
13960         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
13961
13962 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
13963         Richard Guenther  <rguenther@suse.de>
13964
13965         * tree-ssa-structalias.c (solve_graph): Handle case
13966         we merged the variable to another.
13967
13968 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13969
13970         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
13971         functions.
13972
13973         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
13974         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
13975
13976 2007-01-25  DJ Delorie  <dj@redhat.com>
13977
13978         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
13979         allow changes to modes which don't fit in those registers.
13980
13981         * reload1.c (choose_reload_regs): Check for invalid subregs before
13982         computing their locations, not after.
13983
13984 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
13985
13986         PR 25127
13987         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
13988         save Altivec registers in an eh_return function.
13989         (compute_vrsave_mask): Likewise.
13990         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
13991         for saving Altivec registers.
13992         (rs6000_emit_prologue): Don't allocate stack twice in
13993         eh_return function.  Correct expected value of altivec_save_offset
13994         when using save_world.  Describe save of R0 to stack when using
13995         save_world.  Describe stack pointer adjustment when using
13996         save_world.  Remove duplicated eh_return parameter register saving.
13997         Update sp_offset variable after save_world.
13998         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
13999         darwin-world.asm.
14000         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
14001         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
14002         implies Altivec.
14003
14004 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
14005
14006         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
14007
14008 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
14009
14010         PR other/30182
14011         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
14012         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
14013
14014 2007-01-25  Richard Guenther  <rguenther@suse.de>
14015
14016         * doc/invoke.texi (-Wcoverage-mismatch): Document.
14017         * common.opt (-Wcoverage-mismatch): New warning option.
14018         * coverage.c (get_coverage_counts): Ignore coverage mismatch
14019         if -Wcoverage-mismatch is given.
14020
14021 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
14022
14023         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
14024         (ipcp_driver): Change to static definition.
14025         Add dumping of the ifunctions.
14026         (constant_val_insert): Remove unused parameter. Support for SSA.
14027         (ipcp_propagate_const): Support for SSA.
14028         (ipcp_profile_bb_print): Print only analyzed nodes.
14029         (ipcp_replace_map_create): Remove support for Fortran constant
14030         for now.
14031         * ipa-prop.c (ipa_method_modify_stmt,
14032         ipa_callsite_compute_param): Support for SSA.
14033         * ipa-prop.h (ipcp_driver): Remove declaration.
14034         (IS_VALID_TREE_MAP_INDEX): Add define.
14035
14036 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
14037
14038         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
14039
14040 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14041
14042         PR middle-end/30447
14043         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
14044         constant argument to cabs and do it without checking for
14045         -funsafe-math-optimizations.
14046
14047 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
14048
14049         * c-common.h (RID_FIRST_CXX0X): New.
14050         (RID_LAST_CXX0X): New.
14051         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
14052         by -Wall.
14053         * c.opt (Wc++0x-compat): New.
14054         * doc/invoke.texi (-Wc++0x-compat): Document.
14055
14056 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14057
14058         * builtins.c (fold_builtin_carg): New.
14059         (fold_builtin_1): Use it.
14060
14061 2007-01-24  Jan Hubicka  <jh@suse.cz>
14062
14063         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
14064
14065         * ipa-inline.c (initial_insns, max_insns): Delete.
14066         (compute_max_insns): New function.
14067         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
14068         of insns as base for code growth.
14069         (cgraph_decide_inlining): Make initial_insns local; do not compute
14070         max_insns.
14071         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
14072         * doc/invoke.texi (inline-unit-growth): Update docs.
14073
14074 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
14075
14076         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
14077         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
14078         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
14079         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
14080         for CPUs that have PTA_CX16 set.
14081
14082         PR middle-end/27416
14083         * gimplify.c (omp_check_private): New function.
14084         (gimplify_scan_omp_clauses): Use it for
14085         firstprivate/lastprivate/reduction.
14086
14087         PR middle-end/30494
14088         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
14089         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
14090
14091         PR middle-end/30421
14092         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
14093         If lower_lastprivate_clauses emits some statements, append them
14094         to dlist rather than body_p and to body_p append an initializer.
14095         (lower_omp_for): Adjust caller.
14096
14097 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
14098
14099         * target.h (globalize_decl_name): New.
14100         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
14101         * output.h (default_globalize_decl_name): New.
14102         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
14103         globalize_label.
14104         (globalize_decl): Ditto.
14105         (default_globalize_decl_name): New.
14106         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
14107         (ia64_handle_version_id_attribute): New.
14108         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
14109         (ia64_asm_output_external): Use globalize_decl_name instead
14110         of globalize_label.
14111         * doc/extend.texi (version_id): New pragma.
14112         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
14113
14114 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14115
14116         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
14117         _uleb128_t and _Unwind_SWord with _sleb128_t.
14118         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
14119         uw_frame_state_for, uw_update_context_1): Likewise.
14120         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
14121         * unwind-pe.h (read_uleb128, read_sleb128,
14122         read_encoded_value_with_base): Likewise.
14123         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
14124
14125 2007-01-24  Richard Guenther  <rguenther@suse.de>
14126
14127         * builtins.c (expand_builtin_cexpi): Get the fndecl
14128         for cexp in the correct way.
14129
14130 2007-01-24  Jan Hubicka  <jh@suse.cz>
14131
14132         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
14133
14134 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14135
14136         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
14137         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
14138         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
14139         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
14140         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
14141         __SIZEOF_PTRDIFF_T__.
14142         * doc/cpp.texi: Documentation for the new builtin macros added.
14143
14144 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
14145
14146         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
14147         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
14148         instead of operands[2] to avoid access past the end of array.
14149
14150 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
14151
14152         * reload1.c (emit_reload_insns): Pass the reload register
14153         for a non-spill output reload through forget_old_reloads_1.
14154
14155 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
14156
14157         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
14158         _SOFT_DOUBLE if doubles use software floating-point.
14159         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
14160         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
14161         * config/rs6000/darwin-ldouble.c: Also compile functions for
14162         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
14163         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
14164         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
14165         commented-out long double override.
14166         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
14167         * config/rs6000/eabispe.h: Likewise.
14168         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
14169         long double for non-SPE.
14170         (rs6000_handle_option): Likewise.
14171         (invalid_e500_subreg): Disallow more subregs involding DImode,
14172         DFmode, TImode or TFmode.
14173         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
14174         E500 double.
14175         (legitimate_lo_sum_address_p): Also check for TFmode for E500
14176         double.
14177         (rs6000_legitimize_address): Also handle TFmode for E500 double.
14178         (rs6000_legitimize_reload_address): Also handle TFmode for E500
14179         double.
14180         (rs6000_legitimate_address): Also check for TFmode for E500
14181         double.
14182         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
14183         (spe_build_register_parallel): Handle TFmode and TCmode.
14184         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
14185         double.
14186         (function_arg): Handle TFmode and TCmode for E500 double.
14187         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
14188         in general.
14189         (print_operand): Handle TFmode and TImode for %y.
14190         (rs6000_generate_compare): Handle TFmode comparisons for E500
14191         double.
14192         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
14193         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
14194         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
14195         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
14196         TFmode for E500 double.
14197         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
14198         (floatsidf2): Enable for E500 double.
14199         (movtf_softfloat): Use rs6000_nonimmediate_operand.
14200         (extenddftf2): Change to extenddftf2_fprs.
14201         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
14202         depending on TARGET_E500_DOUBLE.
14203         (extendsftf2): Enable for E500 double.
14204         (trunctfdf2): Enable for E500 double.
14205         (trunctfsf2): Change to trunctfsf2_fprs.
14206         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
14207         depending on TARGET_E500_DOUBLE.
14208         (floatsitf2): Enable for E500 double.
14209         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
14210         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
14211         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
14212         (negtf2): Change to negtf2_internal.
14213         (negtf2): New expander.
14214         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
14215         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
14216         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
14217         (movdi_internal32): Use rs6000_nonimmediate_operand.
14218         (unnamed splitter): Likewise.
14219         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
14220         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
14221         (SPE64TF, DITI): New mode macros.
14222         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
14223         modes.
14224         (frob_tf_ti): New.
14225         (frob_<mode>_di_2): New.
14226         (frob_tf_di_8_2): New.
14227         (frob_di_df): Change to frob_di_<mode>; allow more modes.
14228         (frob_ti_tf): New.
14229         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
14230         more modes.
14231         (frob_ti_<mode>_8_2): New.
14232         (frob_ti_tf_2): New.
14233         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
14234         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
14235         TFmode.
14236         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
14237         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
14238         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
14239         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
14240         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
14241         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
14242         tsttflt_gp): New.
14243
14244 2007-01-23  Ian Lance Taylor  <iant@google.com>
14245
14246         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
14247         insn-*.o first.
14248         (OBJS-archive): Reformat, alphabetize.
14249         (OBJS): Change out_object_file to OBJS-md.
14250
14251 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
14252
14253         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
14254         JUMP_P and CALL_P predicates where applicable.
14255         * config/i386/i386.c: Ditto.
14256         * config/i386/i386.md: Ditto.
14257         * config/i386/mmx.md: Ditto.
14258         * config/i386/predicates.md: Ditto.
14259
14260 2007-01-22  Andreas Schwab  <schwab@suse.de>
14261
14262         * config/m68k/m68k.h: Fix comment.
14263
14264 2007-01-22  Jan Hubicka  <jh@suse.cz>
14265
14266         * passes.c (init_optimization_passes): Do not rerun
14267         pass_early_warn_uninitialized.
14268
14269 2007-01-22  Richard Guenther  <rguenther@suse.de>
14270
14271         PR tree-optimization/30038
14272         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
14273         function.
14274         (execute_cse_sincos_1): Likewise.
14275         (execute_cse_sincos): Likewise.
14276         (gate_cse_sincos): Likewise.
14277         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
14278         the cexpi() canonicalization of sincos().
14279         * tree-pass.h (pass_cse_sincos): Declare.
14280         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
14281
14282 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
14283
14284         PR rtl-optimization/29329
14285         * combine.c (replaced_rhs_insn): Rename to i2mod.
14286         (replaced_rhs_value): Rename to i2mod_new_rhs.
14287         (i2mod_old_rhs): New global variable.
14288         (combine_instructions): Adjust for above change.  Save a copy of
14289         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
14290         note are substituted in the second instruction.
14291         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
14292         ditch the note if it pertains to the second eliminated register
14293         and this register is mentioned in i2mod_old_rhs.
14294
14295         Revert:
14296         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
14297
14298         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
14299         the insn to which the note was originally attached.
14300
14301 2007-01-21  Jan Hubicka  <jh@suse.cz>
14302
14303         * ipa-inline.c (inlining_mode): Comment, move up.
14304         (cgraph_decide_inlining_incrementally): Do not perform inlining
14305         itself; fix handling of flattening of self recursive functions.
14306         (cgraph_find_cycles): Remove.
14307         (cgraph_flatten_node): Remove.
14308         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
14309         (try_inline): New function.
14310         (cgraph_early_inlining): Update call of
14311         cgraph_decide_inlining_incrementally.  Apply inlining here.
14312         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
14313
14314 2007-01-21  Dirk Mueller  <dmueller@suse.de>
14315
14316         PR bootstrap/30511
14317         * tree-vrp.c (check_array_bounds): do not warn
14318         about ADDR_EXPR's of ARRAY_REF's which are immediately
14319         used in binary expressions.
14320
14321 2007-01-21  Ira Rosen  <irar@il.ibm.com>
14322
14323         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
14324         read_write_dep and macros for its access.
14325         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
14326         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
14327         argument, call vect_check_interleaving for every independent pair of
14328         data-refs. Mark loads that access the same memory location as a store
14329         in the loop.
14330         (vect_check_dependences): Remove.
14331         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
14332         call, fix the call to vect_analyze_data_ref_dependence.
14333         (vect_analyze_data_ref_access): For statements that access the same
14334         data-ref, check that they are not stores; for loads, check that there
14335         is no store that access the same location.
14336
14337 2007-01-20  Roger Sayle  <roger@eyesopen.com>
14338             Joseph Myers  <joseph@codesourcery.com>
14339
14340         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
14341         (-fdump-rtl-stack): Likewise.
14342         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
14343         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
14344         (-mpt-fixed): Use @minus{} for minus sign.
14345         (Using Precompiled Headers): Fix under/overfull hbox.
14346
14347 2007-01-20  Jan Hubicka  <jh@suse.cz>
14348
14349         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
14350         place within annotation.
14351
14352 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14353
14354         * pa.c (output_move_double): Change array size of xoperands to 4.
14355
14356 2007-01-20  Jan Hubicka  <jh@suse.cz>
14357
14358         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
14359         as temporary.
14360
14361 2007-01-19  Ian Lance Taylor  <iant@google.com>
14362
14363         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
14364         constant to unsigned HOST_WIDE_INT before negating.
14365
14366 2007-01-19  Ian Lance Taylor  <iant@google.com>
14367
14368         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
14369         to unsigned.
14370         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
14371         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
14372         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
14373         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
14374         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
14375         (realloc_vdef, realloc_vuse): Change second parameter to
14376         unsigned.
14377         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
14378         fields to unsigned.
14379         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
14380         unsigned. Change x and lim locals to unsigned.
14381         (realloc_vdef, realloc_vuse): Change num_elem parameter to
14382         unsigned.
14383         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
14384         (copy_virtual_operands): Change i and n locals to unsigned.
14385
14386 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14387
14388         PR middle-end/29335
14389         * builtins.c (fold_builtin_1): Handle builtin fdim.
14390
14391 2007-01-20  Jan Hubicka  <jh@suse.cz>
14392
14393         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
14394         * tree-ssa-structalias.c (compute_points_to_sets): Do call
14395         init_alias_heapvars.
14396         (init_alias_heapvars): Initialize only when not already initialized.
14397         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
14398
14399 2007-01-19  Roger Sayle  <roger@eyesopen.com>
14400
14401         * common.opt (fsigned-zeros): New command line option.
14402         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
14403         of flag_unsafe_math_optimizations.
14404         * opts.c (set_fast_math_flags): The -ffast-math command line option
14405         implies -fno-signed-zeros.
14406         (fast_math_flags_set_p): Likewise.
14407
14408         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
14409         the documentation of -ffast-math appropriately.  Wrap long lines.
14410
14411 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
14412
14413         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
14414         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
14415
14416 2007-01-19  Tomas Bily  <tbily@suse.cz>
14417
14418         * cgraphunit.c (cgraph_finalize_function): Updating of pid
14419         * tree-profile.c:
14420         (tree_init_ic_make_global_vars): New function
14421         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
14422         (tree_gen_ic_profiler): New function
14423         (tree_gen_ic_func_profiler): New function
14424         (tree_profiling): Added calling of tree_gen_ic_func_profiler
14425         (tree_profile_hooks): Added hook for indirec/virtual calls
14426         * value-prof.c (tree_find_values_to_profile): New case for
14427         indirect calls
14428         (tree_values_to_profile): Call for determining indirect/virtual
14429         counters
14430         (tree_indirect_call_to_profile): New function
14431         (tree_ic_transform): New function
14432         (tree_ic): New function
14433         (find_func_by_pid): New function
14434         (init_pid_map): New function
14435         (tree_value_profile_transformations): Added check for
14436         indirect/virtual call transformation
14437         * value-prof.h (enum hist_type): New counter type for
14438         indirect/virtual calls
14439         (profile_hooks): Added new hook for profiling indirect/virtual
14440         calls
14441         * profile.c (instrument_values): New case for indirect/virtual
14442         call added
14443         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
14444         (GCOV_COUNTER_V_INDIR): New counter type
14445         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
14446         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
14447         call added
14448         * cgraph.c: Definition of cgraph_max_pid
14449         (cgraph_create_node): Default init of pid attribute
14450         * cgraph.h: Declaration of cgraph_max_pid
14451         (struct cgraph_node): Added pid attribute
14452         * libgcov.c (__gcov_indirect_call_profiler): New function
14453         (__gcov_one_value_profiler_body): New function
14454         (__gcov_one_value_profiler): Body was moved to
14455         __gcov_one_value_profiler_body and calls it
14456
14457 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
14458
14459         * doc/gty.texi (Options): Document the mark_hook option to GTY.
14460         * gengtype.c (write_types_data, write_func_for_structure,
14461         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
14462         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
14463         (walk_type, write_func_for_structure): Generate the mark_hook if
14464         needed.
14465
14466 2007-01-19  Jan Hubicka  <jh@suse.cz>
14467
14468         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
14469         'early' argument take inlining mode argument specifying whether to
14470         inline for size/speeed or all functions; add support for flattening;
14471         improve dumpting.
14472         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
14473
14474 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14475
14476         PR c++/17947
14477         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
14478         the name of the declared identifier.
14479
14480 2007-01-19  Dirk Mueller  <dmueller@suse.de>
14481
14482         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
14483         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
14484         duplicate evaluation.
14485
14486 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
14487
14488         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
14489         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
14490         to XFMode, use acosxf2 and truncate result to requested mode.
14491         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
14492         (asin<mode>2): Similarly, with asin expanders.
14493         (*fscalexf4_i387): Rename from *fscalexf4.
14494         (expNcorexf3): New expander.
14495         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
14496         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
14497         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
14498         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
14499         patterns for SSE math.
14500         (exp10<mode>2): Similarly, with exp10 expanders.
14501         (exp2<mode>2): Similarly, with exp2 expanders.
14502         (expm1<mode>2): Similarly, with expm1 expanders.
14503         (ldexp<mode>3): Similarly, with ldexp expanders.
14504         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
14505         Use gen_truncxf<mode>2_i387_noop to truncate result.
14506
14507 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14508
14509         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
14510         for ColdFire targets.
14511
14512 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
14513             Richard Sandiford  <richard@codesourcery.com>
14514
14515         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
14516         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
14517         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
14518         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
14519         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
14520         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
14521
14522 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14523
14524         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
14525         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
14526         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
14527         (*adddi_dilshr32_cf): New pattern.
14528         (adddi3, subdi3): Remove first alternatives.
14529
14530 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14531
14532         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
14533         implemented using move.l, do not use its cc result for floating-point
14534         comparisons.
14535
14536 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14537
14538         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
14539         from accepting 's' constraints if flag_pic.
14540
14541 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14542
14543         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
14544         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
14545         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
14546         condition from TARGET_68881 to TARGET_HARD_FLOAT.
14547
14548 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
14549
14550         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
14551         ColdFire alternatives.
14552         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
14553         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
14554         architectures that support ff1 instruction.
14555
14556 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14557             Julian Brown  <julian@codesourcery.com>
14558
14559         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
14560         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
14561         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
14562         Add commentary.
14563
14564 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14565
14566         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
14567         and return a bool.
14568         (output_move_const_into_data_reg, output_move_simode_const): Delete.
14569         * config/m68k/m68k.c (const_method, const_int_cost): Take a
14570         HOST_WIDE_INT instead of an rtx.
14571         (m68k_rtx_costs): Update call accordingly.
14572         (output_move_const_into_data_reg): Likewise.  Fix formatting.
14573         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
14574         Return a bool.
14575         (output_move_simode_const): Update calls after above changes.
14576         Rework to use automatic variables and predicates like MEM_P.
14577         * config/m68k/m68k.md (pushexthisi_const): Update call to
14578         valid_mov3q_const.
14579
14580 2007-01-19  Dirk Mueller  <dmueller@suse.de>
14581
14582         * tree-ssa-alias.c (perform_var_substitution): Fix typo
14583         in dump_flags test.
14584
14585 2007-01-19  Richard Guenther  <rguenther@suse.de>
14586
14587         * builtins.c (expand_builtin_cexpi): Fall back to expanding
14588         via cexp in case sincos is not available.
14589
14590 2007-01-19  Richard Guenther  <rguenther@suse.de>
14591
14592         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
14593         * defaults.h (TARGET_HAS_SINCOS): Default to off.
14594         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
14595         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
14596         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
14597         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
14598         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
14599         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
14600
14601 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
14602
14603         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
14604         New insn patterns.
14605         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
14606         (atan2xf3): Directly generate RTL pattern.
14607         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
14608         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
14609         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14610         disable patterns for SSE math.
14611         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
14612         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
14613         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14614         disable patterns for SSE math.
14615
14616 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
14617
14618         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
14619
14620 2007-01-18  Roger Sayle  <roger@eyesopen.com>
14621
14622         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
14623         VIEW_CONVERT_EXPR to the same type as it's operand.
14624
14625 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
14626
14627         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
14628         configured for long double 128.
14629
14630 2007-01-18  Mike Stump  <mrs@apple.com>
14631
14632         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
14633         error.
14634
14635 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
14636
14637         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
14638         type correct.
14639
14640 2007-01-18  Jan Hubicka  <jh@suse.cz>
14641
14642         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
14643         greater than NUM_VOP_FREE_BUCKETS.
14644
14645 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
14646
14647         * tree-ssa-structalias.c: Update comments.
14648         (ptabitmap_obstack): Removed.
14649         (pta_obstack): New.
14650         (oldpta_obstack): Ditto.
14651         (stats): Add a few members.
14652         (struct variable_info): Remove node, complex, address_taken, and
14653         indirect_target members. Add oldsolution member.
14654         (new_var_info): Do not initialize removed members.
14655         (constraint_expr_type): Remove INCLUDES.
14656         (constraint_graph): Add size, implicit_preds, rep,
14657         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
14658         (FIRST_REF_NODE): New macro.
14659         (LAST_REF_NODE): Ditto.
14660         (FIRST_ADDR_NODE): Ditto.
14661         (find): New function.
14662         (unite): Ditto.
14663         (dump_constraint): Do not handle INCLUDES.
14664         (insert_into_complex): Do not insert duplicate constraints.
14665         (condense_varmap_nodes): Renamed and rewritten into ...
14666         (merge_node_constraints): This. Also fix bug in handling of
14667         offseted copy constraints.
14668         (clear_edges_for_node): No longer need to deal with preds at all,
14669         or removing associated preds/succs.
14670         (merge_graph_nodes): Deal with indirect_cycles.
14671         Don't deal with predecessors.
14672         (add_implicit_graph_edge): New function.
14673         (add_pred_graph_edge): Ditto.
14674         (add_graph_edge): Don't deal with predecessors.
14675         (build_constraint_graph): Removed.
14676         (build_pred_graph): New function.
14677         (build_succ_graph): Ditto.
14678         (struct scc_info): Removed in_component. Added roots, dfs, and
14679         node_mapping. Remove visited_index, unification_queue.
14680         (scc_visit): Deal with union-find we do now.
14681         Deal with cycles with REF nodes.
14682         (collapse_nodes): Renamed and rewritten to ...
14683         (unify_nodes): This.
14684         (process_unification_queue): Removed.
14685         (topo_visit): Cleanup
14686         (do_da_constraint): Use find.
14687         (do_sd_constraint): Ditto.
14688         (do_ds_constraint): Ditto.
14689         (do_complex_constraint): Ditto.
14690         (init_scc_info): Update for removed and added members.
14691         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
14692         (find_indirect_cycles): This.
14693         (equivalence_class): New variable.
14694         (label_visit): New function.
14695         (perform_variable_substitution): Rewritten.
14696         (free_var_substitution_info): New function.
14697         (find_equivalent_node): Ditto.
14698         (move_complex_constraints): Ditto.
14699         (eliminate_indirect_cycles): Ditto.
14700         (solve_graph): Only propagate changed bits.
14701         Use indirect cycle elimination.
14702         Use find.
14703         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
14704         (tree_id_eq): Renamed to ...
14705         (tree_vi_eq): This. Update for member change
14706         (insert_id_for_tree): Renamed and rewritten to ...
14707         (insert_vi_for_tree): This.
14708         (lookup_id_for_tree): Renamed and rewritten to ...
14709         (lookup_vi_for_tree): This.
14710         (get_id_for_tree): Renamed and rewritten to ...
14711         (get_vi_for_tree): Ditto.
14712         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
14713         (process_constraint): Don't handle INCLUDES.
14714         Remove special ADDRESSOF case.
14715         (find_func_aliases): Rewrite to use vi functions instead of id
14716         ones.
14717         (create_function_info_for): Ditto.
14718         (create_variable_info_for): Ditto.
14719         (intra_create_variable_infos): Ditto.
14720         (merge_smts_into): Ditto.
14721         (find_what_p_points_to): Ditto.
14722         (init_base_vars): Ditto.
14723         (init_alias_vars): Ditto.
14724         (remove_preds_and_fake_succs): New function.
14725         (dump_sa_points_to_info): Dump new stats.
14726         (dump_solution_for_var): Use find.
14727         (set_used_smts): Fix formatting.
14728         (compute_points_to_sets): Updated for new functions.
14729         (ipa_pta_execute): Ditto.
14730
14731 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14732             Richard Sandiford  <richard@codesourcery.com>
14733
14734         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
14735         parallels.
14736         * calls.c (expand_call): If the return value is a PARALLEL,
14737         extract its first member.
14738         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
14739         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
14740         use FUNCTION_EXTRA_EPILOGUE.
14741         (m68k_function_value): Return a PARALLEL if the return value
14742         is of a pointer type.
14743         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
14744         (FUNCTION_EXTRA_EPILOGUE): Remove.
14745         * config/m68k/m68k.md (D0_REG): New constant.
14746
14747 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14748
14749         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
14750         output a NOP for empty epilogues.
14751
14752 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14753
14754         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
14755         before function.  Extend register save check to include all
14756         registers, not just integer ones.
14757
14758 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14759
14760         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
14761         (m68k_use_return_insn): ...this.
14762         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
14763         * config/m68k/m68k.c (use_return_insn): Rename to...
14764         (m68k_use_return_insn): ...this.
14765         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
14766         of USE_RETURN_INSN.
14767
14768 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14769
14770         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
14771         nearest even, fix denormal rounding overflow.
14772
14773 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14774
14775         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
14776         f%$smove and f%$move.
14777         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
14778         (extendsfdf2_cf): Use fdmove instead of f%&move.
14779         (truncdfsf2_cf): Use fsmove instead of f%$smove.
14780         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
14781
14782 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14783
14784         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
14785         GPR<-GPR moves.
14786
14787 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14788
14789         * real.h (real_format): Add a canonical_nan_lsbs_set field.
14790         (coldfire_single_format): Declare.
14791         (coldfire_double_format): Likewise.
14792         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
14793         of qnan_msb_set to determine the lower bits of a canonical
14794         NaN significand.
14795         (encode_ieee_double): Likewise.
14796         (encode_ieee_quad): Likewise.
14797         (ieee_single_format): Initialize canonical_nan_lsbs_set.
14798         (mips_single_format): Likewise.
14799         (ieee_double_format): Likewise.
14800         (mips_double_format): Likewise.
14801         (ieee_extended_motorola_format): Likewise.
14802         (ieee_extended_intel_96_format): Likewise.
14803         (ieee_extended_intel_128_format): Likewise.
14804         (ieee_extended_intel_96_round_53_format): Likewise.
14805         (ibm_extended_format): Likewise.
14806         (mips_extended_format): Likewise.
14807         (ieee_quad_format): Likewise.
14808         (mips_quad_format): Likewise.
14809         (vax_f_format): Likewise.
14810         (vax_d_format): Likewise.
14811         (vax_g_format): Likewise.
14812         (i370_single_format): Likewise.
14813         (i370_double_format): Likewise.
14814         (decimal_single_format): Likewise.
14815         (decimal_double_format): Likewise.
14816         (decimal_quad_format): Likewise.
14817         (c4x_single_format): Likewise.
14818         (c4x_extended_format): Likewise.
14819         (real_internal_format): Likewise.
14820         (coldfire_single_format): New real_format.
14821         (coldfire_double_format): Likewise.
14822         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
14823         canonical_nan_lsbs_set.
14824         (pdp11_d_format): Likewise.
14825         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
14826         if TARGET_COLDFIRE_CPU.
14827
14828 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14829
14830         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
14831         (output_call, m68k_legitimize_call_address): Declare.
14832         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
14833         parenthesees.  Add support for a 'W' constraint.
14834         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
14835         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
14836         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
14837         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
14838         variables.
14839         (override_options): Initialize them.  Do not set flag_no_function_cse
14840         for TARGET_ID_SHARED_LIBRARY.
14841         (m68k_output_pic_call): Delete.
14842         (m68k_legitimize_call_address): New function.
14843         (print_operand): Remove the %o prefix.  Handle the %p prefix.
14844         (output_call): New function.
14845         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
14846         target address from the GOT if symbolic jumps are not allowed.
14847         * config/m68k/m68k.md (call, general_operand): Do not set
14848         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
14849         Merge separate flag_pic and !flag_pic define_insns into...
14850         (*call, *call_value): ...these new patterns.  Match the address
14851         rather than the containing MEM and require it to be a call_operand.
14852         Use output_call to generate the asm template.
14853         * config/m68k/predicates.md (const_call_operand): New predicate.
14854         (call_operand): Likewise.
14855
14856 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14857
14858         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
14859         (STACK_GROWS_DOWNWARD): Define to 1.
14860         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
14861         comments, emphasizing that these values are only defaults.
14862         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
14863         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
14864
14865 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14866
14867         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
14868
14869 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14870             Richard Sandiford  <richard@codesourcery.com>
14871
14872         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
14873         (FP_REGNO_P): New macros.
14874         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
14875         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
14876         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
14877         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
14878
14879 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14880
14881         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
14882         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
14883         to $tmake_file.
14884         * config/m68k/t-floatlib: New file, extracting common code from...
14885         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
14886         * config/m68k/t-uclinux: Here.
14887         * config/m68k/fpgnulib.c: Do not compile extendeed precision
14888         routines on ColdFire targets.
14889
14890 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14891
14892         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
14893         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
14894         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
14895         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
14896         explicitly set MOTOROLA to 1.
14897         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
14898
14899 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14900             Nathan Sidwell  <nathan@codesourcery.com>
14901
14902         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
14903         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
14904         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
14905         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
14906         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
14907         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
14908         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
14909         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
14910         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
14911         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
14912         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
14913         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
14914         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
14915         (DBX_REGISTER_NUMBER): Delete.
14916         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
14917         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
14918         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
14919
14920 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14921
14922         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
14923         * config/flat.h: New file.
14924         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
14925         OBJECT_FORMAT_FLAT.
14926         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
14927         indirect references for -msep-data or -mid-shared-library.
14928         Do not use PC-relative code addresses either.
14929         * config/m68k/m68k.c (override_options): Restrict -fPIC error
14930         to -mpcrel.
14931         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
14932         for shared libraries and crt1.o for executables.  Use crti.o and
14933         crtbegin.o.
14934         (ENDFILE_SPEC): Use crtend.o and crtn.o.
14935         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
14936         Do not add -elf2flt or -shared-lib-id options here.
14937         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
14938         Pass -shared-lib-id if -mid-shared-library, taking the library
14939         identifier from -mshared-library-id if given, otherwise
14940         defaulting to 0.
14941         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
14942         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
14943         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
14944         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
14945         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
14946         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
14947         and crtend.o.
14948         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
14949         jump sequence for ISA A and ISA A+.
14950         (PICJUMP): Likewise.
14951
14952 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14953
14954         * config.gcc (m68k-*-uclinux*): Base the port on the common
14955         and m68k GNU/Linux files rather than on the generic ELF ones.
14956         * config/m68k/uclinux.h (TARGET_VERSION): Override.
14957         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
14958
14959 2007-01-18  Julian Brown  <julian@codesourcery.com>
14960             Richard Sandiford  <richard@codesourcery.com>
14961
14962         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
14963         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
14964         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
14965         before redefining.
14966         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
14967         80 unconditionally.
14968         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
14969
14970 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14971
14972         * doc/install.texi: Document m68k-uclinuxoldabi.
14973         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
14974         * config/m68k/uclinux-oldabi.h: New file, copied from
14975         config/m68k/uclinux.h.
14976
14977 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
14978
14979         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
14980         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
14981         (m32r_compute_frame_size): Use unsigned for regno.
14982         (m32r_reload_lr): Use gen_frame_mem.
14983         (pop): New.
14984         (m32r_output_function_epilogue): Don't output the function epilogue
14985         textually here.
14986         (m32r_expand_epilogue): New.
14987         (direct_return): Return false if the function has the interrupt
14988         attribute.
14989         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
14990         * config/m32r/m32r.md (epilogue): New expander.
14991         (return_lr, return_rte): New insns.
14992         (return): Make it expander.
14993         (return_normal): New expander.
14994
14995 2007-01-18  Josh Conner  <jconner@apple.com>
14996
14997         PR target/30485
14998         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
14999         support for UNLE, UNLT, UNGE, and UNGT.
15000
15001 2007-01-18  Jan Hubicka  <jh@suse.cz>
15002
15003         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
15004         * tree-tailcall (add_virtual_phis): Likewise.
15005         (optimize_tail_call): Return TODOs.
15006         (execute_tail_calls): Return TODOs.
15007         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
15008         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
15009         changed.
15010         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
15011         Cleanup cfg using TODO.
15012         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
15013         * passes.c (execute_function_todo): When cleanup did something, remove
15014         unused locals.
15015         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
15016         (make_edges): Don't cleanup_cfg.
15017
15018 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
15019
15020         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
15021         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
15022         operate on the top of stack.
15023         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
15024         register handling of instructions that output to the second
15025         stack slot.
15026         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
15027         (move_for_stack_reg): Special-case check for dead destination
15028         stack slot for constant load of 1.0 inside UNSPEC_TAN.
15029
15030         * config/i386/i386.md (UNSPEC_TAN): New constant.
15031         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
15032         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
15033         to correctly model move of constant 1.0 to top stack slot.
15034         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
15035         (unnamed peephole2 pattern): Remove corresponding peephole2
15036         pattern that optimizes tan insn and loading of constant 1.0.
15037         (tanxf2): Use fptanxf4_i387.
15038         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
15039         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
15040         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15041         disable patterns for SSE math.
15042         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
15043         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
15044
15045 2007-01-18  Dirk Mueller  <dmueller@suse.de>
15046             Richard Guenther <rguenther@suse.de>
15047
15048         PR diagnostic/8268
15049         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
15050         * common.opt (Warray-bounds): Add new warning option.
15051         * c-opts.c (c_common_handle_option): Define -Warray-bounds
15052         if -Wall is given.
15053         * Makefile.in: make tree-vrp.o depend on toplev.h
15054         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
15055         is enabled.
15056         (check_array_refs, check_array_bounds, check_array_ref): New.
15057
15058 2007-01-18  Jan Hubicka  <jh@suse.cz>
15059
15060         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
15061         (execute_ssa_ccp): Return flags conditionally.
15062         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
15063         changed.
15064         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
15065
15066 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
15067
15068         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
15069         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
15070
15071         * Makefile.c (GTFILES): Add cfglayout.h.
15072         * gengtype.c (open_base_files): Likewise.
15073         * cfglayout.c (cfg_layout_function_footer,
15074         cfg_layout_function_header) Reindent to make gengtype happy.
15075         * cfglayout.h (cfg_layout_function_footer,
15076         cfg_layout_function_header): Add GTY(()) marker.
15077
15078         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
15079
15080 2007-01-18  Ben Elliston  <bje@au.ibm.com>
15081
15082         * genautomata.c (write_automata): Include xstrerror output in the
15083         error message if writing the DFA description file fails.
15084
15085 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
15086
15087         * config/mips/mips-protos.h (mips_output_external): Make it
15088         return void.
15089         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
15090         * config/mips/mips.c (irix_output_external_libcall): Likewise.
15091         (extern_list): Likewise.
15092         (extern_head): Likewise.
15093         (TARGET_ASM_FILE_END): Likewise.
15094         (mips_file_end): Likewise.
15095         (mips_output_external): Rewritten.
15096
15097 2007-01-18  Ben Elliston  <bje@au.ibm.com>
15098
15099         * genpreds.c (write_insn_preds_c): Only write out the function
15100         body for regclass_for_constraint if we have register constraints.
15101
15102 2007-01-17  Tom Tromey  <tromey@redhat.com>
15103
15104         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
15105         * doc/install.texi (Testing): Use sourceware.org.
15106         (Binaries): Likewise.
15107         (Specific): Likewise.
15108         * doc/contrib.texi (Contributors): Use sourceware.org.
15109
15110 2007-01-17  Anatoly Sokolov <aesok@post.ru>
15111
15112         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
15113         (AVR_ENHANCED): Rename to ...
15114         (AVR_HAVE_MUL): ... new.
15115         (avr_enhanced_p): Rename to ...
15116         (avr_have_mul_p): ... new.
15117         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
15118         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
15119         * config/avr/avr.c (avr_enhanced_p): Rename to ...
15120         (avr_have_mul_p): ... new.
15121         (base_arch_s): Rename 'enhanced' to 'have_mul'.
15122         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
15123         'avr_enhanced_p' and 'enhanced'.
15124         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
15125         AVR_HAVE_MUL instead of AVR_ENHANCED.
15126         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
15127         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
15128         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
15129         instead of AVR_ENHANCED.
15130         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
15131         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
15132         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
15133
15134 2007-01-17  Ian Lance Taylor  <iant@google.com>
15135
15136         * vec.h (VEC_reserve_exact): Define.
15137         (vec_gc_p_reserve_exact): Declare.
15138         (vec_gc_o_reserve_exact): Declare.
15139         (vec_heap_p_reserve_exact): Declare.
15140         (vec_heap_o_reserve_exact): Declare.
15141         (VEC_OP (T,A,reserve_exact)): New static inline function, three
15142         versions.
15143         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
15144         negative parameter.
15145         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
15146         (VEC_OP (T,A,copy)) [all versions]: Likewise.
15147         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
15148         * vec.c (calculate_allocation): Add exact parameter.  Change all
15149         callers.
15150         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
15151         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
15152         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
15153         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
15154         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
15155         (vec_heap_p_reserve_exact): New function.
15156         (vec_heap_o_reserve_exact): New function.
15157
15158 2007-01-17  Jan Hubicka  <jh@suse.cz>
15159
15160         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
15161
15162 2007-01-17  Eric Christopher  <echristo@apple.com>
15163
15164         * config.gcc: Support core2 processor.
15165
15166 2007-01-16  Jan Hubicka  <jh@suse.cz>
15167
15168         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
15169         the names, just unlink the chain so we don't crash on dangling pointers
15170         to dead SSA names.
15171
15172 2007-01-16  Jan Hubicka  <jh@suse.cz>
15173
15174         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
15175         * tree-pass.h: Reorder to make IPA passes appear toegher.
15176         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
15177         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
15178         parameters, do not call early inliner.
15179         * ipa-inline.c: Update comments.  Include tree-flow.h
15180         (cgraph_decide_inlining): Do not compute inlining parameters.
15181         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
15182         be called with function context set up.
15183         (pass_ipa_inline): Remove unreachable functions before pass.
15184         (cgraph_early_inlining): Simplify assuming to be called from the
15185         PM as local pass.
15186         (pass_early_inline): New pass.
15187         (cgraph_gate_ipa_early_inlining): New gate.
15188         (pass_ipa_early_inline): Turn into simple wrapper.
15189         (compute_inline_parameters): New function.
15190         (gate_inline_passes): New gate.
15191         (pass_inline_parameters): New pass.
15192         (apply_inline): Move here from tree-optimize.c
15193         (pass_apply_inline): New pass.
15194         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
15195         transforming.
15196         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
15197         doing them by hand.
15198         (tree_function_versioning): Do not allocate dummy struct function.
15199         * tree-inline.h (optimize_inline_calls): Update prototype.
15200         * tree-optimize.c (execute_fixup_cfg): Export.
15201         (pass_fixup_cfg): Remove
15202         (tree_rest_of_compilation): Do not apply inlines.
15203         * tree-flow.h (execute_fixup_cfg): Declare.
15204         * Makefile.in (gt-passes.c): New.
15205         * passes.c: Include gt-passes.h
15206         (init_optimization_passes): New passes.
15207         (nnodes, order): New static vars.
15208         (do_per_function_toporder): New function.
15209         (execute_one_pass): Dump current pass here.
15210         (execute_ipa_pass_list): Don't dump current pass here.
15211
15212 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
15213
15214         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
15215         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
15216
15217 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
15218
15219         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
15220         (strong_alias): Define.
15221         (__gcc_qmul): Provide non-FMA for soft-float.
15222         (__gcc_qdiv): Same.
15223         (__gcc_qneg): New.
15224         (__gcc_qeq): New.
15225         (__gcc_qle): New.
15226         (__gcc_qge): New.
15227         (__gcc_qunord): New.
15228         (__gcc_stoq): New.
15229         (__gcc_dtoq): New.
15230         (__gcc_qtos): New.
15231         (__gcc_qtod): New.
15232         (__gcc_qtoi): New.
15233         (__gcc_qtou): New.
15234         (__gcc_itoq): New.
15235         (__gcc_utoq): New.
15236         (fmsub): New.
15237         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
15238         soft-float functions.
15239         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
15240         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
15241         about long double soft float.
15242
15243 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
15244             Tehila Meyzels  <tehila@il.ibm.com>
15245
15246         * tree-vectorizer.h (is_pattern_stmt_p): New.
15247         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
15248         formatting (tabs instead of spaces). Cleanup and clarify setting
15249         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
15250         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
15251         (vectorizable_type_demotion): Check that types are integral.
15252         (vectorizable_type_promotion): Likewise.
15253         (vectorizable_store): Fix typo.  Eliminate new-line at end of
15254         comments.
15255
15256 2007-01-16  Jan Hubicka  <jh@suse.cz>
15257
15258         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
15259         cgraph edges too.
15260
15261 2007-01-15  Eric Christopher  <echristo@apple.com>
15262
15263         * ifcvt.c: Include vec.h, vecprim.h.
15264         (check_cond_move_block): New argument regs.
15265         Reorganize. Add registers used to regs.
15266         (cond_move_process_if_block): Use regs set above as
15267         loop bounds.
15268
15269 2007-01-15  Eric Christopher  <echristo@apple.com>
15270
15271         * config/darwin.h: Update copyright.
15272         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
15273         (LINK_COMMAND_SPEC): Add -u.
15274         (LINK_SPEC): Fix umbrella for above.
15275
15276 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
15277
15278         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
15279         glibc CVS.
15280
15281 2007-01-15  Tom Tromey  <tromey@redhat.com>
15282
15283         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
15284         * doc/install.texi (Testing): Don't mention jacks.
15285         (Configuration): Document --enable-java-maintainer-mode.  Move
15286         --with-java-home to libgcj-specific section.  Document
15287         --with-ecj-jar.
15288         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
15289
15290 2007-01-15  Jan Hubicka  <jh@suse.cz>
15291
15292         * tree-ssa-dce.c (DCE_TODOs): New.
15293         (propagate_necessity): Return if something changed.
15294         (eliminate_unnecessary_stmts): Likewise.
15295         (perform_tree_ssa_dce): Return TODO flags when needed.
15296         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
15297
15298 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
15299
15300         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
15301         (fyl2x_extend<mode>xf3_i387): New insn pattern.
15302         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
15303         patterns using X87MODEF12 mode macro.  Extend operand 1
15304         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
15305         (log10<mode>2): Ditto.
15306         (log2<mode>2): Ditto.
15307         (log1p<mode>2): Ditto.
15308         (logb<mode>2): Ditto.
15309         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
15310         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
15311         (*fxtractxf3_i387): Rename from *fxtractxf3.
15312         (fxtract_extend<mode>xf3_i387): New insn pattern.
15313         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
15314         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
15315         and gen_fyl2xxf3_i387().
15316
15317 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
15318
15319         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
15320         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
15321         get_loop_exit_edges.  Changed return type to bool.
15322         * cfgloop.h (fix_loop_placement): Declaration removed.
15323
15324 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
15325
15326         * param.h (MIN_VECT_LOOP_BOUND): New.
15327         * params.def (MIN_VECT_LOOP_BOUND): New.
15328         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
15329         argument - minimum threshold for number of iterations.
15330         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
15331         argument to declaration.
15332         * tree-vect-analyze.c (vect_analyze_operations): Check value of
15333         MIN_VECT_LOOP_BOUND.
15334         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
15335         slpeel_tree_peel_loop_to_edge with additional argument.
15336         (vect_do_peeling_for_alignment): Likewise.
15337         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
15338
15339 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
15340
15341         PR target/30413
15342         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
15343         operands of size 1.
15344
15345 2007-01-14  Jan Hubicka  <jh@suse.cz>
15346
15347         * tree-dfa.c (remove_referenced_var): New function.
15348         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
15349         prune referenced vars list too.
15350         * tree-flow.h (remove_referenced_var): Declare.
15351
15352 2007-01-14  Jan Hubicka  <jh@suse.cz>
15353
15354         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
15355         separately.
15356         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
15357         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
15358         * except.h (verify_eh_throw_table_statements): Kill prototype.
15359         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
15360         into call exrepssions.
15361         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
15362         eh trhow verifier.
15363         * tree-cfg.c: Include pointer-set.h.
15364         (verify_node_sharing): Work on pointer set.
15365         (verify_eh_throw_stmt_node): New.
15366         (verify_stmts): Use pointers sets, verify throw_stmt.
15367
15368 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
15369
15370         * ipa-reference.c (analyze_function): Consider also addresses taken
15371         in phi nodes.
15372
15373 2007-01-12  Roger Sayle  <roger@eyesopen.com>
15374
15375         * c-typeck.c (null_pointer_constant_p): Replace use of
15376         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
15377         (build_c_cast): Likewise.
15378
15379 2007-01-12  Roger Sayle  <roger@eyesopen.com>
15380
15381         * tree.h (force_fit_type_double): Remove unused final argument.
15382         * c-common.c (constant_expression_warning): Replace use of
15383         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
15384         (convert_and_check): Likewise.
15385         (shorten_compare): Update call to force_fit_type_double.
15386         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
15387         * convert.c (convert_to_pointer): Update call to
15388         force_fit_type_double.
15389         * fold-const.c (force_fit_type_double): Remove overflowed_const
15390         argument.
15391         (int_const_binop, fold_convert_const_int_from_int,
15392         fold_convert_const_int_from_real, fold_div_compare,
15393         fold_sign_changed_comparison, fold_unary, fold_negate_const,
15394         fold_abs_const, fold_not_const): Remove the final argument from
15395         calls to force_fit_type_double.
15396
15397 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15398
15399         * configure.ac: Set insn to "nop" for spu-*-* also.
15400         * configure: Regenerate.
15401
15402 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
15403
15404         * builtins.def : Add BUILT_IN_FREE.
15405
15406 2007-01-12  Jan Hubicka  <jh@suse.cz>
15407
15408         PR tree-optimization/30443
15409         * tree-inline.c (tree_function_versioning): Do not optimize when
15410         cloning for inlining.
15411
15412 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
15413
15414         * doc/loop.texi: Document recording of loop exits.
15415         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
15416         (update_single_exits_after_duplication,
15417         update_single_exit_for_duplicated_loop,
15418         update_single_exit_for_duplicated_loops): Removed.
15419         (duplicate_loop_to_header_edge): Do not call
15420         update_single_exits_after_duplication and
15421         update_single_exit_for_duplicated_loops.
15422         (loop_version): Do not update single_exit information.
15423         (fix_loop_structure): Use record_loop_exits instead of
15424         mark_single_exit_loops.
15425         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
15426         the lists of loop exits.
15427         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
15428         split_edge, merge_blocks): Update the lists of loop exits.
15429         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
15430         loop_optimizer_init.
15431         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
15432         of mark_single_exit_loops.
15433         (loop_optimizer_finalize): Call release_recorded_exits.
15434         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
15435         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
15436         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
15437         update single exit information.
15438         * lambda-code.c (perfect_nestify): Ditto.
15439         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
15440         (mark_single_exit_loops): Removed.
15441         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
15442         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
15443         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
15444         functions.
15445         (get_loop_exit_edges, single_exit): Use recorded exit lists.
15446         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
15447         (verify_loop_structure): Verify consistency of the exit lists.
15448         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
15449         (set_single_exit): Removed.
15450         * cfgloop.h (struct loop_exit): New function.
15451         (struct loop): single_exit_ field replaced by exits field.
15452         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
15453         (struct loops): Added exits hash.
15454         (mark_single_exit_loops, set_single_exit): Declaration removed.
15455         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
15456
15457 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15458
15459         * doc/invoke.texi: Avoid use of @headitem.
15460
15461 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15462
15463         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
15464
15465 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15466
15467         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
15468         list of targets.
15469
15470 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15471             Richard Sandiford  <richard@codesourcery.com>
15472
15473         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
15474         * config/m68k/m68k.opt: Resort options.
15475         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
15476
15477 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15478             Richard Sandiford  <richard@codesourcery.com>
15479
15480         * doc/invoke.texi: Document the macros that are defined by
15481         m68k's -mtune and -mhard-float options.
15482         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
15483         (m68k_cpp_cpu_family): Likewise.
15484         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
15485         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
15486         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
15487         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
15488         (m68k_cpp_cpu_family): Likewise.
15489
15490 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15491
15492         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
15493         macros besides mc68000 as tuning macros.  Use a switch statement
15494         to set them and mcpu32.
15495
15496 2007-01-12  Julian Brown  <julian@codesourcery.com>
15497
15498         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
15499         (TARGET_68040_ONLY): Rename to...
15500         (TARGET_68040): ...this.
15501         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
15502         * config/m68k/m68k.md: Likewise.
15503
15504 2007-01-12  Julian Brown  <julian@codesourcery.com>
15505             Nathan Sidwell  <nathan@codesourcery.com>
15506             Richard Sandiford  <richard@codesourcery.com>
15507
15508         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
15509         the -mcpu= argument associated with the --with-cpu setting.
15510         Define M68K_DEFAULT_TUNE to the default -mtune= option,
15511         if different from the one implied by the -mcpu setting.
15512         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
15513         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
15514         * doc/invoke.texi: Mention ColdFire in the introduction to the
15515         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
15516         -mno-div and -mhard-float options.  Make -m68881 a synonym for
15517         -mhard-float.  Document the previously-undocumented -m5206e,
15518         -m528x, -m5307 and -m5407 options.  Tweak the existing option
15519         documentation for consistency.
15520         * doc/install.texi: Mention new --with-cpu arguments.
15521         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
15522         default CPU if neither -mcpu nor -march are specified.
15523         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
15524         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
15525         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
15526         using m68k_tune to decide between families that implement the
15527         same ISA.  Use m68k_tune to set __mcfv4e__.
15528         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
15529         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
15530         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
15531         (FL_ISA_C, FL_ISA_MMU): New macros.
15532         (MASK_COLDFIRE): Delete.
15533         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
15534         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
15535         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
15536         (TARGET_HARD_FLOAT): Do not define here.
15537         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
15538         (TUNE_68000): New macro.
15539         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
15540         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
15541         (TUNE_CFV2): Redefine in terms of m68k_tune.
15542         (uarch_type, target_device, fpu_type): New enums.
15543         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
15544         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
15545         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
15546         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
15547         (FL_FOR_isa_c): New macros.
15548         (m68k_isa): New enum.
15549         (m68k_target_selection): New structure.
15550         (all_devices, all_isas, all_microarchs): New tables.
15551         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
15552         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
15553         (MASK_ALL_CPU_BITS): Delete.
15554         (m68k_find_selection): New function.
15555         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
15556         Map the legacy target options to a combination of the new ones.
15557         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
15558         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
15559         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
15560         settings.
15561         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
15562         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
15563         properties.
15564         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
15565         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
15566         * config/m68k/m68k-devices.def: New file.
15567
15568 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15569             Nathan Sidwell  <nathan@codesourcery.com>
15570
15571         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
15572         (SUBTARGET_EXTRA_SPECS): New macros.
15573         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
15574         use %(asm_cpu_spec) instead.
15575         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
15576         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
15577         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
15578         (EXTRA_SPECS): Rename to...
15579         (SUBTARGET_EXTRA_SPECS): ...this.
15580
15581 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15582             Richard Sandiford  <richard@codesourcery.com>
15583             Julian Brown  <julian@codesourcery.com>
15584
15585         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15586         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
15587         to the configuration's default CPU.
15588         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
15589         Remove default masks.
15590         (m680[012]0-*-*): Set the default with_cpu to the first part of
15591         the target name.
15592         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
15593         (m68k*-*-linux): Extend the --with-cpu handling to...
15594         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
15595         and m68010.  Don't set target_cpu_default2.
15596         * doc/install.texi: Document --with-cpu for m68k.
15597         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
15598         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
15599         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
15600         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
15601         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
15602         (ASM_SPEC): Remove use of %(asm_cpu_default).
15603         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
15604         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
15605         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
15606         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
15607         __HAVE_FPU__ if TARGET_HARD_FLOAT.
15608         (TARGET_DEFAULT): Delete.
15609         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
15610         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
15611         (CPP_CPU_SPEC): Delete.
15612         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
15613         the appropriate string.
15614         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
15615         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
15616         (ASM_SPEC): Don't use %(asm_default_spec).
15617         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
15618         TARGET_DEFAULT and add MASK_68881.
15619         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
15620
15621 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15622
15623         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
15624         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
15625         MASK_68010 alongside MASK_68020.
15626         * doc/invoke.texi: Document -m68010.
15627         * config/m68k/m68k.opt (m68010): New.
15628         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
15629         if TUNE_68010.
15630         (TUNE_68010): New macro.
15631         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
15632         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
15633         (M68K_CPU_m68332): Add MASK_68010.
15634         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
15635         fallback definition.
15636         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
15637         defines.
15638         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
15639         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
15640         to all entries that use MASK_68020.
15641         (output_move_simode_const, output_move_himode, output_move_qimode)
15642         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
15643         instead of TARGET_68020 to select clr behavior.  Remove comment
15644         about there being no TARGET_68010.
15645         * config/m68k/m68k.md: Likewise throughout.
15646
15647 2007-01-12  Julian Brown  <julian@codesourcery.com>
15648
15649         * config/m68k/m68k.h (TARGET_ISAB): New macro.
15650         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
15651         * config/m68k/m68k.md: Likewise.
15652
15653 2007-01-12  Julian Brown  <julian@codesourcery.com>
15654
15655         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
15656         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
15657
15658 2007-01-12  Julian Brown  <julian@codesourcery.com>
15659
15660         * config/m68k/m68k.h (TUNE_68040_60): New macro.
15661         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
15662         * config/m68k/m68k.md: Likewise.
15663
15664 2007-01-12  Julian Brown  <julian@codesourcery.com>
15665             Richard Sandiford  <richard@codesourcery.com>
15666
15667         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
15668         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
15669         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
15670         TARGET_CPU32.
15671         (TARGET_CPU32): Rename to...
15672         (TUNE_CPU32): ...this.
15673         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
15674         (TUNE_CFV2): New macros.
15675         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
15676         remove conditions that are implied by TARGET_68020.
15677         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
15678         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
15679         (m68k_output_function_epilogue): Likewise.
15680         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
15681         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
15682         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
15683         non-68000 timings.  Refactor multiplication and division costs.
15684         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
15685         TUNE_CPU32 instead of TARGET_CPU32.
15686         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
15687         and TUNE_68060 instead of TARGET_68060.
15688         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
15689         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
15690         TARGET_CPU32.
15691         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
15692         && !TARGET_COLDFIRE" to choose between moveq and clr.
15693         Likewise in the unnamed movsf pattern.
15694         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
15695         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
15696         ashiftrt pattern.
15697
15698 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15699
15700         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
15701         of tabbing before backslashes.
15702
15703 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15704
15705         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
15706         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
15707         (ASM_OUTPUT_INTERNAL_LABEL): Define.
15708
15709 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
15710
15711         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
15712         find_interesting_uses_cond.
15713         (find_interesting_uses_cond): Use extract_cond_operands.
15714         (rewrite_use_compare): Use extract_cond_operands and
15715         force_gimple_operand_bsi.  Do not call update_stmt.
15716         (determine_use_iv_cost_condition): Use extract_cond_operands.
15717         Return cheaper of using original bound and changing the exit bound.
15718
15719 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
15720
15721         PR tree-optimization/29516
15722         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
15723         most_expensive_mult_to_index, addr_to_parts,
15724         create_mem_ref, maybe_fold_tmr): Make the type of
15725         fields of TARGET_MEM_REF sizetype.
15726         (move_fixed_address_to_symbol, move_pointer_to_base):
15727         New functions.
15728         * tree.def (TARGET_MEM_REF): Add comment on types of
15729         the operands.
15730
15731 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
15732
15733         * c-common.c (vector_types_convertible_p): Treat opaque types as
15734         always convertible if they have the same size, but not otherwise.
15735
15736 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
15737
15738         * ifcvt.c (struct noce_if_info): Add comments to the fields.
15739         Remove the b_unconditional field.
15740         (noce_try_sign_mask): Do not look at b_unconditional.
15741         (noce_process_if_block): Do not use merge_if_blocks.  Update
15742         the CFG here.  Do not set b_unconditional.
15743         (cond_move_process_if_block): Likewise.
15744         (find_cond_trap): Likewise.
15745         (check_cond_move_block): Require simple jump insns at the end
15746         of the basic block.
15747
15748 2007-01-11  Jan Hubicka  <jh@suse.cz>
15749
15750         PR tree-optimization/1046
15751         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
15752         when alias info is not ready.
15753         (pass_tail_recursion): Do not require aliasing.
15754         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
15755         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
15756         * tree-ssa-copy.c (pass_copy_prop): Likewise.
15757         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
15758         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
15759         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
15760         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
15761         before inlining.
15762         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
15763         When aliasing is not build, mark statement as volatile.
15764
15765 2007-01-11  Tom Tromey  <tromey@redhat.com>
15766
15767         PR preprocessor/15185, PR preprocessor/20989:
15768         * doc/cppopts.texi <-MT>: Update description of algorithm for
15769         computing default target.
15770         <-M, -MD>: Reword "basename" text.
15771
15772 2007-01-11  Roger Sayle  <roger@eyesopen.com>
15773
15774         * builtins.c (expand_builtin_pow, expand_builtin_powi,
15775         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
15776         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
15777         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
15778         fold_builtin_bswap, real_constp, fold_builtin_pow,
15779         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
15780         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
15781         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
15782         * convert.c (convert_to_pointer): Likewise.
15783         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
15784         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
15785         const_binop, fold_convert_const_int_from_int,
15786         fold_convert_const_int_from_real,
15787         fold_convert_const_real_from_real, sign_bit_p,
15788         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
15789         fold_sign_changed_comparison, fold_unary, fold_comparison,
15790         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
15791         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
15792         * print-tree.c (print_node_brief, print_node): Likewise.
15793         * stor-layout.c (place_field, layout_type): Likewise.
15794         * tree-chrec.c (keep_cast): Likewise.
15795         * tree.c (build_vector, build_real, build_real_from_int_cst,
15796         build_complex): Likewise.
15797
15798 2007-01-11  Roger Sayle  <roger@eyesopen.com>
15799
15800         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
15801         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
15802
15803 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
15804
15805         * configure.ac (strict1_warn): Rename to strict_warn.
15806         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
15807         cc_set_by_configure, quoted_cc_set_by_configure,
15808         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
15809         all_boot_languages, all_stagestuff): Remove.
15810         (target_list): Remove bootstrap targets.
15811         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
15812         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
15813         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
15814         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
15815         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
15816         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
15817         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
15818         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
15819         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
15820         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
15821         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
15822         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
15823         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
15824         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
15825         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
15826         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
15827         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
15828         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
15829         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
15830         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
15831         (mostlyclean): Adjust.
15832         (clean, distclean): Don't mention bootstrap stuff.
15833         * configure: Regenerate.
15834         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
15835         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
15836         treelang/config-lang.in (stagestuff): Remove.
15837         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
15838         stageprofile, stagefeedback, stagestuff): Remove mention.
15839
15840 2007-01-11  Nick Clifton  <nickc@redhat.com>
15841
15842         * config/mcore/predicates.md (mcore_general_movesrc_operand):
15843         Accept CONSTs.
15844         (mcore_general_movdst_operand): Do not accept CONST_INTs.
15845         (mcore_arith_K_S_operand): Run the test for the S constraint not
15846         the test for the M constraint.
15847         (mcore_addsub_operand): Do not accept integer values that are
15848         larger than 32 bits.
15849         * config/mcore/mcore.md: Remove unused constraints from split.
15850         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
15851         (addsi3): Likewise.
15852         (allocate_stack): Likewise.
15853         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
15854         operands to 32 bits.
15855         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
15856         INTVAL.
15857         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
15858         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
15859         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
15860         mcore_output_bclri, mcore_output_andn, output_inline_const,
15861         mcore_output_move, mcore_output_movedouble): Likewise.
15862         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
15863         (output_inline_const): Likewise.
15864         (output_inline_const): Fix format strings used in sprintf
15865         statements.
15866         * config/mcore/mcore-protos.h: Update prototypes for changed
15867         functions in mcore.c.
15868         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
15869         HOST_WIDE_INT and not int.
15870         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
15871         CONST_OK_FOR_N): Likewise.
15872         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
15873         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
15874         an INTVAL.
15875
15876 2007-01-10  Jan Hubicka  <jh@suse.cz>
15877
15878         * tree-vrp.c (remove_range_assertions): Release defs.
15879         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
15880         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
15881
15882 2007-01-10  Paul Brook  <paul@codesourcery.com>
15883
15884         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
15885         * config/arm/arm.md (mulsi3subsi): New insn.
15886
15887 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
15888
15889         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
15890         (tree_transform_and_unroll_loop): New.
15891         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
15892         Declare.
15893
15894 2007-01-10  Robert Kennedy <jimbob@google.com>
15895
15896         * fold-const.c (fold_comparison): Fold comparisons like (x *
15897         1000 < 0) to (x < 0).
15898
15899 2007-01-10  Ian Lance Taylor  <iant@google.com>
15900
15901         * tree-pretty-print.c (dump_generic_node): Print parentheses when
15902         operands have the same priority.
15903
15904 2007-01-10  Tom Tromey  <tromey@redhat.com>
15905
15906         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
15907         (fold_binary): Likewise.
15908         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
15909         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
15910         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
15911         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
15912         * langhooks.h (struct lang_hooks): Removed field
15913         'can_use_bit_fields_p'.
15914
15915 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
15916
15917         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
15918
15919 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
15920
15921         * function.c (get_last_funcdef_no): New function.
15922         * function.h (get_last_funcdef_no): Declare.
15923         * tree-inline.c (initialize_cfun): Add initialization.
15924         (tree_function_versioning): Cleanup.
15925
15926 2007-01-10  Jan Hubicka  <jh@suse.cz>
15927
15928         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
15929         PHIs.
15930
15931 2007-01-10  Sa Liu  <saliu@de.ibm.com>
15932             Ben Elliston  <bje@au.ibm.com>
15933
15934         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
15935         for SAVE_NONLOCAL and Pmode for any other save level.
15936         * spu-protos.h (spu_restore_stack_block): Declare.
15937         * spu.md (save_stack_block): Remove.
15938         (restore_stack_block): Call spu_restore_stack_block.
15939         * spu.c (spu_restore_stack_block): New function.
15940         (spu_expand_epilogue): Remove old comment.
15941
15942 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
15943
15944         PR tree-optimization/30322
15945         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
15946         (cand_value_at): Return the value as aff_tree.
15947         (may_eliminate_iv): Convert the bound from aff_tree to tree.
15948         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
15949         aff_combination_mult): New functions.
15950         (aff_combination_add): Use aff_combination_add_cst.
15951         (aff_combination_convert): Allow conversions to a wider type.
15952         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
15953         * tree-affine.h (aff_combination_mult): Declare.
15954
15955 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
15956
15957         * doc/tm.texi: Update documentation to reflect reality of exec
15958         and start file search behaviours. Update copyright year.
15959         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
15960         header file directories.
15961
15962 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
15963
15964         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
15965         (*cosxf2): Rename to cosxf2_i387.
15966         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
15967         using X87MODEF12 mode macro. Rename patterns to
15968         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
15969         for SSE math.
15970         (*cosdf2, *cossf2): Ditto.
15971         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
15972         to match extended input operands.
15973         (sincos<mode>3): New expander.
15974         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
15975         insn patterns and corresponding splitters.
15976
15977 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
15978
15979         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
15980         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
15981
15982 2007-01-09  Nicolas Pitre  <nico@cam.org>
15983
15984         PR target/30173
15985         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
15986
15987 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
15988
15989         * target.h (struct gcc_target): New field library_rtti_comdat.
15990         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
15991         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
15992         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
15993         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
15994
15995 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
15996
15997         * doc/invoke.texi (Optimize Options): Correct description of -O0.
15998
15999 2007-01-08  Richard Guenther  <rguenther@suse.de>
16000
16001         * tree.h (force_fit_type_double): Export.
16002         (force_fit_type): Remove.
16003         * fold-const.c (force_fit_type_double): New function.
16004         (force_fit_type): Remove.
16005         (int_const_binop): Use it.
16006         (fold_convert_const_int_from_int): Likewise.
16007         (fold_convert_const_int_from_real): Likewise.
16008         (fold_div_compare): Likewise.
16009         (fold_sign_changed_comparison): Likewise.
16010         (fold_unary): Likewise.
16011         (fold_negate_const): Likewise.
16012         (fold_abs_const): Likewise.
16013         (fold_not_const): Likewise.
16014         * c-common.c (shorten_compare): Use force_fit_type_double.
16015         * convert.c (convert_to_pointer): Likewise.
16016
16017 2007-01-08  Richard Guenther  <rguenther@suse.de>
16018
16019         * tree.h (build_int_cst_wide_type): Export.
16020         * tree.c (build_int_cst_wide_type): New function.
16021         (build_int_cst_wide): Fix comment.
16022         * builtins.c (fold_builtin_object_size): Use build_int_cst
16023         to build -1 or 0 of the correct type.  Use fit_double_type
16024         to check for overflow.
16025         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
16026         to build the mask.
16027         (decode_field_reference): Likewise.
16028         (all_ones_mask_p): Likewise.
16029         (native_interpret_int): Use build_int_cst_wide_type.
16030         (fold_binary): Use build_int_cst_type to build an all-ones
16031         value.
16032         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
16033
16034 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
16035
16036         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
16037
16038 2007-01-09  Ben Elliston  <bje@au.ibm.com>
16039
16040         * genautomata.c (STATS_OPTION): New option.
16041         (stats_flag): New flag.
16042         (gen_automata_option): Handle it.
16043         (initiate_automaton_gen): Ditto.
16044         (write_automata): Output statistics only if stats_flag is
16045         set. Likewise, output time statistics only if time_flag is set.
16046         * doc/md.texi (Processor pipeline description): Document new flag.
16047
16048 2007-01-08  Richard Guenther  <rguenther@suse.de>
16049
16050         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
16051         * tree.c (build_int_cst_type): Likewise.
16052         (size_in_bytes): Don't call force_fit_type on the result.
16053         (int_fits_type_p): Use fit_double_type.
16054         * fold-const.c (fit_double_type): New function.
16055         (force_fit_type): Use it.
16056         * tree.h (fit_double_type): Export.
16057
16058 2007-01-08  Jan Hubicka  <jh@suse.cz>
16059
16060         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
16061         * ipa.c (function_and_variable_visibility): Fix return type.
16062
16063 2007-01-08  Richard Guenther  <rguenther@suse.de>
16064
16065         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
16066         of offset to build the index.
16067         * tree-pretty-print.c (dump_generic_node): Don't build negated
16068         const just for printing.
16069         * c-pretty-print.c (pp_c_integer_constant): Likewise.
16070         * builtins.c (fold_builtin_int_roundingfn): Check if result
16071         fits the type by using force_fit_type and comparing the result.
16072         * predict.c (predict_loops): Use compare_tree_int for comparison.
16073         * tree.c (build_int_cst): Fall back to integer_type_node for
16074         NULL_TREE type.
16075         (build_int_cst_wide): Assert type is non-null.
16076
16077 2007-01-08  Roberto Costa  <roberto.costa@st.com>
16078
16079         * tree-vrp.c (extract_range_from_cond_expr): New.
16080         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
16081         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
16082         as expressions.
16083         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
16084         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
16085         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
16086         used as expressions.
16087         * tree-object-size.c (cond_expr_object_size): New.
16088         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
16089
16090 2007-01-08  Jan Hubicka  <jh@suse.cz>
16091
16092         * tree-ssa-forwprop.c (forward_propagate_into_cond,
16093         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
16094         statement.
16095
16096 2007-01-08  Richard Guenther  <rguenther@suse.de>
16097
16098         PR tree-optimization/23603
16099         * tree-vrp.c (set_value_range_to_truthvalue): New function.
16100         (extract_range_from_binary): Fall back to truthvalue instead of
16101         varying for TRUTH_*_EXPR.
16102         (extract_range_from_comparison): Fall back to truthvalue instead of
16103         varying.
16104         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
16105         if all visited PHI values were constant.
16106
16107 2007-01-08  Jan Hubicka  <jh@suse.cz>
16108
16109         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
16110         (cgraph_analyze_function): break out from ...
16111         (cgraph_finalize_compilation_unit): ... here.
16112         (cgraph_expand_function): Remove forgoten commented out line.
16113         (cgraph_optimize): Analyze functions.
16114
16115 2007-01-08  Jan Hubicka  <jh@suse.cz>
16116
16117         * tree-pas.h (TODO_remove_function): New flag.
16118         (TODO_update*): Renumber.
16119         (pass_ipa_increase_alignment,
16120         pass_ipa_function_and_variable_visibility): New passes.
16121         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
16122         (cgraph_function_and_variable_visibility): Move to ipa.c
16123         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
16124         cgraph_increase_alignment.
16125         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
16126         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
16127         calling tree-inline.
16128         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
16129         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
16130         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
16131         (gate_increase_alignment): New function.
16132         (pass_ipa_increase_alignment): New pass.
16133         * ipa.c: Inline tree-pass.h and timevar.h
16134         (function_and_variable_visibility): Move here from cgraphunit.c
16135         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
16136         * passes.c (init_optimization_passes): Add the two new passes.
16137         (execute_todo): Handle cgraph_remove_functions.
16138
16139 2007-01-08  Nick Clifton  <nickc@redhat.com>
16140
16141         * config/frv/predicates.md (reg_or_0_operand): Accept
16142         CONST_DOUBLEs.
16143
16144 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
16145
16146         * config/bfin/rtems.h, config/bfin/t-rtems: New.
16147         * config.gcc: Add bfin*-rtems*.
16148
16149 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
16150
16151         * c.opt: Add -flax-vector-conversions.
16152         * c-typeck.c (convert_for_assignment): Pass flag to
16153         vector_types_convertible_p to allow emission of note.
16154         (digest_init): Likewise.
16155         * c-opts.c: Handle -flax-vector-conversions.
16156         * c-common.c (flag_lax_vector_conversions): New.
16157         (vector_types_convertible_p): Unless -flax-vector conversions
16158         has been passed, disallow conversions between vectors with
16159         differing numbers of subparts and/or element types.  If such
16160         a conversion is disallowed, possibly emit a note on the first
16161         occasion only to inform the user of -flax-vector-conversions.
16162         The new last argument specifies this.
16163         * c-common.h (flag_lax_vector_conversions): New.
16164         (vector_types_convertible_p): Add extra argument.
16165         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
16166         char_type_node for V*QI type vectors.
16167         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
16168         Update to satisfy new typechecking rules.
16169         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
16170         C and C++ variants.
16171         * doc/invoke.texi (C Dialect Options): Document
16172         -flax-vector-conversions.
16173
16174 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
16175
16176         PR tree-optimization/29877
16177         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
16178         a register variable on the RHS to not be replaceable.
16179
16180 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
16181         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
16182         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
16183         const_simm15, const_pow2, const_npow2): Added.
16184         * config/score/misc.md (insv, extv, extzv, movmemsi,
16185         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
16186         * config/score/score.c (score_address_cost, score_select_cc_mode):
16187         Added.
16188         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
16189         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
16190         Update score_print_operand.
16191         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
16192         Adjust register allocate order and update some macro define.
16193         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
16194         mdx_block_move_straight, mdx_block_move_loop_head,
16195         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
16196         mdx_block_move): Added.
16197         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
16198         mdp_limm): Updated and fix some bug and typo.
16199         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
16200         (movsf, movdf, doloop_end): Added.
16201
16202 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
16203
16204         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
16205         config/arm/thumb2.md: Fix comment typos.
16206         * doc/extend.texi: Fix a typo.
16207
16208 2007-01-07  Eric Christopher  <echristo@apple.com>
16209
16210         * configure.ac: Check for __stack_chk_fail for darwin.
16211         * configure: Regenerate.
16212
16213 2007-01-07  Richard Guenther  <rguenther@suse.de>
16214
16215         * tree-vrp.c (extract_range_from_assert): CSE calls to
16216         compare_values where possible.
16217         (extract_range_from_unary_expr): Likewise.
16218
16219 2007-01-07  Anatoly Sokolov <aesok@post.ru>
16220
16221         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
16222         * config/avr/avr.c (call_insn_operand): Delete function.
16223         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
16224         instead of register number. Use predicates.
16225         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
16226         call_insn_operand): Add.
16227
16228 2007-01-06  Jan Hubicka  <jh@suse.cz>
16229
16230         * tree-pass.h (pass_build_cgraph_edges): Declare.
16231         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
16232         (visited_nodes): Remove.
16233         (cgraph_create_edges): Move to cgraphbuild.c; rename to
16234         build_cgrpah_edges; make visited_nodes local.
16235         (cgraph_process_new_functions): DO not call initialize_inline_failed.
16236         (record_references_in_initializer): Move to cgraphbuild.c
16237         (initialize_inline_failed, rebuild_cgraph_edges,
16238         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
16239         (verify_cgraph_node): Make visited_nodes local.
16240         (cgraph_analyze_function): Do not call cgraph_create_edges and
16241         initialize_inline_failed.
16242         (cgraph_expand_function): Do not call cgraph_lower_function;
16243         assert that function is already lowered.
16244         * Makefile.in (cgraphbuild.o): New.
16245         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
16246         at the end of lowering passes.
16247
16248 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
16249
16250         * ifcvt.c (cond_move_convert_if_block): New function, code
16251         factored out from...
16252         (cond_move_process_if_block): ...here.  Call the new function
16253         on the THEN and ELSE blocks.
16254         (merge_if_block): Do not copy global_live_at_end, merge_blocks
16255         already takes care of this.
16256
16257 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16258
16259         PR c/19978
16260         * tree.h (TREE_OVERFLOW_P): New.
16261         * c-typeck.c (parser_build_unary_op): Warn only if result
16262         overflowed and operands did not.
16263         (parser_build_binary_op): Likewise.
16264         (convert_for_assignment): Remove redundant overflow_warning.
16265         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
16266
16267 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16268
16269         * c-typeck.c (store_init_value): Split over two lines to follow
16270         the GNU coding style.
16271
16272 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
16273
16274         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
16275         __GXX_EXPERIMENTAL_CXX0X__.
16276         * doc/cpp.texi: Same.
16277
16278 2007-01-05  Richard Guenther  <rguenther@suse.de>
16279
16280         PR middle-end/27826
16281         * tree.c (get_narrower): Do not construct COMPONENT_REFs
16282         with mismatched types.  Instead explicitly build a
16283         conversion NOP_EXPR.
16284
16285 2007-01-05  Ian Lance Taylor  <iant@google.com>
16286
16287         * c-common.c (decl_with_nonnull_addr_p): New function.
16288         (c_common_truthvalue_conversion): Call it.
16289         * c-typeck.c (build_binary_op): Likewise.
16290         * c-common.h (decl_with_nonnull_addr_p): Declare.
16291
16292 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
16293
16294         PR c/30360
16295         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
16296         denom against 0.0.
16297
16298 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
16299
16300         * doc/install.texi (Final install): Document the fact that
16301         the GNAT runtime should not be stripped.
16302
16303 2007-01-04  Jan Hubicka  <jh@suse.cz>
16304
16305         * tree-inline.c (fold_marked_statements): Update operand caches
16306         and EH after folding
16307
16308 2007-01-04  Ian Lance Taylor  <iant@google.com>
16309
16310         * c-common.c (check_function_nonnull): Whitespace fix.
16311
16312 2007-01-04  Jan Hubicka  <jh@suse.cz>
16313
16314         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
16315         comitted older version of patch.
16316         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
16317         function, celanup cfg and collect garbage.
16318
16319 2007-01-04  Mike Stump  <mrs@apple.com>
16320
16321         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
16322         (clean): Likewise.
16323
16324 2007-01-04  Eric Christopher  <echristo@apple.com>
16325
16326         * libgcc2.c (__bswapsi2): Use SItype.
16327         (__bswapdi2): Use DItype.
16328         * libgcc2.h: Update for above.
16329
16330 2007-01-04  Paul Brook  <paul@codesourcery.com>
16331
16332         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
16333         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
16334         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
16335         umulsidi3, umulsidi3adddi, smulsi3_highpart,
16336         umulsi3_highpart): Make conditional on !arm_arch6.
16337         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
16338         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
16339         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
16340         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
16341         umulsi3_highpart_v6): New insns.
16342
16343 2007-01-04  Roger Sayle  <roger@eyesopen.com>
16344
16345         * fold-const.c (fold_convert): When casting an expression to void,
16346         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
16347         have a type.  Instead of attempting to build a NOP_EXPR, return
16348         these "special" trees directly.
16349
16350 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
16351
16352         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
16353         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
16354         rs6000_cost->fp not 0 as adjustment for outer NEG.
16355
16356 2007-01-04  Jan Hubicka  <jh@suse.cz>
16357
16358         * cgraph.c (cgraph_release_function_body): New function.
16359         (cgraph_remove_node): Use it.
16360         * cgraph.h (cgraph_release_function_body): Declare.
16361         * cgraphunit.c (cgraph_expand_function): Use it.
16362         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
16363         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
16364         is initialized and while compilation of other function is running.
16365         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
16366         statement CFG annotations from here to ...
16367         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
16368
16369 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
16370
16371         * cfgloop.h (enum li_flags): Make the constants powers of two.
16372
16373 2007-01-04  Jan Hubicka  <jh@suse.cz>
16374
16375         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
16376         set.
16377         (fold_marked_statements): New function.
16378         (optimize_inline_calls, tree_function_versioning): Fold new statements.
16379         * tree-inline.h (copy_body_data): Add statements_to_fold.
16380
16381 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
16382
16383         * config.gcc: Mention libgcc/config.host.
16384         * Makefile.in: Update comments mentioning libgcc.
16385         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
16386         (all.cross, start.encap, rest.encap, rest.cross): Update
16387         dependencies for libgcc move.
16388         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
16389         (clean-target, clean-target-libgcc): Delete.
16390         (srcdirify, GCC_EXTRA_PARTS): New macros.
16391         (libgcc-support, libgcc.mvars): New rules.
16392         (distclean): Remove mention of mklibgcc.
16393         (install): Don't reference INSTALL_LIBGCC.
16394         (install-common): Don't reference EXTRA_PARTS.
16395         (install-libgcc, install-multilib): Delete rules.
16396         * mklibgcc.in: Delete file.
16397         * doc/configfiles.texi: Don't mention mklibgcc.
16398
16399         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
16400         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
16401         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
16402         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
16403         (mklibgcc, ldblspecs): Likewise.
16404
16405         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
16406         (posixpre.def): Use $(T).
16407         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
16408         (SHLIB_SRC, SHLIB_INSTALL): Delete.
16409         (SHLIB_LINK): Make dummy.
16410         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
16411
16412         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
16413
16414         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
16415         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
16416         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
16417         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
16418
16419         * configure.ac (all_outputs): Remove mklibgcc.
16420         * configure: Regenerated.
16421
16422 2007-01-03  Josh Conner  <jconner@apple.com>
16423
16424         PR middle-end/29683
16425         * calls.c (compute_argument_addresses): Set stack and stack_slot
16426         for partial args, too.
16427         (store_one_arg): Use locate.size.constant for the size when
16428         generating a save_area.
16429
16430 2007-01-03  Robert Kennedy <jimbob@google.com>
16431
16432         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
16433         whose definitions are deleted due to basic block merging.
16434
16435 2007-01-03  Paul Brook  <paul@codesourcery.com>
16436
16437         PR target/16634
16438         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
16439         functions.
16440         (use_return_insn): Return 0 for Thumb interrupt functions.
16441         (print_multi_reg): Add rfe argument for IRQ returns.
16442         (arm_output_epilogue): Pop interrupt return address directly into PC.
16443         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
16444
16445 2007-01-03  Paul Brook  <paul@codesourcery.com>
16446
16447         Merge from sourcerygxx-4_1.
16448         * config/arm/thumb2.md: New file.
16449         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
16450         Thumb-2.
16451         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
16452         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
16453         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
16454         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
16455         tables.
16456         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
16457         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
16458         comptibility.
16459         * config/arm/ieee754-sf.S: Ditto.
16460         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
16461         (thumb1_base_register_rtx_p): ... to this.
16462         (thumb_index_register_rtx_p): Rename...
16463         (thumb1_index_register_rtx_p): ... to this.
16464         (thumb_output_function_prologue): Rename...
16465         (thumb1_output_function_prologue): ... to this.
16466         (thumb_legitimate_address_p): Rename...
16467         (thumb1_legitimate_address_p): ... to this.
16468         (thumb_rtx_costs): Rename...
16469         (thumb1_rtx_costs): ... to this.
16470         (thumb_compute_save_reg_mask): Rename...
16471         (thumb1_compute_save_reg_mask): ... to this.
16472         (thumb_final_prescan_insn): Rename...
16473         (thumb1_final_prescan_insn): ... to this.
16474         (thumb_expand_epilogue): Rename...
16475         (thumb1_expand_epilogue): ... to this.
16476         (arm_unwind_emit_stm): Rename...
16477         (arm_unwind_emit_sequence): ... to this.
16478         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
16479         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
16480         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
16481         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
16482         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
16483         thumb2_output_casesi): New functions.
16484         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
16485         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
16486         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
16487         THUMB2_WORK_REGS): Define.
16488         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
16489         arm_condexec_mask, arm_condexec_masklen)): New variables.
16490         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
16491         (arm_override_options): Check new CPU capabilities.
16492         Set new architecture flag variables.
16493         (arm_isr_value): Handle v7m interrupt functions.
16494         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
16495         Thumb-2.
16496         (const_ok_for_arm): Handle Thumb-2 constants.
16497         (arm_gen_constant): Ditto.  Use movw when available.
16498         (arm_function_ok_for_sibcall): Return false for v7m interrupt
16499         functions.
16500         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
16501         (thumb_find_work_register, arm_load_pic_register,
16502         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
16503         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
16504         print_multi_reg, output_mov_long_double_fpa_from_arm,
16505         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
16506         output_mov_double_fpa_from_arm, output_move_double,
16507         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
16508         output_return_instruction, arm_output_function_prologue,
16509         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
16510         arm_output_mi_thunk, thumb_set_return_address): Ditto.
16511         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
16512         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
16513         (arithmetic_instr, shift_op): Use arm_shift_nmem.
16514         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
16515         '!' and 'L'.
16516         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
16517         (thumb_expand_prologue): Use thumb_set_frame_pointer.
16518         (arm_file_start): Output directive for unified syntax.
16519         (arm_unwind_emit_set): Handle stack alignment instruction.
16520         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
16521         Add v6t2, v7, v7a, v7r and v7m.
16522         (RETLDM): Add Thumb-2 code.
16523         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
16524         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
16525         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
16526         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
16527         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
16528         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
16529         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
16530         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
16531         ADJUST_INSN_LENGTH): Define.
16532         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
16533         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
16534         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
16535         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
16536         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
16537         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
16538         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
16539         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
16540         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
16541         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
16542         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
16543         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
16544         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
16545         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
16546         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
16547         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
16548         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
16549         cortex-m3.
16550         * config/arm/arm-tune.md: Regenerate.
16551         * config/arm/arm-protos.h: Update prototypes.
16552         * config/arm/vfp.md: Enable patterns for Thumb-2.
16553         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
16554         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
16555         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
16556         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
16557         * config/arm/libunwind.S: Add Thumb-2 code.
16558         * config/arm/constraints.md: Update include Thumb-2.
16559         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
16560         * config/arm/ieee754-df.S: Ditto.
16561         * config/arm/bpabi.S: Ditto.
16562         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
16563         * config/arm/predicates.md (low_register_operand,
16564         low_reg_or_int_operand, thumb_16bit_operator): New.
16565         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
16566         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
16567         * config/arm/t-arm-elf: Add armv7 multilib.
16568         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
16569         Include thumb2.md.
16570         (UNSPEC_STACK_ALIGN, ce_count): New.
16571         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
16572         arm_zero_extendsidi2, arm_zero_extendqidi2): New
16573         insns/expanders.
16574         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
16575         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
16576         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
16577         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
16578         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
16579         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
16580         insns.
16581         * doc/extend.texi: Document ARMv7-M interrupt functions.
16582         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
16583
16584 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
16585
16586         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
16587         (struct _Unwind_Context): Rename args_size to flags, remove
16588         signal_frame field, add a new args_size field and version field.
16589         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
16590         _Unwind_IsExtendedContext): New inline functions.
16591         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
16592         Assume by_value array is only present if _Unwind_IsExtendedContext.
16593         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
16594         _Unwind_IsSignalFrame.
16595         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
16596         (uw_update_context_1): Use _Unwind_SetSignalFrame.
16597         (uw_init_context_1): Initialize context->flags to
16598         EXTENDED_CONTEXT_BIT.
16599         * config/rs6000/linux-unwind.h (frob_update_context): Use
16600         _Unwind_SetSignalFrame.
16601
16602 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16603
16604         PR middle-end/30353
16605         * gimplify.c (gimplify_modify_expr_complex_part): Move below
16606         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
16607         the value.
16608
16609 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
16610
16611         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
16612         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
16613         RET, AT_SP): Remove.
16614         * config/i386/i386.md (*sse_prologue_save_insn): Use return
16615         instead of RET.
16616
16617         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16618         * cfgbuild.c (find_basic_blocks): Likewise.
16619         * cfgrtl.c (rtl_create_basic_block): Likewise.
16620         * function.c (temp_slots_at_level): Likewise.
16621         * reg-stack.c (stack_regs_mentioned): Likewise.
16622         * regclass.c (allocate_reg_info): Likewise.
16623         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16624         set_bb_for_stmt, move_block_to_fn): Likewise.
16625         * tree-complex.c (tree_lower_complex): Likewise.
16626         * vec.h (VEC_safe_grow_cleared): New.
16627
16628         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
16629
16630 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
16631
16632         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
16633         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
16634         to loop_version.
16635         * cfgloopmanip.c (scale_loop_frequencies): Export.
16636         (loopify): Scale the frequencies by prescribed coefficients.
16637         (set_zero_probability): New function.
16638         (duplicate_loop_to_header_edge): Improve updating of frequencies.
16639         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
16640         and frequencies according to arguments.
16641         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
16642         correctly.
16643         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
16644         * modulo-sched.c (sms_schedule): Set probabilities for entering
16645         versioned loop correctly.
16646         * tree-vect-transform.c (vect_transform_loop): Ditto.
16647         * cfgloop.h (loopify, loop_version): Declaration changed.
16648         (scale_loop_frequencies): Declared.
16649
16650 2007-01-02  Jan Hubicka  <jh@suse.cz>
16651
16652         * cgraph.c: Include tree-flow.h
16653         (cgraph_add_new-function): Handle IPA_SSA mode; execute
16654         early_local_passes.
16655         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
16656         * tree-pass.h (pass_all_early_optimizations): Declare.
16657         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
16658         early_local_passes.
16659         (cgraph_analyze_function): Do early_local_passes.
16660         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
16661         Do not add referenced vars.
16662         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
16663         SSA form.
16664         (gate_all_early_local_passes): New gate.
16665         (pass_early_local_passes): Use new gate.
16666         (execute_early_local_optimizations): New functions.
16667         (gate_all_early_optimizations): New gate.
16668         (pass_all_early_optimizations): New pass.
16669         (execute_free_datastructures): Free SSA only when initialized.
16670         (gate_init_datastructures): Init only when optimizing.
16671         (tree_lowering_passes): Do early local passes when called late.
16672         * tree-profile.c (do_tree_profiling): Don't profile functions added
16673         late.
16674         (do_early_tree_profiling, pass_early_tree_profile): Kill.
16675         * tree-cfg.c (update_modified_stmts): Do not update when operands are
16676         not active.
16677         * passes.c (init_optimizations_passes): Reorder so we go into SSA
16678         during early_local_passes.
16679         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
16680
16681
16682 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
16683
16684         * Makefile.in: Update copyright year.
16685
16686 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
16687
16688         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
16689         in $(lang_checks) and check-consistency targets.
16690
16691 2007-01-02  Jan Hubicka  <jh@suse.cz>
16692
16693         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
16694         Do not add referenced vars.
16695         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
16696         are not active.
16697         * passes.c (init_optimization_passes): Put mudflap_2 after
16698         free_datastructures.
16699
16700 2007-01-02  Jan Hubicka  <jh@suse.cz>
16701
16702         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
16703         Set NOTHROW flag on call statements proved to be nothrow.
16704         Update statement of local calls so new pure/const functions are
16705         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
16706         goto receivers.
16707         (tree_rest_of_compilation): Register hooks and initialize bitmap
16708         early. Do not set after_inlining flag.
16709
16710 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
16711
16712         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
16713         HOST_BITS_PER_LONGLONG
16714
16715 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
16716
16717         PR c/19977
16718         * c-typeck.c (store_init_value): Don't emit pedantic overflow
16719         warning for non-static initializers.
16720
16721 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
16722
16723         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
16724         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
16725         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
16726         Always use set_unique_reg_note to add REG_EQUAL notes.
16727
16728 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
16729
16730         Revert:
16731         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
16732
16733         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16734         * cfgbuild.c (find_basic_blocks): Likewise.
16735         * cfgrtl.c (rtl_create_basic_block): Likewise.
16736         * function.c (temp_slots_at_level): Likewise.
16737         * reg-stack.c (stack_regs_mentioned): Likewise.
16738         * regclass.c (allocate_reg_info): Likewise.
16739         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16740         set_bb_for_stmt, move_block_to_fn): Likewise.
16741         * tree-complex.c (tree_lower_complex): Likewise.
16742         * vec.h (VEC_safe_grow_cleared): New.
16743
16744 2007-01-02  Ian Lance Taylor  <iant@google.com>
16745
16746         * c-common.c (c_common_truthvalue_conversion): When warning about
16747         using an assignment as a truth value, set TREE_NO_WARNING.
16748
16749 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16750
16751         PR middle-end/7651
16752         * c.opt (Wold-style-declaration): New.
16753         * doc/invoke.texi (C-only Warning Options): New.
16754         (Wold-style-declaration): Document it.
16755         (Wextra): Enabled by -Wextra.
16756         * c-opts.c (c_common_post_options): Enabled by -Wextra.
16757         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
16758         -Wold-style-declaration.
16759
16760 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
16761
16762         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16763         * cfgbuild.c (find_basic_blocks): Likewise.
16764         * cfgrtl.c (rtl_create_basic_block): Likewise.
16765         * function.c (temp_slots_at_level): Likewise.
16766         * reg-stack.c (stack_regs_mentioned): Likewise.
16767         * regclass.c (allocate_reg_info): Likewise.
16768         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16769         set_bb_for_stmt, move_block_to_fn): Likewise.
16770         * tree-complex.c (tree_lower_complex): Likewise.
16771         * vec.h (VEC_safe_grow_cleared): New.
16772
16773 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
16774
16775         * c-common.c (c_common_nodes_and_builtins): Since variants of
16776         void_type_node get built before it is given a name, we need to
16777         give those variants the name, too.
16778         (complete_array_type): We need to work with the canonical main
16779         type of the array, from which we will build the qualified version.
16780         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
16781         * print-tree.c (print_node): Display canonical type information
16782         for each type.
16783         * stor-layout.c (layout_type): When we don't know the
16784         alignment of a type for which we're building an array, we end up
16785         guessing wrong, so make the type require structural equality.
16786         * tree.c (make_node_stat): When we build a new type, it is its
16787         own canonical type.
16788         (build_type_attribute_qual_variant): When building an attribute
16789         variant, its canonical type is the non-attribute variant. However,
16790         if the attributes are target-dependent and they differ, we need to
16791         use structural equality checks for this type.
16792         (build_qualified_type): A qualified type is not equivalent to its
16793         unqualified variant; set the canonical type appropriately.
16794         (build_distinct_type_copy): When building a distinct type from
16795         another type, the new type is its own canonical type.
16796         (build_variant_type_copy): When building a new type variant, we
16797         assume that it is equivalent to the original type.
16798         (build_pointer_type_for_mode): When building a pointer type, also
16799         build a canonical type pointer.
16800         (build_reference_type_for_mode): When building a reference type,
16801         also build a canonical type reference.
16802         (build_index_type): When we can't hash an index type (e.g.,
16803         because its maximum value is negative), the index type requires
16804         structural equality tests.
16805         (build_array_type): Build the canonical form of an array type.
16806         (build_function_type): Function types require structural equality,
16807         because they contain default arguments, attributes, etc.
16808         (build_method_type_directly): Ditto for method types.
16809         (build_offset_type): Build the canonical offset type.
16810         (build_complex_type): Build the canonical vector type.
16811         (make_vector_type): Build the canonical vector type.
16812         * tree.h (TYPE_CANONICAL): New.
16813         (TYPE_STRUCTURAL_EQUALITY_P): New.
16814         (SET_TYPE_STRUCTURAL_EQUALITY): New.
16815         (struct tree_type): Added "canonical" field.
16816         * params.h (VERIFY_CANONICAL_TYPES): New.
16817         * doc/c-tree.texi (TYPE_CANONICAL): Document.
16818         (TYPE_STRUCTURAL_EQUALITY_P): Document.
16819         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
16820         * doc/invoke.texi (verify-canonical-types): Document --param
16821         parameter for verifying canonical types.
16822
16823 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
16824
16825         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
16826         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
16827         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
16828         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
16829         tm_file.
16830         * config/rs6000/e500.h: New.
16831         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
16832         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
16833         Remove.
16834         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
16835         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
16836         TARGET_E500_DOUBLE): Remove.
16837         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
16838         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
16839         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
16840         * config/rs6000/rs6000.c (rs6000_override_options): Use
16841         CHECK_E500_OPTIONS.
16842
16843 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
16844
16845         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
16846         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
16847         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
16848         rs6000_emit_cmove): Don't check TARGET_E500.
16849         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
16850         sordered): Don't check TARGET_E500.
16851
16852 2007-01-01  Eric Christopher  <echristo@apple.com>
16853
16854         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
16855         HARD_REGISTER_NUM_P.
16856
16857 2007-01-01  Roger Sayle  <roger@eyesopen.com>
16858
16859         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
16860         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
16861         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
16862         eq/ne Y".
16863
16864 2007-01-01  Mike Stump  <mrs@apple.com>
16865
16866         * configure.ac: Remove support for building with Apple's gcc-3.1.
16867
16868 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
16869
16870         PR middle-end/30311
16871         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
16872         REG is a hard register.  Do not modify REG before calling
16873         subreg_nregs.
16874         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
16875         multiple of the size of YMODE for certain lowpart cases.
16876
16877 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
16878
16879         PR middle-end/30253
16880         * gimplify (voidify_wrapper_expr): Update for
16881         GIMPLE_MODIFY_STMT.
16882
16883 2007-01-01  Andreas Schwab  <schwab@suse.de>
16884
16885         PR target/29166
16886         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
16887         save of BR0 in extra_spill_size instead of spill_size.
16888         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
16889         area.
16890         (ia64_expand_epilogue): Restore BR0 from its new location.
16891
16892 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
16893
16894         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
16895         Use a temporary variable if the left hand side is not a gimple
16896         register.
16897
16898 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
16899
16900         * gimplify.c (gimplify_return_expr): Make the temporary variable
16901         for the return expression, a gimple register variable.
16902
16903 2007-01-01  Jan Hubicka  <jh@suse.cz>
16904
16905         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
16906         INSN_LIST.
16907
16908 2007-01-01  Mike Stump  <mrs@apple.com>
16909
16910         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
16911         .literal16.
16912         * config/darwin.c (machopic_select_rtx_section): Use
16913         HAVE_GAS_LITERAL16.
16914         (darwin_mergeable_constant_section): Likewise.
16915         * configure: Regenerate.
16916         * config.in: Regenerate.
16917
16918 2007-01-01  Jan Hubicka  <jh@suse.cz>
16919             Andrew Pinski  <pinskia@gmail.com>
16920
16921         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
16922         before starting IPA passes.