OSDN Git Service

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