OSDN Git Service

PR tree-optimization/32367
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-11  Sebastian Pop  <sebpop@gmail.com>
2
3         PR tree-optimization/32367
4         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
5         of the chrec has no evolution in that loop.
6         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
7
8 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
9
10         * config/xtensa/xtensa.c: Include "df.h".
11         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
12         (xtensa_va_start): Invoke make_tree with sizetype for
13         expand_builtin_saveregs and then convert the result to a pointer.
14         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
15         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
16         Subtract argument size from index value as integers and then use
17         POINTER_PLUS_EXPR to add the result to the array address.
18         
19 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
20
21         PR target/32335
22         * config/m32c/m32c.c: Include dataflow header file.
23         (m32c_emit_prologue): Adjust for prologue insn change.
24         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
25         once inside a PARALLEL. Assume frame size passed in operand 0
26         includes space to save the fb register.
27         (prologue_enter_24): Likewise.
28         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
29
30 2007-06-19  David Daney  <ddaney@avtrex.com
31
32         PR target/32313
33         * config/mips/mips.md (cprestore): Mark $gp as used.
34
35 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
36
37         PR target/32369
38         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
39         (frv_ifcvt_modify_insn): Likewise.
40
41 2007-06-19  Richard Guenther  <rguenther@suse.de>
42
43         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
44         only handle positive offsets that fit in a HOST_WIDE_INT.
45
46 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
47
48         * config/i386/i386.c (ix86_emit_swsqrtsf): Limit the result of
49         rsqrt insn to FLT_MAX to avoid NaN for zero input argument.
50
51 2007-06-19  Richard Guenther  <rguenther@suse.de>
52
53         PR middle-end/31950
54         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
55
56 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
57
58         PR tree-optimization/32353
59         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
60
61 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
62
63         PR target/32389
64         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
65         * config/i386/i386.c (assign_386_stack_local): Assert that
66         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
67         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
68         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
69         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
70
71 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
72
73         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
74
75 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
76
77         PR rtl-optimization/32321
78         * gcse.c (replace_store_insn): Update the note before
79         calling emit_insn_after.
80
81 2007-06-18  David Daney  <ddaney@avtrex.com
82
83         Revert:
84
85         2007-06-18  David Daney  <ddaney@avtrex.com
86
87         PR target/32313
88         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
89         local function call.
90
91 2007-06-18  David Daney  <ddaney@avtrex.com
92
93         PR target/32313
94         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
95         local function call.
96
97 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
98
99         PR middle-end/32355
100         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
101         cse_main.
102         * df-problems.c (df_note_bb_compute): Fix dumping info.
103         
104 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
105
106         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
107         insn with emit_jump_insn.
108
109 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
110
111         PR tree-optimization/32383
112         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
113         * targhooks.h (default_builtin_reciprocal): Update prototype.
114         * target.h (struct gcc_target): Update builtin_reciprocal.
115         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
116         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
117         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
118         when fndecl is in BUILT_IN_MD class.
119         (execute_convert_to_rsqrt): Ditto.
120
121         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
122         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
123         Convert BUILT_IN_SQRTF code only  when md_fn is false.
124
125 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
126
127         * bt-load.c (move_btr_def): Fix the order of arguments
128         to validate_replace_rtx.
129
130 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
131
132         * config/m68k/m68k-devices.def: Add 54450..54455.
133
134 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
135
136         PR rtl-optimization/32366
137         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
138         FLOAT_EXTEND]: Prevent non-scalar modes from entering
139         significand_size.
140
141 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
142
143         PR middle-end/32349
144         * modulo-sched (generate_reg_moves): Added rescan parameter and if
145         this is true, rescan insn being modified.
146         (sms_schedule): Added rescan parameter.
147         (rest_of_handle_sms): Moved freeing of dominance info to before
148         getting out of cfg_layout.
149         
150 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
151
152         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
153         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
154         appropriate.
155
156         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
157         FL_CF_EMAC from the entry for isac.
158
159         * config/m68k/predicates.md (const_call_operand): Adjust comment.
160         (const_sibcall_operand): New.
161         (sibcall_operand): Use it.
162         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
163         (m68k_isas): ISAC does not imply FPU or EMAC.
164         (override_options): Add ISA_C logic for symbolic jump & call.
165
166 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
167
168         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
169         return mode from the builtin itself.
170         (sparc_fold_builtin): Fix cast of zero constant.
171
172 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
173
174         * targhooks.c (default_builtin_reciprocal): New default target hook.
175         * targhooks.h (default_builtin_reciprocal): Add prototype.
176         * hooks.c (hook_tree_tree_bool_null): Remove hook.
177         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
178         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
179         default_builtin_reciprocal.
180
181 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
182
183         PR middle-end/31723
184         * hooks.c (hook_tree_tree_bool_null): New hook.
185         * hooks.h (hook_tree_tree_bool_null): Add prototype.
186         * tree-pass.h (pass_convert_to_rsqrt): Declare.
187         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
188         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
189         and convert it to reciprocal a*rfunc(b).
190         (execute_convert_to_rsqrt): New function.
191         (gate_convert_to_rsqrt): New function.
192         (pass_convert_to_rsqrt): New pass definition.
193         * target.h (struct gcc_target): Add builtin_reciprocal.
194         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
195         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
196         TARGET_BUILTIN_RECIPROCAL.
197         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
198
199         * config/i386/i386.h (TARGET_RECIP): New define.
200         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
201         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
202         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
203         and not optimizing for size.
204         (*rcpsf2_sse): New insn pattern.
205         (*rsqrtsf2_sse): Ditto.
206         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
207         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
208         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
209         and not optimizing for size.
210         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
211         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
212         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
213         and not optimizing for size.
214         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
215         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
216         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
217         and not optimizing for size.
218         (*sse_rsqrtv4sf2): Do not export.
219         (sqrtv4sf2): Ditto.
220         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
221         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
222         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
223         and not optimizing for size.
224         (sqrtv4sf2): Ditto.
225         * config/i386/i386.opt (mrecip): New option.
226         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
227         (ix86_emit_swsqrtsf): Ditto.
228         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
229         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
230         builtin definition.
231         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
232         ix86_expand_unop1_builtin.
233         (ix86_emit_swdivsf): New function.
234         (ix86_emit_swsqrtsf): Ditto.
235         (ix86_builtin_reciprocal): New function.
236         (TARGET_BUILTIN_RECIPROCAL): Use it.
237         (ix86_vectorize_builtin_conversion): Rename from
238         ix86_builtin_conversion.
239         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
240         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
241         "i386 and x86_64 Options" section.
242         (Intel 386 and AMD x86_64 Options): Document -mrecip.
243
244 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
245             Zdenek Dvorak <dvorakz@suse.cz>
246             Richard Guenther  <rguenther@suse.de>
247             Kaz Kojima  <kkojima@gcc.gnu.org>
248
249         * tree-vrp.c (compare_values_warnv): Convert val2 to
250         the type of val1.
251         (extract_range_from_assert): Create
252         POINTER_PLUS_EXPR for pointer types.
253         (extract_range_from_binary_expr): Handle
254         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
255         for pointer types.
256         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
257         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
258         POINTER_PLUS_EXPR as PLUS_EXPR.
259         (number_of_iterations_lt_to_ne):
260         For pointer types, use sizetype when
261         creating MINUS_EXPR/PLUS_EXPRs.
262         (assert_loop_rolls_lt): For pointer types, use sizetype when
263         creating MINUS_EXPR/PLUS_EXPRs.
264         (number_of_iterations_le): Likewise.
265         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
266         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
267         like PLUS_EXPR and MINUS_EXPR.
268         * tree-pretty-print.c (dump_generic_node): Handle
269         POINTER_PLUS_EXPR.
270         (op_prio): Likewise.
271         (op_symbol_1): Likewise.
272         * optabs.c (optab_for_tree_code): Likewise.
273         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
274         specially.
275         * tree-tailcall.c (process_assignment): Mention
276         POINTER_PLUS_EXPR in a TODO comment.
277         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
278         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
279         not used with a pointer and an integer type.
280         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
281         increment using chrec_convert_rhs instead of chrec_convert.
282         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
283         PLUS_EXPR except for the right hand side's type will be
284         sizetype.
285         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
286         (fold_used_pointer_cast): Kill.
287         (pointer_offset_p): Kill.
288         (fold_used_pointer): Kill.
289         (pointer_used_p): Kill.
290         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
291         call fold_used_pointer.
292         (instantiate_parameters_1): Convert the increment
293         using chrec_convert_rhs instead of chrec_convert.
294         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
295         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
296         instead of PLUS_EXPR.
297         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
298         PLUS_EXPR for pointers.
299         (std_gimplify_va_arg_expr): Likewise.
300         (fold_builtin_memory_op): Likewise.
301         (fold_builtin_strstr): Likewise.
302         (fold_builtin_strchr): Likewise.
303         (fold_builtin_strrchr): Likewise.
304         (fold_builtin_strpbrk): Likewise.
305         (expand_builtin_memory_chk): Likewise.
306         (fold_builtin_memory_chk): Likewise.
307         (std_expand_builtin_va_start): Use
308         sizetype for the call to make_tree and then convert
309         to the pointer type.
310         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
311         instead of PLUS_EXPR for adding to a pointer.
312         (std_gimplify_va_arg_expr): Use fold_build2 for
313         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
314         the operands to sizetype first and then cast the BIT_AND_EXPR
315         back to the pointer type.
316         * fold-const.c (build_range_check): Handle pointer types
317         specially.
318         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
319         of PLUS_EXPR's. Make sure the offset is converted to
320         sizetype.
321         (try_move_mult_to_index): Strip the NOPs from the offset.
322         Remove code argument and replace all uses with PLUS_EXPR.
323         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
324         specially. Don't use a pointer type for MINUS_EXPR.
325         (fold_unary): Handle for (T1)(X op Y),
326         only p+ as that is the only as that can be handled for
327         binary operators now.
328         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
329         POINTER_PLUS_EXPR.
330         <case PLUS_EXPR>: Add folding of PTR+INT into
331         PTR p+ INT.
332         Don't call try_move_mult_to_index.
333         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
334         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
335         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
336         Don't call try_move_mult_to_index.
337         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
338         (tree_expr_nonzero_p): Likewise.
339         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
340         of PLUS_EXPR for the complex expression folding.
341         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
342         first chrec is a pointer type, then the second should
343         be sizetype and not the first's type.
344         For POINTER_PLUS_EXPR, use a different right hand side type.
345         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
346         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
347         different right hand side type.
348         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
349         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
350         instead of PLUS_EXPR.
351         When either operand is zero, convert the other operand.
352         (chrec_apply): Use chrec_convert_rhs
353         on the argument x instead of chrec_convert.
354         (reset_evolution_in_loop): For pointer types, the new_evol
355         should be sizetype.
356         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
357         different right hand side type.
358         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
359         (chrec_convert_rhs): New function.
360         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
361         different right hand side type.
362         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
363         * tree-chrec.h (chrec_convert_rhs): New prototype.
364         (build_polynomial_chrec): For pointer types, the right hand
365         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
366         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
367         Remove subtraction case as it is always addition now.
368         Make sure the offset is converted to sizetype.
369         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
370         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
371         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
372         PLUS_EXPR in pointer type.
373         Handle POINTER_PLUS_EXPR.
374         (tree_to_aff_combination): Likewise.
375         (force_expr_to_var_cost): Likewise.
376         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
377         instead of PLUS_EXPR for pointers.
378         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
379         instead of PLUS_EXPR of pointer types.
380         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
381         as PLUS_EXPR.
382         (check_va_list_escapes): Likewise.
383         (check_all_va_list_escapes): Likewise.
384         * dwarf2out.c (loc_descriptor_from_tree_1):
385         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
386         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
387         (string_constant): Likewise.
388         * tree-ssa-address.c (tree_mem_ref_addr): When adding
389         the offset to the base, use POINTER_PLUS_EXPR.
390         (add_to_parts): Convert the index to sizetype.
391         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
392         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
393         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
394         Offset only holds something for PLUS_EXPR.
395         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
396         a PLUS_EXPR.
397         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
398         and not PLUS_EXPR.
399         (analyze_accesses_for_modify_stmt): Likewise.
400         Remove comment about the type being integral type as it is
401         wrong now.
402         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
403         PLUS_EXPR.
404         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
405         and not PLUS_EXPR.
406         Correct the type which the artimentic is done in (is now
407         sizetype).
408         Reindent one loop.
409         * tree-data-ref.c (split_constant_offset): Handle
410         POINTER_PLUS_EXPR
411         * tree-affine.c (tree_to_aff_combination): Likewise.
412         * c-typeck.c (build_unary_op): For pointers create the increment
413         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
414         for pointers.
415         * gimplify.c (gimplify_self_mod_expr): Create a
416         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
417         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
418         * tree.def (POINTER_PLUS_EXPR): New tree code.
419         * tree-predcom.c (ref_at_iteration): If we have a pointer
420         type do the multiplication in sizetype.
421         * tree-mudflap.c (mf_xform_derefs_1): Create a
422         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
423         * tree-ssa-forwprop.c 
424         (forward_propagate_addr_into_variable_array_index):
425         Don't expect there to be a cast for the index as that
426         does not exist anymore.
427         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
428         instead of PLUS_EXPR.
429         Don't check for the first operand of the POINTER_PLUS_EXPR
430         was the index as it cannot be.
431         Call forward_propagate_addr_into_variable_array_index with
432         the SSA_NAME instead of the statement.
433         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
434         (compare_constant): Likewise.
435         (copy_constant): Likewise.
436         (compute_reloc_for_constant): Likewise.
437         (output_addressed_constants): Likewise.
438         (initializer_constant_valid_p): Likewise.
439         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
440         Convert the MIN/MAX of the inner type to the outer
441         type before comparing them.
442         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
443         POINTER_PLUS_EXPR instead of PLUS_EXPR.
444         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
445         of PLUS_EXPR for pointers.
446         * tree-inline.c (estimate_num_insns_1): Handle
447         POINTER_PLUS_EXPR.
448         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
449         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
450         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
451         instead of PLUS_EXPR for the pointer increment statement.
452         (vect_update_ivs_after_vectorizer): For pointer types, create
453         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
454         MULT_EXPR in sizetype.
455         (vect_gen_niters_for_prolog_loop): Add a cast when creating
456         byte_misalign.
457         * tree-object-size.c (plus_expr_object_size): Handle
458         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
459         code which is trying to figure out which side is a pointer and 
460         is the index.
461         (check_for_plus_in_loops_1): Likewise.
462         (check_for_plus_in_loops): Likewise.
463         * c-common.c (pointer_int_sum): Create a
464         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
465         * tree-ssa-structalias.c (handle_ptr_arith): Handle
466         only POINTER_PLUS_EXPR.  Removing all the extra
467         code which is trying to figure out which side is a pointer and 
468         is the index.
469         * tree-cfg.c (verify_expr): Add extra checking for pointers and
470         PLUS_EXPR and MINUS_EXPR.
471         Also add checking to make sure the operands of POINTER_PLUS_EXPR
472         are correct.
473         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
474         with make_tree, instead of a pointer type.
475         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
476         for pointers instead of PLUS_EXPR.
477         (s390_gimplify_va_arg): Likewise.
478         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
479         instead of PLUS_EXPR when doing addition on pointer
480         types.  Use sizetype for the second operand.
481         (spu_gimplify_va_arg_expr): Likewise.
482         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
483         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
484         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
485         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
486         for the pointer addition and also use size_int/sizetype
487         for the offset.
488         (ix86_gimplify_va_arg): Likewise.
489         Perform BIT_AND_EXPR on sizetype arguments.
490         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
491         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
492         for the pointer additions and also use size_int for the offsets.
493         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
494         additions and also use size_int for the offsets.  Perform
495         BIT_AND_EXPR on sizetype arguments.
496         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
497         POINTER_PLUS_EXPR for pointers and create the
498         BIT_AND_EXPR in sizetype.
499         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
500         instead of PLUS_EXPR for pointer addition.
501         (rs6000_va_start): Likewise.
502         Also use sizetype for the offset.
503         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
504         as PLUS_EXPR/MINUS_EXPR.
505         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
506         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
507         Don't use BIT_AND_EXPR on a pointer type, convert the
508         expression to sizetype first.
509         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
510         for pointers.
511         (mips_gimplify_va_arg_expr): Likewise.
512         Don't create BIT_AND_EXPR in a pointer type.
513
514 2007-06-15  Eric Christopher  <echristo@apple.com>
515
516         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
517         (x86_64-*-darwin*): Ditto.
518         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
519         for above.
520
521 2007-06-15  Matthew Wilcox <matthew@wil.cx>
522
523         * doc/extend.texi: Document behavior of __attribute__((aligned))
524         on typedefs.
525
526 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
527
528         * rtlanal.c (note_stores): Improve documentation.
529
530 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
531
532         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
533         LOCAL_LABEL_PREFIX): Delete.
534         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
535         (bfin_internal_label): Delete.
536
537 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
538
539         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
540         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
541         otherwise define to LIBGCC2_TF_CEXT.
542         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
543         (LIBGCC_TF_CEXT): Ditto.
544         (TF_SIZE): Ditto.
545
546 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
547
548         PR rtl-optimization/32339
549         * df-scan.c (df_uses_record): Don't modify flags but just add to
550         it for df_ref_record.
551
552 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
553
554         * tree-mudflap.c: Fix whitespace issues.
555
556 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
557
558         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
559
560 2007-06-14  Eric Christopher  <echristo@apple.com>
561
562         * config/i386/sse.md (movdi_to_sse): Rewrite body.
563         (movv4sf): Use gcc_unreachable instead of abort.
564
565 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
566
567         PR target/32268
568         * config/i386/sfp-machine.h (CMPtype): New define.
569         (mach stubs): Use CMPtype instead of int as a return type.
570
571 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
572
573         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
574         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
575         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
576         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
577         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
578         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
579         config/soft-fp/soft-fp.h: Update from glibc CVS.
580
581 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
582
583         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
584
585 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
586
587         PR target/32341
588         * config/v850/v850.c: Include dataflow header file.
589         (substitute_ep_register): Fix typo.
590
591 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
592
593         * configure.ac: Fix earlier checkin.
594         * configure: Regenerated.
595
596 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
597
598         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
599         * aclocal.m4: Regenerate.
600         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
601         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
602         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
603         * configure: Regenerate.
604         * Makefile.in (LOOSE_WARN): Subst loose_warn.
605
606         * Makefile.in (quickstrap): Build libgcc too.
607
608 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
609
610         * configure.ac: Add --enable-checking=df.  Explicitly mention that
611         the variables are initialized as for "release".
612         * df-core.c: Use it.
613         * configure: Regenerate.
614         * config.in: Regenerate.
615
616 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
617
618         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
619         validate_replace_rtx instead of replace_rtx.
620         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
621
622 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
623
624         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
625         (DWARF2_UNWIND_INFO): Override default if configured with
626         SJLJ EH disabled.
627         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
628         (ENDFILE_SPEC): Add crtend.o.
629         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
630         (ENDFILE_SPEC): Add crtend.o.
631         (TARGET_USE_JCR_SECTION): Define.
632         (MD_UNWIND_SUPPORT): Define for 32-bit target.
633
634         * config/i386/cygming-crtbegin.c: New file.
635         * config/i386/cygming-crtend.c: New file.
636
637 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
638
639         * config/i386/w32-unwind.h: New file.
640
641 2007-06-13  Eric Christopher  <echristo@apple.com>
642
643         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
644         the user set a value below STACK_BOUNDARY.
645
646 2007-06-13  Thiemo Seufer  <ths@networkno.de>
647
648         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
649         imply -lpthread for -pthread.
650
651 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
652
653         * basic-block.h: Remove the prototype for
654         free_basic_block_vars.
655         * cfglayout.h: Remove the prototype for
656         insn_locators_initialize.
657         * tree.h: Remove the prototype for emit_line_note.
658
659         * tree-ssa-pre.c (mergephitemp): Remove.
660         (init_pre): Don't use mergephitemp.
661
662 2007-06-13  Eric Christopher  <echristo@apple.com>
663
664         * config/i386/i386.c (override_options): If we've specified
665         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
666
667 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
668
669         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
670         is defined.
671
672 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
673
674         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
675         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
676         (eh_store_handler): New pattern.
677         (eh_return): Emit it instead of a plain move.
678
679 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
680
681         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
682         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
683         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
684         def_builtin_const.
685
686 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
687
688         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
689         (find_next_insn_start, find_load): New functions.
690         (bfin_reorg): Use them to deal with the fact that parallel insns are
691         no longer represented as a SEQUENCE.
692
693 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
694
695         * config/sparc/sparc.c (sparc_override_options): Initialize
696         fpu mask correctly.
697
698 2007-06-13  Dave Korn  <dave.korn@artimi.com>
699
700         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
701         df_get_live_out.
702
703 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
704
705         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
706         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
707         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
708         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
709         tree-vect-transform.c: Fix comment typos.  Follow spelling
710         conventions.
711
712 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
713
714        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
715        to the exit block use set.
716        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
717        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
718
719 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
720
721         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
722         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
723         to indicate an error.
724         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
725         (dbg_cnt_process_opt): Print an error on a bad argument.
726         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
727         * common.opt (-fdbg-cnt-list): New.
728         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
729
730 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
731
732         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
733         flag on ref-all pointers.
734
735 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
736
737         PR middle-end/31579
738         * expr.c (expand_expr_addr_expr_1): Call expand_expr
739         for the offset with the modifier as EXPAND_INITIALIZER
740         if the modifier is EXPAND_INITIALIZER.
741         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
742         a register if we had an overflow.
743
744 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
745
746         * real.c (real_isfinite): New.
747         (real_sqrt): Use it.
748         * real.h (real_isfinite): New.
749         * builtins.c: Use it.
750
751 2007-06-12  Ian Lance Taylor  <iant@google.com>
752             Daniel Berlin  <dberlin@dberlin.org>
753
754         PR libstdc++/29286
755         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
756         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
757         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
758         (DECL_NO_TBAA_P): Define.
759         (struct tree_decl_common): Add no_tbaa_flag field.
760         * tree-ssa-structalias.c (struct variable_info): Add
761         no_tbaa_pruning field.
762         (new_var_info): Initialize no_tbaa_pruning field.
763         (unify_nodes): Copy no_tbaa_pruning field.
764         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
765         (dump_solution_for_var): Print no_tbaa_pruning flag.
766         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
767         callers.
768         (compute_tbaa_pruning): New static function.
769         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
770         Call compute_tbaa_pruning.
771         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
772         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
773         * gimple-low.c (lower_stmt): Likewise.
774         * tree-gimple.c (is_gimple_stmt): Likewise.
775         * tree-ssa-operands.c (get_expr_operands): Likewise.
776         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
777         * tree-inline.c (estimate_num_insns_1): Likewise.
778         (copy_result_decl_to_var): Likewise.
779         * expr.c (expand_expr_real_1): Likewise.
780         * tree-pretty-print.c (dump_generic_node): Likewise.
781         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
782         * omp-low.c (omp_copy_decl_2): Likewise.
783         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
784         * doc/c-tree.texi (Expression trees): Document
785         CHANGE_DYNAMIC_TYPE_EXPR.
786
787 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
788
789         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
790         with !HONOR_NANS and !HONOR_INFINITIES.
791         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
792
793 2007-06-12  Tristan Gingold  <gingold@adacore.com>
794
795         * gcov.c: Comments updated.
796         (source_info): Add file_time field.
797         (source_index): New variable.
798         (mutiple_files): New variable.
799         (generate_results): New function extracted from process_file.
800         (process_file): Save and restore chain of functions, generate
801         results and free structures only if not merging results.
802         (release_structures): File names are now freed in create_file_names
803         (create_file_names): Free previous file names.
804         (find_source): File date is now read here and modifications in
805         source files is checked here.
806         (read_graph_file): Only reverse order of functions for the current
807         object file.
808         (make_gcov_file_name): Do not generate long names if input_name is
809         NULL.
810         (output_lines): If merging results do not display graph, data and
811         runs informations.
812         Checking source file modification is done in find_source.
813
814         * doc/gcov.texi: Append an s to sourcefile.
815
816 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
817
818         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
819         (forced_nop): New pattern.
820         * config/bfin/bfin.c: Include "df.h".
821         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
822         (bfin_discover_loop): Use df_get_live_in instead of
823         global_live_at_start.
824         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
825         df_analyze when done.
826         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
827         the insns.  Use QImode for the final insn in a bundle.  Call
828         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
829         gen_nop.
830         (reorder_var_tracking_notes): New function.
831         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
832         update_life_info.  Call df_analyze after scheduling and bundle
833         generation.  Call reorder_var_tracking_notes if generating these notes.
834         Call df_finish_pass at the end.
835
836 2007-06-12  Dirk Mueller  <dmueller@suse.de>
837
838         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
839         a comparison, not an assignment.
840
841 2007-06-12  Olivier Hainque  <hainque@adacore.com>
842
843         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
844         Request walking the subtrees only, leaving the current is_lhs/val_only
845         untouched.
846         (convert_non_local_reference): Likewise.
847
848 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
849
850         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
851
852 2007-06-12  Richard Guenther  <rguenther@suse.de>
853
854         PR tree-optimization/15353
855         PR tree-optimization/31657
856         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
857         * timevar.def: Add TV_TREE_IFCOMBINE.
858         * tree-pass.h (pass_tree_ifcombine): Declare.
859         * tree-ssa-ifcombine.c: New file.
860         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
861         * tree-flow.h (blocks_in_phiopt_order): Declare.
862         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
863         (tree-ssa-ifcombine.o): New dependencies.
864
865 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
866
867         PR rtl-optimization/32293
868         * combine.c (simplify_if_then_else): Truncate return from
869         nonzero_bits() to correct mode.
870
871 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
872
873         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
874         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
875
876 2007-06-11  Diego Novillo  <dnovillo@google.com>
877
878         * Makefile.in (reload1.o-warn): Remove.
879
880 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
881
882         * combine.c (subst): Use reg_overlap_mentioned_p
883         instead of comparing register numbers directly.
884
885 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
886
887         * reload1.c (mark_home_live_1): Use the mode parameter.
888
889 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
890
891         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
892         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
893         word "deferred".
894         * df-core.c: Ditto.
895
896 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
897
898         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
899
900 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
901
902         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
903         from integer registers.
904         (FP mode splitters): Handle TFmode.
905
906 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
907
908         * tree-ssa-structalias.c (find_what_p_points_to): Return false
909         for ref-all pointers that point-to anything.
910
911 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
912
913         * config/arm/arm.c (arm_output_dwarf_dtprel,
914         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
915
916 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
917
918         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
919         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
920         to memory moves.
921
922 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
923
924         * gcc/tree.c (signed_or_unsigned_type_for): New.
925         (unsigned_type_for): Use signed_or_unsigned_type_for.
926         (signed_type_for): Use signed_or_unsigned_type_for.
927         * gcc/tree.h (signed_or_unsigned_type_for): New.
928         (get_signed_or_unsigned_type): Remove.
929         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
930         lang_hooks.types.signed_type
931         (size_diffop): Likewise.
932         (all_ones_mask_p): Likewise.
933         (build_range_check): Likewise.
934         (fold_cond_expr_with_comparison): Likewise.
935         (fold_cond_expr_with_comparison): Likewise.
936         (unextend): Likewise.
937         (extract_muldiv_1): Likewise.
938         (fold_single_bit_test_into_sign_test): Likewise.
939         (fold_binary): Likewise.
940         (fold_ternary): Likewise.
941         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
942         instead of get_signed_or_unsigned_type.
943         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
944         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
945         * gcc/expr.c (signed_or_unsigned_type_for): Use
946         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
947         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
948         (lhd_signed_or_unsigned_type): Remove.
949         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
950         signed_or_unsigned_type.
951         (lhd_signed_or_unsigned_type): Remove.
952         * gcc/expmed.c (make_tree): Use signed_type_for instead of
953         lang_hooks.types.signed_type.
954         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
955         c_common_signed_type instead of lang_hooks.types.signed_type.
956         (c_common_unsigned_type): New.
957         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
958         (shorten_compare): Use c_common_unsigned_type instead of
959         c_common_signed_or_unsigned_type.
960         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
961         unsigned_type_for.
962         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
963         lang_hooks.types.signed_type.
964         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
965         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
966         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
967         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
968         instead of unsigned_type_for.
969         * gcc/c-decl.c (groakdeclarator): Likewise.
970         * gcc/c-typeck.c (convert_for_assignment): Likewise.
971         * gcc/c-common.h (c_common_unsigned_type): New.
972
973 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
974
975         PR target/32280
976         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
977         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
978
979 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
980
981         PR middle-end/32279
982         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
983         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
984
985 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
986             Sebastian Pop  <sebpop@gmail.com>
987
988         * lambda-code.c (remove_iv): New.
989         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
990
991 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
992
993         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
994         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
995         * tree-ssa-loop-prefetch.c: Include optabs.h.
996         (FENCE_FOLLOWING_MOVNT): New macro.
997         (struct mem_ref): Add independent_p and storent_p fields.
998         (record_ref): Initalize the new fields.
999         (gather_memory_references_ref): Return true if the reference
1000         could be analysed.
1001         (gather_memory_references): Check whether all memory accesses
1002         in loop were recorded.
1003         (should_issue_prefetch_p): Return false for nontemporal stores.
1004         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
1005         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
1006         (determine_loop_nest_reuse): Detect independent memory references.
1007         (loop_prefetch_arrays): Call mark_nontemporal_stores.
1008         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
1009         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
1010         * config/i386/i386.h (x86_mfence): Declare.
1011         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
1012         * config/i386/i386.c (x86_mfence): New variable.
1013         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
1014
1015         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
1016         * optabs.c (init_optabs): Initialize storent_optab.
1017         * optabs.h (enum optab_index): Add OTI_storent.
1018         (storent_optab): Declare.
1019         * genopinit.c (optabs): Add initialization for storent_optab.
1020         * tree.h (MOVE_NONTEMPORAL): New macro.
1021         * expr.c (expand_assignment, store_expr, store_constructor_field,
1022         store_constructor, store_field, expand_expr_real_1): Propagate
1023         nontemporality of the expanded store.
1024         (emit_storent_insn): New function.
1025         * expr.h (expand_assignment, store_expr): Declaration changed.
1026         * function.c (assign_parm_setup_reg): Pass false as nontemporality
1027         to expand_assignment.
1028         * stmt.c (expand_asm_expr): Ditto.
1029         * calls.c (initialize_argument_information): Pass false as
1030         nontemporality to store_expr.
1031         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
1032         storentsi): New.
1033
1034 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1035
1036         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
1037         parameter, use it.
1038         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
1039
1040 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1041
1042         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
1043         and allow DECL_P here.
1044
1045 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
1046
1047         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
1048         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
1049         track of the size of the expression.
1050         * cfghooks.c (merge_blocks): Remove block from loops structure only
1051         after call of the merge_blocks hook.
1052
1053 2007-06-09  Tom Tromey  <tromey@redhat.com>
1054
1055         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
1056         (deprecated_state): Removed.
1057         (start_decl): Update.
1058         (enum deprecated_states): Moved earlier.
1059         (groktypename): Update.
1060         (push_parm_decl): Likewise.
1061         (grokfield): Likewise.
1062         (start_function): Likewise.
1063
1064 2007-06-09  Ian Lance Taylor  <iant@google.com>
1065
1066         PR tree-optimization/32169
1067         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
1068         CONVERT_EXPR, check whether min and max both converted to an
1069         overflow infinity representation.
1070
1071 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
1072
1073         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
1074         not inserted on the edge.
1075
1076 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
1077
1078         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
1079         instructions if they are supported.
1080         (__divsi3, __umodsi3, __modsi3): Likewise.
1081         (__ashldi3, __ashrdi3, __lshrdi3): New.
1082         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
1083
1084 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
1085             Tony Linthicum <tony.linthicum@amd.com>
1086
1087         * doc/extend.texi: Add fvect-cost-model flag.
1088         * common.opt (fvect-cost-model): New flag.
1089         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
1090         cost fields in stmt_vec_info struct for STMT.
1091         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
1092         fields in stmt_vec_info struct and access functions for the same.
1093         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
1094         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
1095         load, store and vector to scalar operation.
1096         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
1097         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
1098         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
1099         (TARG_VEC_STORE_COST): Define cost of vector store.
1100         (vect_estimate_min_profitable_iters): Define new function.
1101         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
1102         check to evaluate if loop iterations are less than minimum profitable
1103         iterations determined by cost model or minimum vect loop bound defined
1104         by user, whichever is more conservative.
1105         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
1106         run-time check to evaluate if loop iterations are less than minimum
1107         profitable iterations determined by cost model or minimum vect loop
1108         bound defined by user, whichever is more conservative.
1109         (vect_estimate_min_profitable_iterations): New function to estimate
1110         mimimimum iterartions required for vector version of loop to be
1111         profitable over scalar version.
1112         (vect_model_reduction_cost): New function.
1113         (vect_model_induction_cost): New function.
1114         (vect_model_simple_cost): New function.
1115         (vect_cost_strided_group_size): New function.
1116         (vect_model_store_cost): New function.
1117         (vect_model_load_cost): New function.
1118         (vectorizable_reduction): Call vect_model_reduction_cost during
1119         analysis phase.
1120         (vectorizable_induction): Call vect_model_induction_cost during
1121         analysis phase.
1122         (vectorizable_load): Call vect_model_load_cost during analysis phase.
1123         (vectorizable_store): Call vect_model_store_cost during analysis phase.
1124         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
1125         vectorizable_promotion, vectorizable_demotion): Call
1126         vect_model_simple_cost during analysis phase.
1127
1128 2007-06-08  Simon Baldwin  <simonb@google.com>
1129
1130         * reg-stack.c (get_true_reg): Readability change.  Moved default case
1131         label into direct switch statement scope.
1132
1133 2007-06-08  Simon Baldwin  <simonb@google.com>
1134
1135         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
1136         in gcc_assert() with '==' comparison.
1137
1138 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1139
1140         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
1141         TARGET_ABM handling of x86_popcnt variable.
1142
1143 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1144
1145         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
1146         __builtin_copysignq and __builtin_infq built-in functions.
1147
1148 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1149
1150         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
1151         SSE4.2 section.  Correct built-in function names in SSE4A section.
1152
1153 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1154
1155         PR tree-optimization/32243
1156         * tree-vect-transform.c (vectorizable_type_promotion): Move check
1157         for ncopies after ratio check between nunits_out and nunits_in.
1158         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
1159
1160 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
1161
1162         PR tree-optimization/32224
1163         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
1164         vectorization upon a non GIMPLE_MODIFY_STMT.
1165
1166 2007-06-08  Christian Bruel  <christian.bruel@st.com>
1167
1168         PR target/29953
1169         * config/sh/sh.md (doloop_end): New pattern and splitter.
1170         * loop-iv.c (simple_rhs_p): Check for hardware registers.
1171
1172 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1173
1174         PR middle-end/32209
1175         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
1176         functions.
1177         (verify_dominators): Do not change dominance tree.
1178
1179 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1180
1181         * config/sh/constraints.md: New file.
1182         * config/sh/sh.c: Include tm-constrs.h.
1183         (reg_class_from_letter): Remove.
1184         (prepare_cbranch_operands): Use satisfies_constraint_*
1185         function instead of macro.
1186         (andcosts, broken_move, sh_secondary_reload): Likewise.
1187         * config/sh/predicates.md (trapping_target_operand): Likewise.
1188         (and_operand, arith_operand, arith_reg_or_0_operand,
1189         cmp_operand, logical_operand, target_operand,
1190         ua_address_operand, ua_offset, xor_operand): Likewise.
1191         * config/sh/sh.md: Include constraints.md.
1192         (*movsicc_t_false): Use satisfies_constraint_* function
1193         instead of macro.
1194         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
1195         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
1196         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
1197         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
1198         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
1199         (REG_CLASS_FROM_CONSTRAINT): Remove.
1200         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
1201         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
1202         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
1203         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
1204         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1205         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
1206         function instead of macro.
1207         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1208         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
1209         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
1210         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
1211         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
1212         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
1213         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
1214         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
1215         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
1216         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
1217         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
1218         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
1219         EXTRA_CONSTRAINT_STR): Likewise.
1220         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
1221
1222 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1223
1224         * config/i386/darwin.h (STACK_BOUNDARY): Define.
1225
1226 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1227
1228         PR c++/30759
1229         * c-common.h (flag_cpp0x): Replaced by...
1230         (cxx_dialect): ... this new variable specifying the C++ dialect that
1231         is used.
1232         * c-common.c (flag_cpp0x): Removed.
1233         (cxx_dialect): Defined.
1234         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
1235         cxx_dialect.
1236         * c-opts.c (c_common_post_options): Likewise.
1237         (set_std_cxx98): Set cxx_dialect to cxx98.
1238         (set_std_cxx0x): Set cxx_dialect to cxx0x.
1239
1240 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1241             Hui-May Chang <hm.chang@apple.com>
1242
1243         * doc/invoke.texi (Darwin Options): Update documentation for
1244         -mmacosx-version-min.
1245         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
1246         * config/darwin-driver.c: New file.
1247         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
1248         * config/t-darwin (darwin-driver.o): New rule.
1249
1250         * config/darwin-c.c (version_as_macro): Ignore low digit.
1251
1252 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
1253
1254         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
1255         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
1256         (CSGNMODE): New mode macro.
1257         (CSGNVMODE): New mode attribute.
1258         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
1259         expander using CSGNMODE mode macro.  Handle TFmode.
1260         (copysign<mode>3_const): Rename from copysignsf3_const and
1261         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
1262         Handle TFmode.
1263         (copysign<mode>3_var): Rename from copysignsf3_var and
1264         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
1265         Handle TFmode.
1266         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
1267         mode macro.  Handle TFmode.
1268         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
1269         (iortf3, *iortf3): Ditto.
1270         (xortf3, *xortf3): Ditto.
1271         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
1272         TFmode and TImode masks.
1273         (ix86_expand_copysign): Expand TFmode copysign insn.
1274         (IX86_BUILTIN_INFQ): New.
1275         (IX86_BUILTIN_FABSQ): Ditto.
1276         (IX86_BUILTIN_COPYSIGNQ): Ditto.
1277         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
1278         [__builtin_fabsq]: Ditto.
1279         [__builtin_copysignq]: Ditto.
1280         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
1281         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
1282         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
1283         ix86_expand_binop_builtin().
1284
1285 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
1286
1287         * config/xtensa/lib1funcs.asm: Clean up whitespace.
1288
1289 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
1290
1291         PR target/31850
1292         * rtl.h (push_to_sequence2): New.
1293         * emit-rtl.c (push_to_sequence2): New.
1294         * function.c (assign_parm_data_all): Add new fields.
1295         (assign_parm_setup_block): Call push_to_sequence2 instead of
1296         push_to_sequence.
1297         (assign_parm_setup_reg): Ditto.
1298         (assign_parm_setup_stack): Ditto.
1299         (assign_parms_unsplit_complex): Ditto.
1300         (assign_parms): Change field name.
1301
1302 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
1303
1304         PR tree-optimization/32220
1305         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
1306         phi node is reached before defining statement.
1307
1308 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1309
1310         PR tree-opt/32231
1311         * tree-vect-transform.c (vectorizable_call): Call update_stmt
1312         after changing the right hand side of the assignment.
1313
1314 2007-06-06  Eric Christopher  <echristo@apple.com>
1315
1316         * config.gcc (i?86-*-darwin*): Remove arch parameter.
1317         (x86_64-*-darwin*): Ditto.
1318         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
1319         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1320
1321 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1322
1323         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
1324         coding conventions.
1325         (add_key): Likewise.
1326         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
1327         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
1328         variable names.
1329         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
1330         (add_cost_one_coalesce): Likewise.
1331         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
1332         variable names. Rename orig to orig_name for consistency.
1333         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
1334         conventions.
1335         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
1336         (record_equivalences_from_stmt): Likewise.
1337         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
1338         the coding conventions.
1339         (memory_ssa_name_same): Likewise.
1340         (dse_optimize_stmt): Likewise.
1341         (dse_record_phis): Likewise.
1342         (dse_finalize_block): Likewise.
1343         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
1344         keywords as variable names.
1345         (may_move_till): Cast according to the coding conventions.
1346         (force_move_till_expr): Avoid using C++ keywords as variable names.
1347         (force_move_till): Cast according to the coding conventions.
1348         (memref_hash): Likewise.
1349         (memref_eq): Likewise.
1350         (gather_mem_refs_stmt): Likewise.
1351         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
1352         keywords as variable names.
1353         (idx_find_step): Cast according to the coding conventions.
1354         (idx_record_use): Likewise.
1355         (find_depends): Likewise.
1356         (prepare_decl_rtl): Likewise.
1357         (mbc_entry_hash): Likewise.
1358         (mbc_entry_eq): Likewise.
1359         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
1360         (simplify_replace_tree): Avoid using C++ keywords as variable names.
1361         (idx_infer_loop_bounds): Cast according to the coding conventions.
1362         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
1363         * tree-ssa-math-opts.c (occ_new ): Likwise.
1364         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
1365         macros.
1366         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
1367         names.
1368         (add_use_op): Likewise.
1369         (add_vop): Likewise.
1370         (add_vuse_op): Likewise.
1371         (add_vdef_op): Likewise.
1372         (get_expr_operands): Likewise.
1373         (push_stmt_changes): Use type safe memory macros.
1374         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
1375         keywords as variable names.
1376         (conditional_replacement): Likewise.
1377         (minmax_replacement): Likewise.
1378         (abs_replacement): Likewise.
1379         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
1380         coding conventions.
1381         (insert_fake_stores): Avoid using C++ keywords as variable names.
1382         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
1383         conventions.
1384         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
1385         (heapvar_insert): Use type safe memory macros.
1386         (new_var_info): Cast according to the coding conventions.
1387         (new_constraint): Likewise.
1388         (remove_preds_and_fake_succs): Use type safe memory macros.
1389         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
1390         conventions.
1391         (thread_single_edge): Likewise.
1392         (thread_through_loop_header): Likewise.
1393
1394 2007-06-06  Eric Christopher  <echristo@apple.com>
1395
1396         * config/i386/i386.c (override_options): Move handling
1397         of TARGET_SUBTARGET* earlier.
1398
1399 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
1400
1401         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
1402         use %n on printf.
1403
1404 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
1405
1406         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
1407         emited outside of basic block.
1408         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
1409         the created blocks.
1410         * rtl.h (delete_insn_chain): Declaration changed.
1411         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
1412         non-removed insns.
1413         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
1414         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
1415         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
1416         to delete_insn_chain.
1417         (rtl_verify_flow_info_1): Verify that the insns in header and footer
1418         do not have bb field set.
1419         (rtl_verify_flow_info): Verify that insns between basic blocks do not
1420         have bb field set.
1421         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
1422         * cfgcleanup.c (try_optimize_cfg): Ditto.
1423
1424 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1425
1426         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
1427         (lambda_body_vector_new): Use type safe memory macros.
1428         (lambda_linear_expression_new): Likewise.
1429         (lambda_loopnest_new): Likewise.
1430         (lambda_lattice_new): Likewise.
1431         (replace_uses_equiv_to_x_with_y): Cast according to the coding
1432         conventions. Use type safe memory macros.
1433         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
1434         (lambda_body_vector_s): Likewise.
1435         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
1436         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
1437
1438 2007-06-06  Richard Guenther  <rguenther@suse.de>
1439
1440         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
1441         if we need to schedule cfg_cleanup.
1442         (tree_ssa_forward_propagate_single_use_vars): Do so.
1443
1444 2007-06-06  Ian Lance Taylor  <iant@google.com>
1445
1446         * fold-const.c (merge_ranges): If range_successor or
1447         range_predecessor fail, just return 0.
1448
1449 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1450
1451         PR tree-optimization/32216
1452         * tree-vectorizer.c (supportable_widening_operation): Determine
1453         signedness of FIX_TRUNC_EXPR from output operand.
1454         (supportable_narrowing_operation): Ditto.
1455         * tree-vect-generic.c (expand_vector_operations_1): Determine
1456         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
1457         from input operand.
1458
1459 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1460
1461         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
1462         (struct pta): ...from here. Change flags to unsigned to avoid
1463         excessive casting (as it is used as a bit mask).
1464         (override_options): Add casts according to the coding convenventions.
1465         (x86_64_elf_unique_section): Likewise.
1466         (examine_argument): Avoid using C++ keywords as variable names.
1467         (construct_container): Likewise.
1468         (legitimize_pic_address): Likewise.
1469         (get_dllimport_decl): Cast according to the coding conventions. Use
1470         type safe memory macros.
1471         (legitimize_address): Cast according to the coding conventions.
1472         (emit_i387_cw_initialization): Corrected the type of slot to enum
1473         ix86_stack_slot.
1474         (ix86_init_machine_status): Use type safe memory macros.
1475         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
1476         (bdesc_pcmpistr): Likewise.
1477         (bdesc_crc32): Likewise.
1478         (bdesc_sse_3arg): Likewise.
1479         (bdesc_2arg): Likewise.
1480         (bdesc_1arg): Likewise.
1481         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
1482         (ix86_expand_sse_pcmpistr): Likewise.
1483         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
1484         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
1485         int to match the langhook definition.
1486         (ix86_builtin_conversion): Change the type of code to unsigned init to
1487         match the langhook definition.
1488         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
1489         names.
1490         (ix86_preferred_output_reload_class): Likewise.
1491         (ix86_cannot_change_mode_class): Likewise.
1492         (ix86_memory_move_cost): Likewise.
1493         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
1494         avoid excessive casting later on.
1495         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
1496
1497 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1498
1499         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
1500         as flags setting insn.
1501         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
1502
1503 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1504
1505         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
1506         (UNSPEC_ROUND): New.
1507         ("sse4_1_round<mode>2"): New insn pattern.
1508         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
1509         SSE4.1 targets.
1510         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
1511         expander using SSEMODEF mode macro.  Expand using
1512         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1513         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
1514         expander using SSEMODEF mode macro.  Expand using
1515         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1516         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
1517         expander using SSEMODEF mode macro.  Expand using
1518         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1519         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
1520         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
1521         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
1522         UNSPEC_ROUNDS.
1523
1524 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
1525             Sebastian Pop  <sebpop@gmail.com>
1526
1527         * lambda.h (build_linear_expr): New.
1528         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
1529         Use build_linear_expr, call fold and force_gimple_operand.
1530         (lambda_loopnest_to_gcc_loopnest): Check that there is
1531         something to insert.
1532         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
1533
1534 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
1535
1536         PR preprocessor/23479
1537         * doc/extend.texi: Document the 0b-prefixed binary integer
1538         constant extension.
1539
1540 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1541
1542         PR tree-optimization/32215
1543         * tree-vectorizer.c (supportable_widening_operation): Return false
1544         for unsupported FIX_TRUNC_EXPR tree code.
1545         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
1546
1547 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
1548
1549         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
1550         register on SPE targets.  Change documentation to reflect
1551         reality.
1552         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
1553         Change FIXED_SCRATCH to 14 and document why we're keeping r14
1554         out of the register allocation pool.
1555         (rs6000_reg_live_or_pic_offset_p): New function.
1556         (rs6000_emit_prologue): Move the actual saving of LR up to free
1557         r0 for holding r11.  Split saving of SPE 64-bit registers into
1558         its own case.  Ensure that offsets will always be in-range for
1559         'evstdd' by using r11 as a scratch register to point at the start
1560         of the SPE save area.  Save r11 if necessary, as it is the static
1561         chain register.
1562         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
1563         into its own case.  Ensure that offsets will always be in-range
1564         for 'evldd' by using r11 as a scratch register to point at the
1565         start of the SPE save area.  Also adjust r11 when restoring
1566         the stack pointer to compensate for pre-loading r11.
1567
1568 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
1569
1570         * cfg.c (init_flow): Use type safe memory macros.
1571         (alloc_block): Likewise.
1572         (unchecked_make_edge): Likewise.
1573         (dump_flow_info): Avoid using C++ keywords as variable names.
1574         (copy_original_table_clear): Cast according to the coding conventions.
1575         (copy_original_table_set): Likewise.
1576         * cfgexpand (label_rtx_for_bb): Likewise.
1577         (expand_gimple_basic_block): Likewise.
1578         * cfghooks.c (dump_bb): Likewise.
1579         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
1580         variable names.
1581         (lv_add_condition_to_bb): Likewise.
1582         * cfglayout (relink_block_chain): Cast according to the coding
1583         conventions.
1584         (fixup_reorder_chain): Likewise.
1585         (fixup_fallthru_exit_predecessor): Likewise.
1586         * cfgloop.c (glb_enum_p): Likewise.
1587         (get_exit_description): Likewise.
1588         (dump_recorded_exit): Likewise.
1589         * cfgloop.h (enum loop_estimation): Move out of struct scope...
1590         (struct loop): ... from here.
1591         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
1592         conventions.
1593         * cfgrtl.c (rtl_create_basic_block): Likewise.
1594         (rtl_split_block): Likewise.
1595         (rtl_dump_bb): Likewise.
1596         (cfg_layout_split_block): Likewise.
1597         (init_rtl_bb_info): Use typesafe memory macros.
1598
1599         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
1600         * graphds.h: Updated all usages of edge to graph_edge.
1601         * graphds.c: Likewise.
1602         * cfgloopanal.c: Likewise.
1603
1604 2007-06-05  Ian Lance Taylor  <iant@google.com>
1605
1606         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
1607         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
1608         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
1609         expression.
1610         (test_for_singularity): Likewise.
1611
1612 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1613
1614         * config/i386/constraints.md ("Y2"): Replaced by ...
1615         ("Yt"): This.
1616         * config/i386/i386.md: Likewise.
1617         * config/i386/mmx.md: Likewise.
1618         * config/i386/sse.md: Likewise.
1619
1620 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1621
1622         * config/i386/constraints.md ("z"): Replaced by ...
1623         ("Y0"): This.
1624         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
1625         (sse4_1_blendvps): Likewise.
1626         (sse4_1_pblendvb): Likewise.
1627         (sse4_2_pcmpestr): Likewise.
1628         (sse4_2_pcmpestrm): Likewise.
1629         (sse4_2_pcmpestr_cconly): Likewise.
1630         (sse4_2_pcmpistr): Likewise.
1631         (sse4_2_pcmpistrm): Likewise.
1632         (sse4_2_pcmpistr_cconly): Likewise.
1633
1634 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
1635
1636         * matrix-reorg.c (transform_access_sites): Fix computation.
1637         (transform_allocation_sites): Same.
1638
1639 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1640
1641         * config/i386/i386.c (override_options): Use
1642         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
1643
1644 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1645
1646         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
1647         (nonimm_not_xmm0_operand): Ditto.
1648         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
1649         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
1650         as operand[2] predicate.  Require "z" class XMM register for
1651         operand[3].  Adjust asm template.
1652         ("sse4_1_blendvpd"): Ditto.
1653         ("sse4_1_pblendvb"): Ditto.
1654         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
1655         force op2 into xmm0 register for variable blend instructions.
1656
1657 2007-06-04  Tom Tromey  <tromey@redhat.com>
1658
1659         * c-tree.h (start_enum): Update.
1660         (build_enumerator): Likewise.
1661         * c-decl.c (enum_next_value): Removed.
1662         (enum_overflow): Likewise.
1663         (start_enum): Add c_enum_contents argument.  Don't use globals.
1664         (build_enumerator): Likewise.
1665         * c-tree.h (struct c_enum_contents): New struct.
1666
1667 2007-06-04  Tom Tromey  <tromey@redhat.com>
1668
1669         * c-common.c (c_common_get_alias_set): Fix indentation.
1670
1671 2007-06-04  Ian Lance Taylor  <iant@google.com>
1672
1673         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
1674         to overflow, reduce overflow infinity to regular infinity.
1675         (vrp_var_may_overflow): New static function.
1676         (vrp_visit_phi_node): Check vrp_var_may_overflow.
1677
1678 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
1679
1680         * stor-layout.c (layout_type): Remove duplicate code.
1681
1682 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
1683
1684         PR c/32191
1685         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
1686         before build_common_builtin_nodes ().
1687
1688 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
1689
1690         PR target/31733
1691         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
1692
1693 2007-06-04  Jan Hubicka  <jh@suse.cz>
1694
1695         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
1696         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
1697         instead of _stat version.
1698
1699 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1700
1701         PR tree-optimization/32194
1702         * tree-predcom.c (determine_offset): Check that both references have
1703         the same type.
1704
1705 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1706
1707         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
1708         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
1709         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
1710         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
1711         Add argument to iterate_fix_dominators call.
1712         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
1713         * gcse.c (hoist_code): Change domby to vector.
1714         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
1715         Add argument to iterate_fix_dominators call.
1716         * loop-doloop.c (doloop_modify): Changed recount_dominator to
1717         recompute_dominator.
1718         * lambda-code.c (perfect_nestify): Ditto.
1719         * cfgloopanal.c: Include graphds.h.
1720         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
1721         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
1722         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
1723         add_edge call.
1724         * graphds.c: New file.
1725         * graphds.h: New file.
1726         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
1727         (get_dominated_by, get_dominated_by_region): Change return type to
1728         vector.
1729         (verify_dominators): Recompute all dominators and compare the results.
1730         (recount_dominator): Renamed to ...
1731         (recompute_dominator): ... this.  Do not check that the block is
1732         dominated by entry.
1733         (iterate_fix_dominators): Reimplemented.
1734         (prune_bbs_to_update_dominators, root_of_dom_tree,
1735         determine_dominators_for_sons): New functions.
1736         * et-forest.c (et_root): New function.
1737         * et-forest.h (et_root): Declare.
1738         * Makefile.in (graphds.o): Add.
1739         (cfgloopanal.o): Add graphds.h dependency.
1740         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
1741         * basic-block.h (get_dominated_by, get_dominated_by_region,
1742         iterate_fix_dominators): Declaration changed.
1743         (recount_dominator): Renamed to ...
1744         (recompute_dominator): ... this.
1745         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
1746         (thread_through_all_blocks): Do not free dominance info.
1747
1748 2007-06-03  Andreas Schwab  <schwab@suse.de>
1749
1750         * config/m68k/m68k.c (override_options): Don't override
1751         REAL_MODE_FORMAT.
1752         * config/m68k/m68k-modes.def (SF, DF): Define to use
1753         motorola_single_format and motorola_double_format, resp.
1754         * real.c (motorola_single_format): Renamed from
1755         coldfire_single_format.
1756         (motorola_double_format): Renamed from coldfire_double_format.
1757         (encode_ieee_extended): Generate a proper canonical NaN image
1758         respecting canonical_nan_lsbs_set.
1759         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
1760         true.
1761         * real.h: Adjust declarations.
1762
1763 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1764
1765         PR target/32163
1766         * config/sh/sh.md (symGOT_load): Don't schedule insns when
1767         the symbol is generated with the stack protector.
1768
1769 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
1770
1771         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
1772         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
1773         "interrupt".
1774         * doc/extend.texi (interrupt): Mention m68k.
1775
1776 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
1777
1778         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
1779         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
1780         (ix86_expand_sse_pcmpestr): Do not check operands for
1781         "register_operand", when insn operand predicate is "register_operand".
1782         (ix86_expand_sse_pcmpistr): Ditto.
1783
1784 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
1785             Uros Bizjak  <ubizjak@gmail.com>
1786
1787         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
1788         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
1789         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
1790         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
1791         * config/i386/constraints.md ("z"): New register constraint
1792         for members of SSE_FIRST_REG class.
1793         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
1794         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
1795         SSE_FIRST_REG class.
1796         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
1797         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
1798         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
1799         (IX86_BUILTIN_PCMPESTRM128): Likewise.
1800         (IX86_BUILTIN_PCMPESTRA128): Likewise.
1801         (IX86_BUILTIN_PCMPESTRC128): Likewise.
1802         (IX86_BUILTIN_PCMPESTRO128): Likewise.
1803         (IX86_BUILTIN_PCMPESTRS128): Likewise.
1804         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
1805         (IX86_BUILTIN_PCMPISTRI128): Likewise.
1806         (IX86_BUILTIN_PCMPISTRM128): Likewise.
1807         (IX86_BUILTIN_PCMPISTRA128): Likewise.
1808         (IX86_BUILTIN_PCMPISTRC128): Likewise.
1809         (IX86_BUILTIN_PCMPISTRO128): Likewise.
1810         (IX86_BUILTIN_PCMPISTRS128): Likewise.
1811         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
1812         (struct builtin_description): Change "flag" field to unsigned.
1813         (bdesc_pcmpestr): New builtin description table.
1814         (bdesc_pcmpistr): Likewise.
1815         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
1816         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
1817         Initialize pcmp[ei]str[im] insns for SSE4.2.
1818         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
1819         (ix86_expand_sse_pcmpistr): Likewise.
1820         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
1821         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
1822         (UNSPEC_PCMPISTR): Likewise.
1823         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
1824         (sse4_2_pcmpestri):New isns pattern.
1825         (sse4_2_pcmpestrm): Likewise.
1826         (sse4_2_pcmpestr_cconly): Likewise.
1827         (sse4_2_pcmpistr): New insn patern and splitter.
1828         (sse4_2_pcmpistri):New isns pattern.
1829         (sse4_2_pcmpistrm): Likewise.
1830         (sse4_2_pcmpistr_cconly): Likewise.
1831         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
1832         in SSE4.2.
1833
1834 2007-06-01  David Daney  <ddaney@avtrex.com>
1835
1836         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
1837         LOADGP_ABSOLUTE and not binds_local_p.
1838
1839 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
1840
1841         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
1842
1843 2007-06-01  Ian Lance Taylor  <iant@google.com>
1844
1845         * tree-vrp.c (compare_name_with_value): Always set
1846         used_strict_overflow if we get a result from the variable itself.
1847
1848 2007-06-01  Ian Lance Taylor  <iant@google.com>
1849
1850         PR rtl-optimization/31455
1851         * lower-subreg.c (find_decomposable_subregs): Don't decompose
1852         subregs which have a cast between modes which are not tieable.
1853
1854 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
1855
1856         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
1857         breaks after return statements.
1858
1859 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1860
1861         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
1862         only after no_new_pseudos.
1863
1864 2007-05-31  Eric Christopher  <echristo@apple.com>
1865
1866         * expr.c (convert_move): Assert that we don't have a BLKmode
1867         operand.
1868         (store_expr): Handle BLKmode moves by calling emit_block_move.
1869
1870 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
1871
1872         * c-typeck.c (build_indirect_ref): Include type in error message.
1873         (build_binary_op): Pass types to binary_op_error.
1874         * c-common.c (binary_op_error): Take two type arguments, print out
1875         types with error.
1876         * c-common.h (binary_op_error): Update prototype.
1877
1878 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1879
1880         * config/i386/i386.c: Correct coments on -mno-sse4.
1881
1882 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1883
1884         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
1885         (x86_64-*-*): Likewise.
1886         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
1887         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
1888         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
1889         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
1890         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
1891         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
1892         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
1893         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
1894         (OPTION_MASK_ISA_SSE4): Likewise.
1895         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
1896         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
1897         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
1898         (override_options): Support SSE4.2.
1899         (ix86_build_const_vector): Support SImode and DImode.
1900         (ix86_build_signbit_mask): Likewise.
1901         (ix86_expand_int_vcond): Support V2DImode.
1902         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
1903         (IX86_BUILTIN_CRC32HI): Likewise.
1904         (IX86_BUILTIN_CRC32SI): Likewise.
1905         (IX86_BUILTIN_CRC32DI): Likewise.
1906         (IX86_BUILTIN_PCMPGTQ): Likewise.
1907         (bdesc_crc32): Likewise.
1908         (bdesc_sse_3arg): Likewise.
1909         (ix86_expand_crc32): Likewise.
1910         (ix86_init_mmx_sse_builtins): Support SSE4.2.
1911         (ix86_expand_builtin): Likewise.
1912         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1913         __SSE4_2__ for -msse4.2.
1914         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
1915         (CRC32MODE): Likewise.
1916         (crc32modesuffix): Likewise.
1917         (crc32modeconstraint): Likewise.
1918         (sse4_2_crc32<mode>): Likewise.
1919         (sse4_2_crc32di): Likewise.
1920         * config/i386/i386.opt (msse4.2): New for SSE4.2.
1921         (msse4): Likewise.
1922         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
1923         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
1924         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
1925         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
1926         (vcondu<mode>): Likewise.
1927         * doc/extend.texi: Document SSE4.2 built-in functions.
1928         * doc/invoke.texi: Document -msse4.2/-msse4.
1929
1930 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
1931
1932         PR tree-optimization/32160
1933         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
1934         variable as gimple reg.
1935         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
1936
1937 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
1938
1939         * gcc.c (main): Don't consider linker options when issuing the
1940         warning about a linker input file not being used.
1941
1942 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1943
1944         * tree-vrp.c (compare_names): Initialize sop.
1945
1946 2007-05-30  Dirk Mueller  <dmueller@suse.de>
1947
1948         * cgraphunit.c (cgraph_analyze_function): Remove
1949         computation of inline parameters.
1950
1951 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
1952
1953         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
1954
1955 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
1956
1957         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
1958         Add vx-common.h.  Include vxworks.h between vx-common.h and
1959         arm/vxworks.h.
1960         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
1961         redefining.
1962         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
1963         (TARGET_ASM_DESTRUCTOR): Likewise.
1964         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
1965         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
1966         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
1967         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
1968         (VXWORKS_ENDIAN_SPEC): Define.
1969         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
1970         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
1971         VXWORKS_* equivalents.
1972         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
1973         (ASM_FILE_START): Delete.
1974         (TARGET_VERSION): Reformat.
1975         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
1976         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
1977         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
1978         (FPBIT, DPBIT): Define.
1979         (fp-bit.c, dp-bit.c): New rules.
1980         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
1981         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
1982         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
1983         * config/arm/arm.h: Include vxworks-dummy.h.
1984         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
1985         Mark with ATTRIBUTE_UNUSED.
1986         (arm_override_options): Do not allow VxWorks RTP PIC to be used
1987         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
1988         make it incompatible with -msingle-pic-base.
1989         (arm_function_ok_for_sibcall): Return false for calls that might
1990         go through a VxWorks PIC PLT entry.
1991         (require_pic_register): New function, split out from...
1992         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
1993         for VxWorks RTPs.
1994         (arm_load_pic_register): Handle the VxWorks RTP initialization
1995         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
1996         (arm_emit_call_insn): New function.
1997         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
1998         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
1999         (pic_offset_arm): New pattern.
2000         (call, call_value): Use arm_emit_call_insn.
2001         (call_internal, call_value_internal): New expanders.
2002         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
2003         VxWorks unless __PIC__.
2004
2005 2007-05-30  Eric Christopher  <echristo@gmail.com>
2006
2007         * genrecog.c: Include regs.h in generated file.
2008         * genemit.c: Ditto. Fix up formatting.
2009         * config/mn10300/constraints.md: New.
2010         * config/mn10300/mn10300.md: Include.
2011         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
2012         Fix up for removed macro.
2013         * config/mn10300/predicates.md (call_address_operand):  Ditto.
2014         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
2015         (CONST_OK_FOR_I): Ditto.
2016         (CONST_OK_FOR_J): Ditto.
2017         (CONST_OK_FOR_K): Ditto.
2018         (CONST_OK_FOR_L): Ditto.
2019         (CONST_OK_FOR_M): Ditto.
2020         (CONST_OK_FOR_N): Ditto.
2021         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
2022         (OK_FOR_Q): Ditto.
2023         (OK_FOR_R): Ditto.
2024         (OK_FOR_T): Ditto.
2025         (EXTRA_CONSTRAINT): Ditto.
2026
2027 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2028
2029         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
2030         Remove defines.
2031         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
2032         OPTION_MASK_ISA_64BIT.
2033         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
2034
2035 2007-05-30  Richard Guenther  <rguenther@suse.de>
2036
2037         PR middle-end/32152
2038         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
2039         types for comparison.
2040         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
2041         with original typed arguments.
2042         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
2043
2044 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
2045
2046         PR tree-optimization/31769
2047         * except.c (duplicate_eh_regions): Clear prev_try if
2048         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
2049
2050 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
2051
2052         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
2053         * tree-ssa-sink.c (statement_sink_location): Return basic block and
2054         bsi of the location where statements should be inserted.
2055         (sink_code_in_bb): Take bsi from statement_sink_location.
2056         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
2057         instead of bsi_start.
2058         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
2059         bsi_insert_after.
2060         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
2061         (bsi_move_before): Document inconsistency with bsi_move_after.
2062         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
2063
2064 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2065
2066         * config/i386/i386.h (TARGET_ABM): New define.
2067         (TARGET_POPCNT): Ditto.
2068         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
2069         New temporary defines to redefine from OPTION_ISA_* defines.
2070         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
2071         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
2072         (ix86_isa_flags): New extern int declaration.
2073         (TARGET_SUBTARGET_DEFAULT): New define.
2074         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
2075         (TARGET_SUBTARGET32_DEFAULT): Ditto.
2076         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
2077         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2078         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
2079         * config/i386/darwin.h: Change TARGET_64BIT define to
2080         OPTION_ISA_64BIT.
2081
2082         * config/i386/i386.opt (m3dnowa): Define as undocumented option
2083         using existing "ix86_isa_flags" varible.
2084         (m32, m64): Use existing "ix86_isa_flags" variable.
2085         (mmmx, m3dnow): Ditto.
2086         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
2087         (mabm): Define as non-negative option using "x86_abm" variable.
2088         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
2089
2090         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
2091         Rewrite feature test bitmap.
2092         (ix86_isa_flags): New initialized global int varible.
2093         (ix86_isa_flags_explicit): New static int variable.
2094         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
2095         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
2096         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
2097         target_flags_explicit.
2098         (override_options): Remove "target_enable" and "target_disable" fields
2099         from "struct ptt". Update processor_target_table accordingly. Remove
2100         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
2101         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
2102         "target_flags" and "ix86_isa_flags_explicit" instead of
2103         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
2104         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
2105         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
2106         to true when either of PTA_POPCNT or PTA_ABM is set in
2107         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
2108         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
2109         processor_alias_table flags entry.  Remove handling of
2110         "target_enable" and "target_disable" fields of processor_target_table.
2111         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
2112         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
2113         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
2114         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
2115         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
2116         "target_flags".
2117         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
2118
2119 2007-05-29  David Daney  <ddaney@avtrex.com>
2120
2121         PR gcc/31975
2122         * config/mips/mips.c (mips_output_mi_thunk): Emit
2123         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
2124
2125 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
2126         * config/i386/i386.c (ix86_function_regparm): Added checking of
2127         ix86_force_align_arg_pointer to determine the number of
2128         register parameters.
2129
2130 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
2131
2132         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
2133         (SET_DR_MISALIGNMENT): New.
2134         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
2135         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
2136         Use SET_DR_MISALIGNMENT.
2137         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
2138         pointer.
2139         * tree-data-ref.c (create_data_ref, compute_all_dependences,
2140         find_loop_nest): Export.
2141         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
2142         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
2143         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
2144         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
2145         New macros.
2146         (struct mem_ref): Add field reuse_distance.
2147         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
2148         Initialize reuse_distance field.
2149         (issue_prefetch_ref): Select temporality of prefetch according to
2150         reuse_distance.
2151         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
2152         self_reuse_distance, determine_loop_nest_reuse): New functions.
2153         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
2154         (tree_ssa_prefetch_arrays): Dump L2 cache size.
2155         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
2156         dependency.
2157
2158 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
2159
2160         * tree-ssa-alias.c: Add aliasing overview.
2161
2162 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
2163             Danny Smith  <dannysmith@users.sourceforge.net>
2164
2165         PR target/29498
2166         * config/i386/t-crtfm: Compile crtfastmath.o with
2167         -minline-all-stringops.
2168         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
2169         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
2170
2171 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2172
2173         * doc/md.texi: Document constraints on HP PA-RISC.
2174
2175         * pa/constraints.md: New file.
2176         * pa.md: Include constraints.md.
2177         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
2178         (integer_store_memory_operand, ldil_cint_p): New functions.
2179         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
2180         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2181         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
2182         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
2183         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
2184
2185 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
2186
2187         PR c/31339
2188         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2189         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2190         case POSTDECREMENT_EXPR>): Return the error_mark_node
2191         if either the real or imaginary parts would an
2192         error_mark_node.
2193
2194 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
2195
2196         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
2197         name when we remove it from a call.
2198
2199 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
2200
2201         * targhooks.c (default_narrow_bitfield): Remove.
2202         * targhooks.h: Remove the prototype for
2203         default_narrow_bitfield.
2204
2205         * langhooks-def.h: Remove the prototype for
2206         hook_get_alias_set_0.
2207         * langhooks.c (hook_get_alias_set_0): Remove.
2208
2209         * global.c (EXECUTE_IF_CONFLICT): Remove.
2210
2211 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2212
2213         PR tree-opt/32100
2214         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
2215         return true when truth_value_p is true and the type
2216         is of signed:1.
2217
2218 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
2219
2220         * doc/install.texi (Prerequisites): We no longer require Autoconf
2221         2.13 for the top-level.
2222
2223 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
2224
2225         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
2226         memory access via x86_expand_vector_move_misalign() only for
2227         TImode values on 32-bit targets.
2228
2229 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
2230
2231         * matrix-reorg.c: New file. Implement matrix flattening and
2232         transposing optimization.
2233         * tree-pass.h: Add matrix reorg pass.
2234         * common.opt: Add fipa-mreorg flag.
2235         * Makefile.in: Add matrix-reorg.c.
2236         * passes.c: Add matrix reorg pass.
2237         * varpool.c (add_new_static_var): New function.
2238         * cgraph.h (add_new_static_var): Declare.
2239
2240 2007-05-27  Eric Christopher  <echristo@apple.com>
2241
2242         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
2243         sp_offset depending on stack size. Save r12 depending
2244         on registers we're saving later.
2245         (rs6000_emit_epilogue): Update sp_offset depending only
2246         on stack size.
2247
2248 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
2249
2250         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
2251         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
2252         * ifcvt.c (if_convert): Ditto.
2253         * tree-ssa-threadupdate.c (thread_block): Ditto.
2254         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
2255         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
2256         verify_loop_closed_ssa): Check number_of_loops instead of
2257         current_loops.
2258         * predict.c (tree_estimate_probability): Ditto.
2259         * tree-if-conv.c (main_tree_if_conversion): Ditto.
2260         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2261         * modulo-sched.c (sms_schedule): Ditto.
2262         * tree-scalar-evolution.c (scev_const_prop): Ditto.
2263         (scev_finalize): Do not do anything if scev analysis was not
2264         initialized.
2265         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
2266         current_loops == NULL.
2267         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
2268         * loop-init.c (loop_optimizer_init): Do not free current_loops when
2269         there are no loops.
2270         (loop_optimizer_finalize): Assert that loops were analyzed.
2271         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
2272         rtl_doloop): Check number_of_loops instead of current_loops.
2273         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
2274         current_loops == NULL.
2275         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
2276         gate_tree_vectorize tree_linear_transform, check_data_deps,
2277         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
2278         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
2279         Check number_of_loops instead of current_loops.
2280         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
2281         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
2282         free loops if available.
2283         (execute_pre): Do not pass do_fre to fini_pre.
2284
2285 2007-05-27  Tobias Burnus  <burnus@net-b.de>
2286
2287         PR middle-end/32083
2288         * real.c (mpfr_from_real): Fix sign of -Inf.
2289
2290 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2291
2292         * tree-vect-transform.c (vectorizable_conversion): Initialize
2293         tree_code variables to ERROR_MARK.
2294         (vectorizable_type_demotion): Likewise.
2295         (vectorizable_type_promotion): Likewise.
2296
2297 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2298
2299         PR target/32065
2300         * config/i386/i386.md (movti): Handle push operands via
2301         ix86_expand_push().
2302
2303 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2304
2305         * basic-block.h: Remove the prototype for merge_seq_blocks.
2306         * cfgcleanup.c (merge_seq_blocks): Remove.
2307
2308         * tree-flow.h: Remove the prototype for is_aliased_with.
2309         * tree-ssa-alias.c (is_aliased_with): Remove.
2310
2311 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
2312
2313         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
2314
2315         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
2316
2317         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
2318         ix86_expand_sse4_unpack if SSE4.1 is enabled.
2319         (vec_unpacks_hi_v16qi): Likewise.
2320         (vec_unpacku_lo_v16qi): Likewise.
2321         (vec_unpacks_lo_v16qi): Likewise.
2322         (vec_unpacku_hi_v8hi): Likewise.
2323         (vec_unpacks_hi_v8hi): Likewise.
2324         (vec_unpacku_lo_v8hi): Likewise.
2325         (vec_unpacks_lo_v8hi): Likewise.
2326         (vec_unpacku_hi_v4si): Likewise.
2327         (vec_unpacks_hi_v4si): Likewise.
2328         (vec_unpacku_lo_v4si): Likewise.
2329         (vec_unpacks_lo_v4si): Likewise.
2330
2331 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2332
2333         * c-typeck.c, config/arm/arm.c, config/darwin.c,
2334         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
2335         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
2336         follow spelling conventions in various
2337         warning/error/diagnostic messages.
2338
2339         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
2340         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
2341         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
2342         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
2343         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
2344         * doc/tm.texi: Follow spelling conventions.
2345
2346 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2347
2348         PR tree-opt/32090
2349         * tree-ssa-forwprop.c
2350         (forward_propagate_addr_into_variable_array_index): Remove
2351         the lhs argument.  Use the type of def_rhs instead of lhs.
2352         (forward_propagate_addr_expr_1): Update use of
2353         forward_propagate_addr_into_variable_array_index.
2354
2355 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
2356             Nigel Stephens  <nigel@mips.com>
2357
2358         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
2359         function attributes, "far" being an alias for "long_call".
2360         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
2361         (mips_near_type_p, mips_far_type_p): New.
2362         (mips_comp_type_attributes): New function to check that attributes
2363         attached to a function type are compatible.
2364         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
2365         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
2366         to the target function of the thunk.
2367         (mips_encode_section_info): Check for "near" and "far" function
2368         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
2369
2370         * config/mips/predicates.md (const_call_insn_operand): Test only
2371         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
2372
2373         * doc/extend.texi (Function Attributes): Document MIPS "near" and
2374         "far" attributes.
2375
2376         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
2377         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
2378         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
2379         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
2380
2381 2007-05-25  Eric Christopher  <echristo@apple.com>
2382
2383         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
2384         to x86-darwin configurations.
2385         * config/i386/t-darwin: Add softfp support.
2386         * config/i386/t-darwin64: Ditto.
2387         * config/i386/sfp-machine.h: If mach then don't use
2388         aliasing, emit a stub to call.
2389
2390 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
2391
2392         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
2393         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
2394         tree-predcom.c, tree-ssa-alias-warnings.c,
2395         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
2396         comment typos.  Follow spelling conventions.
2397         * doc/cpp.texi, doc/invoke.texi: Fix typos.
2398
2399 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2400
2401         PR target/32065
2402         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
2403         constants into memory.  Expand unaligned memory references for
2404         SSE modes via x86_expand_vector_move_misalign() function.
2405
2406 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
2407
2408         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
2409         "memory" attribute for "sseishft" type insn without operands[2].
2410
2411 2007-05-25  Dirk Mueller  <dmueller@suse.de>
2412             Marcus Meissner <meissner@suse.de>
2413
2414         * doc/extend.texi (alloc_size): New attribute.
2415         * c-common.c (handle_alloc_size_attribute): New.
2416         * tree-object-size.c (alloc_object_size): Use alloc_size
2417         attribute, if available.
2418
2419 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2420
2421         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
2422         with MASK_SSE2.
2423         (__builtin_ia32_vec_ext_v2di): Likewise.
2424         (__builtin_ia32_vec_ext_v4si): Likewise.
2425         (__builtin_ia32_vec_ext_v8hi): Likewise.
2426         (__builtin_ia32_vec_ext_v16qi): Likewise.
2427         (__builtin_ia32_vec_set_v8hi): Likewise.
2428
2429 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2430
2431         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
2432
2433 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
2434
2435         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
2436         (arm_is_longcall_p): Rename to...
2437         (arm_is_long_call_p): ...this.  Take a single tree argument and
2438         return a bool.
2439         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
2440         (CUMULATIVE_ARGS): Remove call_cookie.
2441         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
2442         (ENCODED_LONG_CALL_ATTR_P): Delete.
2443         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
2444         LONG_CALL_FLAG_CHAR cases.
2445         (ARM_DECLARE_FUNCTION_SIZE): Delete.
2446         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
2447         ARM_DECLARE_FUNCTION_SIZE.
2448         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
2449         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
2450         (arm_encode_call_attribute, current_file_function_operand): Delete.
2451         (arm_function_in_section_p): New function.
2452         (arm_is_longcall_p): Rename to...
2453         (arm_is_long_call_p): ...this.  Take the target function as a single
2454         argument and return a bool.  Do not rely on call cookies.  Check
2455         whether the target symbol is in the same section as the current
2456         function, not just the same compilation unit.
2457         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
2458         (arm_encode_section_info): Don't encode a call type.
2459         * config/arm/arm.md (call, call_value): Update calls to
2460         arm_is_long(_)call_p.  Simplify logic.
2461         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
2462         Update calls to arm_is_long(_)call_p.
2463
2464 2007-05-25  Richard Guenther  <rguenther@suse.de>
2465
2466         PR tree-optimization/31982
2467         * tree-ssa-forwprop.c
2468         (forward_propagate_addr_into_variable_array_index): Handle arrays
2469         with element size one.
2470
2471 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2472
2473         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
2474         (umulsi3_highpart): Likewise.
2475
2476 2007-05-24  Ian Lance Taylor  <iant@google.com>
2477
2478         PR rtl-optimization/32069
2479         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
2480         is NULL.
2481
2482 2007-05-24  Ollie Wild  <aaw@google.com>
2483
2484         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
2485         description.
2486
2487 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
2488
2489         * postreload-gcse.c (reg_changed_after_insn_p): New function.
2490         (oprs_unchanged_p): Use it to check all registers in a REG.
2491         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
2492         (reg_set_between_after_reload_p): Delete.
2493         (reg_used_between_after_reload_p): Likewise.
2494         (reg_set_or_used_since_bb_start): Likewise.
2495         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
2496         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
2497         Use reg_set_between_p instead of reg_set_between_after_reload_p.
2498         * rtlanal.c (reg_set_p): Check whether REG overlaps
2499         regs_invalidated_by_call, rather than just checking the
2500         membership of REGNO (REG).
2501
2502 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2503
2504         * doc/passes.texi: Document predictive commoning.
2505         * doc/invoke.texi (-fpredictive-commoning): Document.
2506         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
2507         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
2508         adding indices to the generated name.
2509         (schedule_sm): Pass 0 to get_lsm_tmp_name.
2510         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
2511         * tree-pretty-print.c (op_symbol_1): Renamed to ...
2512         (op_symbol_code): ... and exported.
2513         (dump_omp_clause, op_symbol): Use op_symbol_code
2514         instead of op_symbol_1.
2515         * tree-pass.h (pass_predcom): Declare.
2516         * timevar.def (TV_PREDCOM): New timevar.
2517         * tree-ssa-loop.c (run_tree_predictive_commoning,
2518         gate_tree_predictive_commoning, pass_predcom): New.
2519         * tree-data-ref.c (find_data_references_in_loop): Find the
2520         references in dominance order.
2521         (canonicalize_base_object_address): Ensure that the result has
2522         pointer type.
2523         (dr_analyze_innermost): Export.
2524         (create_data_ref): Code to fail for references with invariant
2525         address moved ...
2526         (find_data_references_in_stmt): ... here.
2527         * tree-data-ref.h (dr_analyze_innermost): Declare.
2528         * tree-affine.c: Include tree-gimple.h and hashtab.h.
2529         (aff_combination_find_elt, name_expansion_hash,
2530         name_expansion_eq, tree_to_aff_combination_expand,
2531         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
2532         New functions.
2533         * tree-affine.h (aff_combination_constant_multiple_p,
2534         tree_to_aff_combination_expand): Declare.
2535         * tree-predcom.c: New file.
2536         * common.opt (fpredictive-commoning): New option.
2537         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
2538         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
2539         * Makefile.in (tree-predcom.o): Add.
2540         (tree-affine.o): Add TREE_GIMPLE_H dependency.
2541         * passes.c (init_optimization_passes):  Add dceloop after
2542         copy propagation in loop optimizer.  Add predictive commoning
2543         to loop optimizer passes.
2544
2545 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2546
2547         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
2548         default hook.
2549
2550 2007-05-24  Jan Hubicka  <jh@suse.cz>
2551
2552         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
2553         statistics.
2554         (genheader): Include statistics.h.
2555
2556         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
2557         notes are gone.
2558         * print-rtl.c (flag_dump_unnumbered): Update comments.
2559         (print_rtl): Fix my previous change.
2560         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
2561         specific data.
2562
2563 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2564
2565         PR middle-end/32018
2566         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
2567         set_loop_copy.
2568         (thread_through_all_blocks): Call initialize_original_copy_tables
2569         and free_original_copy_tables.
2570         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
2571         Use set_loop_copy.
2572         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2573         * cfghooks.c (duplicate_block): Use get_loop_copy.
2574         * cfg.c: Include cfgloop.h.
2575         (loop_copy): New hash table.
2576         (initialize_original_copy_tables): Initialize loop_copy table.
2577         (free_original_copy_tables): Free loop_copy table.
2578         (copy_original_table_clear, copy_original_table_set,
2579         set_loop_copy, get_loop_copy): New functions.
2580         (set_bb_original, set_bb_copy): Use copy_original_table_set.
2581         * cfgloop.h (struct loop): Remove copy field.
2582         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
2583         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
2584
2585 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2586
2587         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
2588         -msse/-msse2/-msse3.
2589
2590 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2591
2592         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
2593         __builtin_ia32_vec_set_v2di with MASK_64BIT.
2594
2595 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2596
2597         PR target/27067
2598         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
2599         * targhooks.h (default_mangle_decl_assembler_name): Declare
2600         default hook.
2601         * targhooks.c (default_mangle_decl_assembler_name): Define
2602         default hook.
2603         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
2604         default hook.
2605         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
2606         * langhooks.c (lhd_set_decl_assembler_name): Call
2607         targetm.mangle_decl_assembler_name for names with global scope.
2608
2609         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
2610         default.
2611         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
2612         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
2613         Declare.
2614         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
2615         New. Factored out of i386_pe_encode_section_info.
2616         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
2617         Move check for prior decoration of stdcall
2618         symbols to i386_pe_encode_section_info.
2619         (i386_pe_encode_section_info): Adjust call to
2620         gen_stdcall_or_fastcall_suffix.  Use
2621         i386_pe_maybe_mangle_decl_assembler_name, if needed.
2622         (i386_pe_mangle_decl_assembler_name): New. Wrap
2623         i386_pe_maybe_mangle_decl_assembler_name.
2624
2625 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2626
2627         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
2628         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
2629         * langhooks.c (get_signed_or_unsigned_type): Don't check for
2630         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
2631         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
2632         TYPE_UNSIGNED.
2633
2634 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
2635             Nigel Stephens  <nigel@mips.com>
2636             Richard Sandiford  <richard@codesourcery.com>
2637
2638         Fix up MIPS16 hard float and add support for complex.
2639
2640         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
2641         (TARGET_SOFT_FLOAT_ABI): New.
2642         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
2643         __mips_soft_float to reflect the ABI in use, not whether the
2644         FPU is directly accessible (e.g., in MIPS16 mode).
2645         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
2646         (UNITS_PER_FPVALUE): Likewise.
2647
2648         * config/mips/mips.c (mips_expand_call): Remove redundant
2649         TARGET_MIPS16 check.
2650         (mips_arg_regno): New.
2651         (function_arg_advance): When setting bits in cum->fp_code for
2652         MIPS16, don't subtract 1 from cum->arg_number, since it is now
2653         zero-based.
2654         (function_arg): Use mips_arg_regno.
2655         (mips_return_mode_in_fpr_p): New.
2656         (mips16_call_stub_mode_suffix): New.
2657         (mips16_cfun_returns_in_fpr_p): New.
2658         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
2659         (mips_output_function_prologue): Test mips16_hard_float, not
2660         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
2661         (mips_expand_epilogue): Call MIPS16 helper routines to copy
2662         return value into a floating-point register.
2663         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
2664         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
2665         (mips16_fp_args): Handle MIPS32r2 ISA which supports
2666         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
2667         word of double arguments from or to the high bits of 64-bit
2668         floating point registers.
2669         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
2670         (mips16_fpret_double): New helper function.
2671         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
2672         support for complex modes.  Fill in DECL_RESULT for stubdecl.
2673         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
2674
2675         * config/mips/mips16.S
2676         (RET, ARG1, ARG2): New.
2677         (MERGE_GPRf, MERGE_GPRt): New.
2678         (DELAYt, DELAYf): New.
2679         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
2680         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
2681         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
2682         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
2683         (SFOP): Renamed to...
2684         (OPSF3): This, and macro-ified.  Updated all uses.
2685         (SFOP2): Renamed to...
2686         (OPSF2): This, and macro-ified.  Updated all uses.
2687         (SFCMP): Renamed to...
2688         (CMPSF): This, and macro-ified.  Updated all uses.
2689         (SFREVCMP): Renamed to...
2690         (REVCMPSF): This, and macro-ified.  Updated all uses.
2691         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
2692         (LDDBL1, LDDBL2, RETDBL): Deleted.
2693         (DFOP): Renamed to...
2694         (OPDF3): This, and macro-ified.  Updated all uses.
2695         (DFOP2): Renamed to...
2696         (OPDF2): This, and macro-ified.  Updated all uses.
2697         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
2698         (DFCMP): Renamed to...
2699         (CMPDF): This, and macro-ified.  Updated all uses.
2700         (DFREVCMP): Renamed to...
2701         (REVCMPDF): This, and macro-ified.  Updated all uses.
2702         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
2703         (RET_FUNCTION): New.
2704         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
2705         (__mips16_ret_sc, __mips16_ret_dc): New.
2706         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
2707         STUB_ARGS_6, STUB_ARGS_10): New.
2708         (CALL_STUB_NO_RET): New.
2709         (__mips16_call_stub_1): Macro-ified.
2710         (__mips16_call_stub_5): Macro-ified.
2711         (__mips16_call_stub_2): Macro-ified.
2712         (__mips16_call_stub_6): Macro-ified.
2713         (__mips16_call_stub_9): Macro-ified.
2714         (__mips16_call_stub_10): Macro-ified.
2715         (CALL_STUB_RET): New.
2716         (__mips16_call_stub_sf_0): Macro-ified.
2717         (__mips16_call_stub_sf_1): Macro-ified.
2718         (__mips16_call_stub_sf_5): Macro-ified.
2719         (__mips16_call_stub_sf_2): Macro-ified.
2720         (__mips16_call_stub_sf_6): Macro-ified.
2721         (__mips16_call_stub_sf_9): Macro-ified.
2722         (__mips16_call_stub_sf_10): Macro-ified.
2723         (__mips16_call_stub_df_0): Macro-ified.
2724         (__mips16_call_stub_df_1): Macro-ified.
2725         (__mips16_call_stub_df_5): Macro-ified.
2726         (__mips16_call_stub_df_2): Macro-ified.
2727         (__mips16_call_stub_df_6): Macro-ified.
2728         (__mips16_call_stub_df_9): Macro-ified.
2729         (__mips16_call_stub_df_10): Macro-ified.
2730         (__mips16_call_stub_sc_0): New.
2731         (__mips16_call_stub_sc_1): New.
2732         (__mips16_call_stub_sc_5): New.
2733         (__mips16_call_stub_sc_2): New.
2734         (__mips16_call_stub_sc_6): New.
2735         (__mips16_call_stub_sc_9): New.
2736         (__mips16_call_stub_sc_10): New.
2737         (__mips16_call_stub_dc_0): New.
2738         (__mips16_call_stub_dc_1): New.
2739         (__mips16_call_stub_dc_5): New.
2740         (__mips16_call_stub_dc_2): New.
2741         (__mips16_call_stub_dc_6): New.
2742         (__mips16_call_stub_dc_9): New.
2743         (__mips16_call_stub_dc_10): New.
2744
2745         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
2746         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
2747         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
2748
2749 2007-05-23  Ian Lance Taylor  <iant@google.com>
2750
2751         * doc/invoke.texi (Invoking GCC): Document that the order of the
2752         -l option matters.
2753
2754 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
2755
2756         PR target/30987
2757         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
2758         * config/score/predicate.md (const_pow2, const_npow2): Remove.
2759         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
2760         undef.
2761
2762         PR target/30474
2763         * config/score/score.c (score_print_operand): Make sure that only
2764         lower bits are used.
2765
2766 2007-05-22  Ian Lance Taylor  <iant@google.com>
2767
2768         * tree-vrp.c (avoid_overflow_infinity): New static function,
2769         broken out of set_value_range_to_value.
2770         (set_value_range_to_value): Call avoid_overflow_infinity.
2771         (extract_range_from_assert): Likewise.
2772
2773 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2774
2775         PR middle-end/31095
2776          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
2777         change the type before looking for a COMPOUND_EXPR.
2778
2779 2007-05-22  Ian Lance Taylor  <iant@google.com>
2780
2781         * lower-subreg.c (decompose_multiword_subregs): If we change an
2782         insn, call remove_retval_note on it.
2783
2784 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2785
2786         * regs.h (end_hard_regno): New function.
2787         (END_HARD_REGNO, END_REGNO): New macros.
2788         (add_to_hard_reg_set): New function.
2789         (remove_from_hard_reg_set): Likewise.
2790         (in_hard_reg_set_p): Likewise.
2791         (overlaps_hard_reg_set_p): Likewise.
2792         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
2793         (note_btr_set): Use END_HARD_REGNO.
2794         * caller-save.c (setup_save_areas): Use end_hard_regno.
2795         (mark_set_regs): Use END_HARD_REGNO.
2796         (add_stored_regs): Use end_hard_regno.
2797         (mark_referenced_regs): Use add_to_hard_reg_set.
2798         * combine.c (update_table_tick): Use END_REGNO.
2799         (record_value_for_reg): Likewise.
2800         (record_dead_and_set_regs): Likewise.
2801         (get_last_value_validate): Likewise.
2802         (use_crosses_set_p): Likewise.
2803         (reg_dead_at_p_1): Likewise.
2804         (reg_dead_at_p): Likewise.
2805         (mark_used_regs_combine): Use add_to_hard_reg_set.
2806         (move_deaths): Use END_HARD_REGNO.
2807         (reg_bitfield_target_p): Use end_hard_regno.
2808         (distribute_notes): Use END_HARD_REGNO.
2809         * cse.c (mention_regs): Use END_REGNO.
2810         (insert): Use add_to_hard_reg_set.
2811         (invalidate): Use END_HARD_REGNO.
2812         (invalidate_for_call): Likewise.
2813         (exp_equiv_p): Use END_REGNO.
2814         (cse_insn): Likewise.
2815         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
2816         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
2817         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
2818         * function.c (keep_stack_depressed): Use end_hard_regno.
2819         * global.c (global_alloc): Use end_hard_regno.
2820         (global_conflicts): Use add_to_hard_reg_set instead of
2821         mark_reg_live_nc.
2822         (find_reg): Likewise.
2823         (mark_reg_store): Likewise.
2824         (mark_reg_conflicts): Likewise.
2825         (mark_reg_death): Use remove_from_hard_reg_set.
2826         (mark_reg_live_nc): Delete.
2827         (set_preference): Use end_hard_regno.
2828         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
2829         remove_from_hard_reg_set.
2830         (post_mark_life): Use add_to_hard_reg_set.
2831         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
2832         (reg_becomes_live): Use add_to_hard_reg_set.
2833         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
2834         (peep2_find_free_register): Use add_to_hard_reg_set.
2835         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
2836         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
2837         * regrename.c (note_sets): Use add_to_hard_reg_set.
2838         (clear_dead_regs): Use remove_from_hard_reg_set.
2839         (regrename_optimize): Use add_to_hard_reg_set.
2840         (find_oldest_value_reg): Use in_hard_reg_set_p.
2841         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
2842         (hard_reg_set_here_p): Use end_hard_regno.
2843         (decompose): Likewise.
2844         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
2845         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
2846         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
2847         (mark_home_live): Use end_hard_regno.
2848         (spill_hard_reg): Likewise.
2849         (clear_reload_reg_in_use): Likewise.
2850         * reorg.c (delete_prior_computation): Use END_REGNO.
2851         * resource.c (update_live_status): Use END_HARD_REGNO.
2852         (mark_referenced_resources): Use add_to_hard_reg_set.
2853         (mark_set_resources): Likewise.
2854         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
2855         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
2856         (reg_overlap_mentioned_p): Likewise.
2857         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
2858         (covers_regno_no_parallel_p): Use END_REGNO.
2859         (find_regno_note): Likewise.
2860         (find_reg_fusage): Use END_HARD_REGNO.
2861         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
2862         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
2863
2864 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2865
2866         * mode-switching.c (reg_dies): Change type of second argument to
2867         "HARD_REG_SET *".
2868         (optimize_mode_switching): Update accordingly.
2869
2870 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
2871
2872         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
2873         in favor of...
2874         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
2875         (hard_reg_set_empty_p): ...these new functions.
2876         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
2877         GO_IF_HARD_REG_SUBSET.
2878         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
2879         instead of GO_IF_HARD_REG_EQUAL.
2880         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
2881         instead of GO_IF_HARD_REG_EQUAL.
2882         * global.c (find_reg): Use hard_reg_set_empty_p instead of
2883         GO_IF_HARD_REG_SUBSET.
2884         (modify_reg_pav): Use hard_reg_set_empty_p instead of
2885         GO_IF_HARD_REG_EQUAL.
2886         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
2887         of GO_IF_HARD_REG_SUBSET.
2888         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
2889         instead of GO_IF_HARD_REG_EQUAL.
2890         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
2891         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
2892         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
2893         of GO_IF_HARD_REG_SUBSET,
2894         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
2895         GO_IF_HARD_REG_SUBSET.
2896         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
2897         instead of GO_IF_HARD_REG_EQUAL.
2898         * config/sh/sh.c (push_regs, calc_live_regs): Use
2899         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
2900         (hard_regs_intersect_p): Delete.
2901
2902 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
2903
2904         * doc/sourcebuild.texi (Test Directives) Add dg-message.
2905
2906 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
2907             Richard Henderson  <rth@redhat.com>
2908
2909         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
2910         extra_headers.
2911         (x86_64-*-*): Likewise.
2912
2913         * i386/i386-modes.def (V2QI): New.
2914
2915         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
2916         SSE4A.
2917         (override_options): Support SSE4.1.
2918         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
2919         (IX86_BUILTIN_BLENDPS): Likewise.
2920         (IX86_BUILTIN_BLENDVPD): Likewise.
2921         (IX86_BUILTIN_BLENDVPS): Likewise.
2922         (IX86_BUILTIN_PBLENDVB128): Likewise.
2923         (IX86_BUILTIN_PBLENDW128): Likewise.
2924         (IX86_BUILTIN_DPPD): Likewise.
2925         (IX86_BUILTIN_DPPS): Likewise.
2926         (IX86_BUILTIN_INSERTPS128): Likewise.
2927         (IX86_BUILTIN_MOVNTDQA): Likewise.
2928         (IX86_BUILTIN_MPSADBW128): Likewise.
2929         (IX86_BUILTIN_PACKUSDW128): Likewise.
2930         (IX86_BUILTIN_PCMPEQQ): Likewise.
2931         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
2932         (IX86_BUILTIN_PMAXSB128): Likewise.
2933         (IX86_BUILTIN_PMAXSD128): Likewise.
2934         (IX86_BUILTIN_PMAXUD128): Likewise.
2935         (IX86_BUILTIN_PMAXUW128): Likewise.
2936         (IX86_BUILTIN_PMINSB128): Likewise.
2937         (IX86_BUILTIN_PMINSD128): Likewise.
2938         (IX86_BUILTIN_PMINUD128): Likewise.
2939         (IX86_BUILTIN_PMINUW128): Likewise.
2940         (IX86_BUILTIN_PMOVSXBW128): Likewise.
2941         (IX86_BUILTIN_PMOVSXBD128): Likewise.
2942         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
2943         (IX86_BUILTIN_PMOVSXWD128): Likewise.
2944         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
2945         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
2946         (IX86_BUILTIN_PMOVZXBW128): Likewise.
2947         (IX86_BUILTIN_PMOVZXBD128): Likewise.
2948         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
2949         (IX86_BUILTIN_PMOVZXWD128): Likewise.
2950         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
2951         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
2952         (IX86_BUILTIN_PMULDQ128): Likewise.
2953         (IX86_BUILTIN_PMULLD128): Likewise.
2954         (IX86_BUILTIN_ROUNDPD): Likewise.
2955         (IX86_BUILTIN_ROUNDPS): Likewise.
2956         (IX86_BUILTIN_ROUNDSD): Likewise.
2957         (IX86_BUILTIN_ROUNDSS): Likewise.
2958         (IX86_BUILTIN_PTESTZ): Likewise.
2959         (IX86_BUILTIN_PTESTC): Likewise.
2960         (IX86_BUILTIN_PTESTNZC): Likewise.
2961         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
2962         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
2963         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
2964         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
2965         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
2966         (bdesc_ptest): New.
2967         (bdesc_sse_3arg): Likewise.
2968         (bdesc_2arg): Likewise.
2969         (bdesc_1arg): Likewise.
2970         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
2971         with 3 args.
2972         (ix86_expand_sse_4_operands_builtin): New.
2973         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
2974         smaller than 8 bits as the 2nd arg.
2975         (ix86_expand_sse_ptest): New.
2976         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
2977         (ix86_expand_vector_set): Support SSE4.1.
2978         (ix86_expand_vector_extract): Likewise.
2979
2980         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2981         __SSE4_1__ for -msse4.1.
2982
2983         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
2984         (UNSPEC_INSERTPS): Likewise.
2985         (UNSPEC_DP): Likewise.
2986         (UNSPEC_MOVNTDQA): Likewise.
2987         (UNSPEC_MPSADBW): Likewise.
2988         (UNSPEC_PHMINPOSUW): Likewise.
2989         (UNSPEC_PTEST): Likewise.
2990         (UNSPEC_ROUNDP): Likewise.
2991         (UNSPEC_ROUNDS): Likewise.
2992
2993         * config/i386/i386.opt (msse4.1): New for SSE4.1.
2994
2995         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
2996         (const_pow2_1_to_32768_operand): Likewise.
2997
2998         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
2999         file.
3000
3001         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
3002         SSE4.1.
3003         (sse4_1_insertps): Likewise.
3004         (*sse4_1_extractps): Likewise.
3005         (sse4_1_ptest): Likewise.
3006         (sse4_1_mulv2siv2di3): Likewise.
3007         (*sse4_1_mulv4si3): Likewise.
3008         (*sse4_1_smax<mode>3): Likewise.
3009         (*sse4_1_umax<mode>3): Likewise.
3010         (*sse4_1_smin<mode>3): Likewise.
3011         (*sse4_1_umin<mode>3): Likewise.
3012         (sse4_1_eqv2di3): Likewise.
3013         (*sse4_1_pinsrb): Likewise.
3014         (*sse4_1_pinsrd): Likewise.
3015         (*sse4_1_pinsrq): Likewise.
3016         (*sse4_1_pextrb): Likewise.
3017         (*sse4_1_pextrb_memory): Likewise.
3018         (*sse4_1_pextrw_memory): Likewise.
3019         (*sse4_1_pextrq): Likewise.
3020         (sse4_1_blendpd): Likewise.
3021         (sse4_1_blendps): Likewise.
3022         (sse4_1_blendvpd): Likewise.
3023         (sse4_1_blendvps): Likewise.
3024         (sse4_1_dppd): Likewise.
3025         (sse4_1_dpps): Likewise.
3026         (sse4_1_movntdqa): Likewise.
3027         (sse4_1_mpsadbw): Likewise.
3028         (sse4_1_packusdw): Likewise.
3029         (sse4_1_pblendvb): Likewise.
3030         (sse4_1_pblendw): Likewise.
3031         (sse4_1_phminposuw): Likewise.
3032         (sse4_1_extendv8qiv8hi2): Likewise.
3033         (*sse4_1_extendv8qiv8hi2): Likewise.
3034         (sse4_1_extendv4qiv4si2): Likewise.
3035         (*sse4_1_extendv4qiv4si2): Likewise.
3036         (sse4_1_extendv2qiv2di2): Likewise.
3037         (*sse4_1_extendv2qiv2di2): Likewise.
3038         (sse4_1_extendv4hiv4si2): Likewise.
3039         (*sse4_1_extendv4hiv4si2): Likewise.
3040         (sse4_1_extendv2hiv2di2): Likewise.
3041         (*sse4_1_extendv2hiv2di2): Likewise.
3042         (sse4_1_extendv2siv2di2): Likewise.
3043         (*sse4_1_extendv2siv2di2): Likewise.
3044         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3045         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3046         (sse4_1_zero_extendv4qiv4si2): Likewise.
3047         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3048         (sse4_1_zero_extendv2qiv2di2): Likewise.
3049         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3050         (sse4_1_zero_extendv4hiv4si2): Likewise.
3051         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3052         (sse4_1_zero_extendv2hiv2di2): Likewise.
3053         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3054         (sse4_1_zero_extendv2siv2di2): Likewise.
3055         (*sse4_1_zero_extendv2siv2di2): Likewise.
3056         (sse4_1_roundpd): Likewise.
3057         (sse4_1_roundps): Likewise.
3058         (sse4_1_roundsd): Likewise.
3059         (sse4_1_roundss): Likewise.
3060         (mulv4si3): Don't expand for SSE4.1.
3061         (smax<mode>3): Likewise.
3062         (umaxv4si3): Likewise.
3063         (uminv16qi3): Likewise.
3064         (umin<mode>3): Likewise.
3065         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
3066
3067         * doc/extend.texi: Document SSE4.1 built-in functions.
3068
3069         * doc/invoke.texi: Document -msse4.1.
3070
3071 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
3072
3073         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
3074         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
3075         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
3076         (ASM_SPEC): Add asm_pcrel_spec.
3077         (EXTRA_SPECS): Add asm_pcrel_spec.
3078
3079 2007-05-21  David Daney  <ddaney@avtrex.com>
3080
3081         * doc/install.texi (Building a cross compiler): Add requirements
3082         for Java cross compiler.
3083
3084 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3085
3086         PR middle-end/31995
3087         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
3088         Add loopno argument.  Use evolution_function_is_invariant_rec_p
3089         instead of evolution_function_is_constant_p.
3090         Update calls to evolution_function_is_affine_multivariate_p.
3091         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
3092         Add loopno argument.
3093         * tree-scalar-evolution.c (gather_chrec_stats): Call
3094         evolution_function_is_affine_multivariate_p with a loop
3095         number of 0.
3096         * tree-data-ref.c (analyze_miv_subscript): Likewise.
3097         (analyze_overlapping_iterations): Likewise.
3098         (access_functions_are_affine_or_constant_p): Likewise.
3099         (build_classic_dist_vector_1): If the access functions
3100         are equal, don't do anything.
3101
3102 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
3103             Paolo Carlini  <pcarlini@suse.de>
3104             Uros Bizjak  <ubizjak@gmail.com>
3105
3106         * c-cppbuiltin.c (c_cpp_builtins): Define
3107         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
3108         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
3109         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
3110         * doc/cpp.texi ([Standard Predefined Macros]): Document.
3111
3112 2007-05-21  Mike Stump  <mrs@apple.com>
3113
3114         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
3115         handling as well.
3116         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3117
3118 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
3119
3120         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
3121         implementation if __OPTIMIZE__ is not defined.
3122         (_mm_alignr_pi8): Ditto.
3123         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3124         (_mm_inserti_si64): Ditto.
3125         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3126         (_mm_slli_epi16): Ditto.
3127         (_mm_slli_epi32): Ditto.
3128         (_mm_slli_epi64): Ditto.
3129         (_mm_srai_epi16): Ditto.
3130         (_mm_srai_epi32): Ditto.
3131         (_mm_srli_si128): Ditto.
3132         (_mm_slli_si128): Ditto.
3133         (_mm_srli_epi16): Ditto.
3134         (_mm_srli_epi32): Ditto.
3135         (_mm_srli_epi64): Ditto.
3136         (_mm_extract_epi16): Ditto.
3137         (_mm_insert_epi16): Ditto.
3138         (_mm_shufflehi_epi16): Ditto.
3139         (_mm_shufflelo_epi16): Ditto.
3140         (_mm_shuffle_epi32): Ditto.
3141         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
3142         (_m_pextrw): Ditto.
3143         (_mm_insert_pi16): Ditto.
3144         (_m_pinsrw): Ditto.
3145         (_mm_shuffle_pi16): Ditto.
3146         (_m_pshufw): Ditto.
3147         (_mm_shufle_ps): Ditto.
3148         (_mm_prefetch): Ditto.
3149
3150 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
3151
3152         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
3153         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
3154         * real.c (encode_i370_single, decode_i370_single,
3155         encode_i370_double, decode_i370_double): Functions removed.
3156         (i370_single_format, i370_double_format): Initializations removed.
3157         (real_maxval, round_for_format, exact_real_truncate, significand_size):
3158         Consider the log2_b field to always be one.
3159         (ieee_single_format, mips_single_format, coldfire_single_format,
3160         ieee_double_format, mips_double_format, coldfire_double_format,
3161         ieee_extended_motorola_format, ieee_extended_intel_96_format,
3162         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
3163         ibm_extended_format, mips_extended_format, ieee_quad_format,
3164         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
3165         decimal_single_format, decimal_double_format, decimal_quad_format,
3166         c4x_single_format, c4x_extended_format, real_internal_format): Remove
3167         initialization of log2_b.
3168         * real.h (i370_single_format, i370_double_format): Declarations removed.
3169         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
3170         field to always be one.
3171
3172 2007-05-21  Andreas Schwab  <schwab@suse.de>
3173
3174         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
3175         NOTE_INSN_BASIC_BLOCK_P.
3176         (process_for_unwind_directive): Likewise.
3177
3178 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
3179
3180         * builtins.c (expand_builtin_setjmp_setup): Update comment.
3181         * function.h (struct function): Move va_list_gpr_size,
3182         va_list_fpr_size, function_frequency to front of bitfields.  Add
3183         calls_unwind_init.
3184         (current_function_calls_unwind_init): New.
3185         * except.c (expand_builtin_unwind_init): Set
3186         current_function_calls_unwind_init not
3187         current_function_has_nonlocal_label.
3188         * reload1.c (has_nonexceptional_receiver): New.
3189         (reload): Use it and current_function_calls_unwind_init to
3190         determine whether call-saved regs must be saved.
3191
3192 2007-05-20  Jan Hubicka  <jh@suse.cz>
3193
3194         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
3195         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3196         * ddg.c (create_ddg): LIkewise.
3197         * final.c (final): Remove hunk moving line numbernotes around since
3198         they are no longer present at this stage.
3199         (final_scan_insn): Use NOTE_KIND instead of
3200         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3201         (output_asm_label): Likewise.
3202         * reorg.c (dbr_schedule): Likewise.
3203         * haifa-sched.c (unlink_other_notes): Likewise.
3204         * mode-switching.c (optimize_mode_switching): Likewise.
3205         * graph.c (start_bb): Likewise.
3206         * rtl.def (NOTE): Update description.
3207         * jump.c (squeeze_notes): Delete.
3208         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
3209         NOTE_INSN_BASIC_BLOCK_P when possible.
3210         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
3211         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
3212         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3213         (dwarf2out_var_location): Likewise.
3214         * cfgbuild.c (make_edges): Likewise.
3215         (find_basic_blocks_1): Likewise.
3216         * function.c (reorder_blocks_1): Likewise.
3217         (epilogue_done): Likewise.
3218         (reposition_prologue_and_epilogue_notes): Likewise.
3219         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
3220         notes.
3221         (print_rtl): Likewise.
3222         (print_rtl_single): Likewise.
3223         * gcse.c (insert_insn_start_bb): Likewise.
3224         * alias.c (init_alias_analysis): Likewise.
3225         * calls.c (fixup_tail_calls): Likewise.
3226         * except.c (sjlj_emit_function_enter): Likewise.
3227         * emit-rtl.c (add_insn_after): Likeiwse.
3228         (emit_label_before): Likewise.
3229         (emit_label_after): Likewise.
3230         (emit_note_before, emit_note_after, emit_note): Update
3231         parameter to be enum insn_note; do not deal with source
3232         files.
3233         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
3234         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
3235         when possible.
3236         (merge_blocks_move_successor_nojumps): Simplify now when
3237         we don't have BLOCK notes.
3238         (try_optimize_cfg): Likewise.
3239         * cfglayout.c (skip_insns_after_block): Likewise.
3240         (record_effective_endpoints): Likewise.
3241         (duplicate_insn_chain): Likewise.
3242         * varasm.c (output_constant_pool_1): Likewise.
3243         * sched-deps.c (sched_analyze): Likewise.
3244         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
3245         Exterminate.
3246         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
3247         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
3248         (SET_INSN_DELETED): Simplify.
3249         (NOTE_LINE_NUMBER): Exterminate.
3250         (NOTE_LINE_KIND): New.
3251         (NOTE_INSN_BASIC_BLOCK_P): Update.
3252         (enum insn_note): Simplify.
3253         (GET_NOTE_INSN_NAME) Simplify.
3254         (emit_note_before, emit_note_after, emit_note): Update prototype.
3255         (squeeze_notes): Remove.
3256         * sched-int.h (NOTE_NOT_BB_P): Update.
3257         * resource.c (mark_target_live_regs): Update.
3258         * sched-rgn.c (debug_dependencies): Update.
3259         * sched-vis.c (print_insn): Update.
3260         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
3261         * config/i386/i386.c (ix86_output_function_epilogue): Update.
3262         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
3263         (TARGET_ADJUST_UNROLL_MAX): Likewise.
3264         (split_branches): Update.
3265         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
3266         4.0.0.
3267         (sh_adjust_unroll_max): Exterminate.
3268         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
3269         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
3270         (m68hc11_reorg): Likewise.
3271         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
3272         (emit_predicate_relation_info): Update.
3273         (process_for_unwind_directive): Update.
3274         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
3275         (output_call): Update.
3276         * config/pa/pa.c (output_lbranch): Update.
3277         (output_millicode_call): Update.
3278         (output_call): Update.
3279         (pa_combine_instructions): Update.
3280         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
3281         * config/bfin/bfin.c (gen_one_bundle): Update.
3282         * cfgrtl.c (can_delete_note_p): Update.
3283         (delete_insn): Update.
3284         (rtl_merge_blocks): Update.
3285         (commit_one_edge_insertion): Update.
3286         (rtl_verify_flow_info): Update.
3287         * stmt.c (expand_case): Do not call squeeze_notes.
3288
3289 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3290
3291         PR middle-end/7651
3292         PR c++/11856
3293         PR c/12963
3294         PR c/23587
3295         PR other/29694
3296         * c.opt (Wtype-limits): New.
3297         * doc/invoke.texi (Wtype-limits): Document it.
3298         (Wextra): Enabled by -Wextra.
3299         * c-opts.c (c_common_post_options): Enabled by -Wextra.
3300         * c-common.c (shorten_compare): Warn with Wtype-limits.
3301
3302 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3303
3304         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
3305         inlined function, not as a macro.
3306         (_mm_alignr_pi8): Ditto.
3307         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3308         (_mm_inserti_si64): Ditto.
3309         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3310         (_mm_extract_epi16): Ditto.
3311         (_mm_insert_epi16): Ditto.
3312         (_mm_shufflehi_epi16): Ditto.
3313         (_mm_shufflelo_epi16): Ditto.
3314         (_mm_shuffle_epi32): Ditto.
3315         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
3316         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
3317         all functions.
3318         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
3319         float constant.
3320         (_m_to_float): Use C89 compatible assignment.
3321
3322 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
3323
3324         PR target/32007
3325         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
3326
3327 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3328
3329         PR middle-end/7651
3330         * doc/invoke.texi (Wreturn-type): Complete description.
3331         (Wextra): Delete item about return-type warning.
3332         * c-decl.c: Delete redundant Wextra warning.
3333
3334 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3335
3336         PR target/31585
3337         * config/i386/pmmintrin.h: Do not include xmmintrin.h
3338         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
3339         inlined function, not as a macro.
3340         (_mm_prefetch): Ditto.
3341         (_m_pextrw): Ditto.
3342         (_mm_insert_pi16): Ditto.
3343         (_m_pinsrw): Ditto.
3344         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
3345         (_m_pshufw): Ditto. Add const to __N argument.
3346         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
3347         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
3348         (_mm_slli_epi32): Ditto.
3349         (_mm_srli_si128): Implement as always inlined function, not as a macro.
3350         Add __inline to function declaration.
3351         (_mm_slli_si128): Ditto.
3352
3353 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
3354
3355         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
3356         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
3357         New constants.
3358         (struct fenv): New structure.
3359         (FP_HANDLE_EXCEPTIONS): New define.
3360         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
3361         (_FP_DECL_EXP): New define.
3362         (FP_INIT_ROUNDMODE): New define.
3363         (FP_ROUNDMODE): New define.
3364
3365 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3366
3367         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
3368         (Wconversion): Update description.
3369         (Wconversion-sign): New.
3370         * c.opt (Wconversion-sign): New.
3371         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
3372         means disabled for C++. Otherwise, take the status of Wconversion.
3373         * c-common.c (conversion_warning): Warn with either Wconversion or
3374         Wconversion-sign.
3375         (warnings_for_convert_and_check): Conditions are already checked by
3376         conversion_warning.
3377         (convert_and_check): Don't check warnings if the conversion failed.
3378
3379 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
3380            Anatoly Sokolov <aesok@dol.ru>
3381
3382         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
3383         avr_epilogue_uses) : Add declaration.