OSDN Git Service

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