OSDN Git Service

2007-07-03 Daniel Berlin <dberlin@dberlin.org>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
2
3         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
4         before declaring inequality.
5
6 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7
8         * combine.c (recog_for_combine): Log the success or failure of
9           matching new insn patterns against the machine description in
10           detailed dumps.
11
12 2007-07-03  Revital Eres  <eres@il.ibm.com>
13
14         * ddg.c (print_sccs): New function.
15         (check_sccs): New function.
16         (create_ddg_all_sccs): Use it.
17         * ddg.h (print_sccs): Declare.
18         * modulo-sched.c (sms_order_nodes): Call print_sccs.
19
20 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
21
22         * targhooks.h (default_mode_for_suffix): New function declaration.
23         * targhooks.c (default_mode_for_suffix): New default target hook.
24         * target.h (struct c): New structure in the targetm struct.
25         (mode_for_suffix): New target hook as part of struct c.
26         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
27         default_mode_for_suffix.
28         (TARGET_C): New define.
29         * c-lex.c: Include "target.h".
30         (interpret_float): Use targetm.c.mode_for_suffix to determine
31         the mode for a given non-standard suffix.
32         Makefile.in (c-lex.o): Depend on $(TARGET_H).
33
34         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
35         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
36
37         * doc/extend.texi (Floating Types): New node.  Document __float80 and
38         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
39
40 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
41
42         PR target/32506
43         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
44         predicate instead of target_operand.
45         (divsi3_i1_media, divsi3_media_2): Likewise.
46
47 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
48
49         * tree.h (alias_sets_might_conflict_p): Rename into
50         alias_sets_must_conflict_p.
51         * alias.c (alias_sets_might_conflict_p): Likewise.
52         (alias_sets_conflict_p): Use it.
53         (objects_must_conflict_p): Likewise.
54         * c-common.c (strict_aliasing_warning): Adjust.
55
56 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
57
58         * rtlhooks.c (gen_lowpart_if_possible): Check for
59         invalid subreg before calling gen_lowpart_SUBREG.
60
61 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
62
63         * config/darwin9.h: Add copyright notice.
64         (LINK_COMMAND_SPEC): Add comment.
65         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
66         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
67         DARWIN_LIBSYSTEM_HAS_UNWIND.
68
69 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
70
71         PR libgomp/32468
72         * omp-low.c (check_combined_parallel): New function.
73         (lower_omp_parallel): Call it via walk_stmts, set
74         OMP_PARALLEL_COMBINED if appropriate.
75         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
76         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
77         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
78         don't consider it as combined parallel.
79
80 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
81
82         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
83         (gcc_tooldir): Likewise.
84         * configure: Regenerate.
85         * Makefile.in (libsubdir_to_prefix): New variable, based on the
86         old configure.ac gcc_tooldir setting.
87         (prefix_to_exec_prefix): New variable.
88         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
89         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
90
91 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
92
93         Fix PR tree-optimization/32583
94         Fix PR tree-optimization/32584
95         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
96         (phi_translate_set): Use phi_translate directly now.
97         (make_values_for_stmt): Don't value number RHS if we already know
98         it is constant.
99
100 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
101             Jim Wilson <wilson@specifix.com>
102
103         PR target/31684
104         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
105         copy_insn.
106
107 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
108             Richard Sandiford  <richard@codesourcery.com>
109             Nigel Stephens  <nigel@mips.com>
110
111         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
112         (mips16e_output_save_restore): Declare.
113         (mips16e_save_restore_pattern_p): Likewise.
114         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
115         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
116         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
117         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
118         (BITSET_P): New global macro, extracted from...
119         (mips_for_each_saved_reg): ...here.
120         (mips16e_save_restore_info): New struct.
121         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
122         (mips16e_save_restore_regs): New variable.
123         (mips_split_plus, mips16e_find_first_register): New functions.
124         (mips16e_mask_registers): New function.
125         (compute_frame_size): Expand the commentary before the function.
126         Enforce the MIPS16e save and restore register range restrictions.
127         Pad the general register save area at the low end.
128         (mips16e_save_restore_reg, mips16e_build_save_restore)
129         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
130         (mips16e_output_save_restore, mips16e_collect_propagate_value)
131         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
132         New functions.
133         (mips_expand_prologue, mips_expand_epilogue): Handle
134         GENERATE_MIPS16E_SAVE_RESTORE.
135         * config/mips/mips.md (*mips16e_save_restore): New pattern.
136
137 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
138
139         PR tree-optimization/31966
140         PR tree-optimization/32533
141         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
142         "basic_block" description as its third argument.  Update function
143         calls to get destination bb from "edge" argument.  Save "cond" into
144         aux field of the edge.  Update prototype for changed arguments.
145         (if_convertible_loop_p): Clear aux field of incoming edges if bb
146         contains phi node.
147         (find_phi_replacement_condition): Operate on incoming edges, not
148         on predecessor blocks.  If there is a condition saved in the
149         incoming edge aux field, AND it with incoming bb predicate.
150         Return source bb of the first edge.
151         (clean_predicate_lists): Clean aux field of outgoing node edges.
152         (tree_if_conversion): Do not initialize cond variable. Move
153         variable declaration into the loop.
154         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
155         initializations of new_stmt, arg0 and arg1 variables.
156
157 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
158
159         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
160         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
161
162 2007-07-02  Richard Guenther  <rguenther@suse.de>
163
164         * tree-ssa.c (useless_type_conversion_p): Document
165         future intent as defining the middle-end type system.
166         Re-structure to call langhook last, group by type class,
167         mark questionable parts.
168
169 2007-07-02  Richard Guenther  <rguenther@suse.de>
170
171         * tree-flow.h (types_compatible_p): Declare.
172         * tree-ssa.c (types_compatible_p): New function.
173         * ipa-type-escape.c (discover_unique_type): Use
174         types_compatible_p instead of lang_hooks.types_compatible_p.
175         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
176         * tree-vn.c (expressions_equal_p): Likewise.
177         * tree.c (fields_compatible_p): Likewise.
178         * tree-ssa-dom.c (avail_expr_eq): Likewise.
179         (cprop_operand): Use useless_type_conversion_p instead of
180         lang_hooks.types_compatible_p.
181         * tree-inline.c (setup_one_parameter): Likewise.
182         (declare_return_variable): Likewise.
183         * tree-nrv.c (tree_nrv): Likewise.
184         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
185         (maybe_fold_offset_to_component_ref): Likewise.
186         (maybe_fold_offset_to_reference): Likewise.
187         * tree-ssa-copy.c (may_propagate_copy): Likewise.
188         (merge_alias_info): Likewise.
189         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
190         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
191         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
192         * tree-tailcall.c (find_tail_calls): Likewise.
193         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
194         * gimplify.c (canonicalize_addr_expr): Likewise.
195         (fold_indirect_ref_rhs): Likewise.
196         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
197         (cpt_same_type): Likewise.
198         (check_pointer_types_r): Swap parameters to cpt_same_type
199         where appropriate.
200         * fold-const.c (fold_convert): Revert fix for PR15988.
201         * tree-inline.c (setup_one_parameter): Instead fix it here by
202         using fold_build1 instead of fold_convert and checking for
203         error_mark_node.  Convert only if the conversion is necessary.
204
205 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
206
207         * configure.ac: Check for .gnu_attribute on Power.
208         * configure: Regenerate.
209         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
210         attribute for floating-point ABI.
211
212 2007-07-02  Ira Rosen  <irar@il.ibm.com>
213
214         PR tree-optimization/32230
215         PR tree-optimization/32477
216         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
217         address is a constant.
218
219 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
220
221         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
222         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
223         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
224         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
225         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
226         64-bit targets.  Add support for *-elfoabi*.
227         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
228         different settings if $(tm_defines) does not select the EABI.
229         (MULTILIB_EXCLUSIONS): Define in those circumstances.
230         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
231         (MIPS_ARCH_OPTION_SPEC): Likewise.
232         (MIPS_ISA_LEVEL_SPEC): Likewise.
233         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
234         * config/mips/elfoabi.h: New file.
235
236 2007-07-02  Richard Guenther  <rguenther@suse.de>
237
238         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
239         (useless_type_conversion_p): ... this.
240         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
241         (useless_type_conversion_p): ... this.
242         * builtins.c (fold_builtin_memory_op): Rename
243         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
244         * tree-cfg.c (verify_expr): Likewise.
245         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
246         * tree-ssa-ccp.c (ccp_fold): Likewise.
247         * tree-ssa-copy.c (may_propagate_copy): Likewise.
248         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
249         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
250         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
251         * tree-ssa-pre.c (eliminate): Likewise.
252         * tree-ssa.c (delete_tree_ssa): Likewise.
253         (tree_ssa_useless_type_conversion): Likewise.
254         * tree.c (build2_stat): Likewise.
255
256 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
257
258         Fix PR tree-optimization/32571
259         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
260         simplifying them.
261
262 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
263
264         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
265         and other expected operations explicitly, change default to
266         gcc_unreachable. 
267
268 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
269
270         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
271         PARALLEL.
272         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
273         (tls_load_dot_plus_eight): Move the label number into the unspec.
274         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
275
276 2007-07-01  Andreas Schwab  <schwab@suse.de>
277
278         * dwarf2out.c (initial_return_save): Define only if used.
279
280 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
281
282         Unreverting Richard's Revert of:
283
284         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
285
286         * dce.c (deletable_insn_p_1): New function, split out from...
287         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
288         specially, not those inside PARALLELs.  Remove BODY argument
289         and adjust recursive call accordingly.
290         (prescan_insns_for_dce): Update call to delete_insn_p.
291
292 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
293             Revital Eres  <eres@il.ibm.com>
294
295         * ddg.c (create_ddg_all_sccs): Fix missed
296         initialization of scc_nodes.
297
298 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
299
300         PR middle-end/32559
301         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
302         X + ~X to 1 only for INTEGRAL_TYPE_P type.
303
304 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
305
306         * configure.ac: Check for .gnu_attribute on MIPS.
307         * configure, config.in: Regenerate.
308         * config/mips/mips.c (mips_file_start): If supported, output
309         attribute for floating-point ABI.
310
311 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
312
313         PR target/32433
314         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
315         (ffs_cmove): New expander to expand using ctz pattern.
316         (*ffs_cmove): Remove pattern.
317         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
318         (ffsdi2): Expand using ctz pattern.
319         (*ffs_rex64): Remove pattern.
320
321 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
322
323         PR rtl-optimization/32296
324         * pa.md (return): Delete pattern.
325         (return_internal): Remove "(const_int 1)" from pattern.
326         (epilogue): Use return_internal pattern for trivial returns.
327         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
328         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
329
330 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
331
332         * tree-ssa-pre.c (is_exception_related): New function
333         (can_value_number_operation): Use it.
334
335 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
336         
337         Fix PR tree-optimization/32540
338         Fix PR tree-optimization/31651
339
340         * tree-ssa-sccvn.c: New file.
341
342         * tree-ssa-sccvn.h: Ditto.
343         
344         * tree-vn.c: Include tree-ssa-sccvn.h
345         (val_expr_paid_d): Removed.
346         (value_table): Ditto.
347         (vn_compute): Ditto.
348         (val_expr_pair_hash): Ditto.
349         (val_expr_pair_expr_eq): Ditto.
350         (copy_vuses_from_stmt): Ditto.
351         (vn_delete): Ditto.
352         (vn_init): Ditto.
353         (shared_vuses_from_stmt): Ditto.
354         (print_creation_to_file): Moved up.
355         (sort_vuses): Ditto.
356         (sort_vuses_heap): Ditto.
357         (set_value_handle): Make non-static.
358         (make_value_handle): Ditto.
359         (vn_add): Rewritten to use sccvn lookups.
360         (vn_add_with_vuses): Ditto.
361         (vn_lookup): Ditto (and second argument removed).
362         (vn_lookup_with_vuses): Ditto.
363         (vn_lookup_or_add): Ditto (and second argument removed);
364         (vn_lookup_or_add_with_vuses): Ditto.
365         (vn_lookup_with_stmt): New.
366         (vn_lookup_or_add_with_stmt): Ditto.
367         (create_value_handle_for_expr): Ditto.
368
369         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
370         (seen_during_translate): New function.
371         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
372         (phi_trans_add): Ditto.
373         (constant_expr_p): FIELD_DECL is always constant.
374         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
375         Use constant_expr_p.
376         Avoid infinite recursion on mutually valued expressions.
377         Change callers of vn_lookup_or_add.
378         (phi_translate): New function.
379         (compute_antic_safe): Allow phi nodes.
380         (create_component_ref_by_pieces): Update for FIELD_DECL change.
381         (find_or_generate_expression): Rewrite slightly.
382         (create_expression_by_pieces): Updated for vn_lookup_or_add
383         change.
384         Update VN_INFO for new names.
385         (insert_into_preds_of_block): Update for new names.
386         (add_to_exp_gen): New function.
387         (add_to_sets): Use vn_lookup_or_add_with_stmt.
388         (find_existing_value_expr): Rewrite to changed vn_lookup.
389         (create_value_expr_from): Ditto, and use add_to_exp_gen.
390         (try_look_through_load): Removed.
391         (try_combine_conversion): Ditto.
392         (get_sccvn_value): New function.
393         (make_values_for_phi): Ditto.
394         (make_values_for_stmt): Ditto.
395         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
396         SCCVN.
397         (init_pre): Update for SCCVN changes.
398         (fini_pre): Ditto.
399         (execute_pre): Ditto.
400
401         * tree-flow.h (make_value_handle): Declare.
402         (set_value_handle): Ditto.
403         (sort_vuses_heap): Ditto.
404         (vn_lookup_or_add_with_stmt): Ditto.
405         (vn_lookup_with_stmt): Ditto.
406         (vn_compute): Remove.
407         (vn_init): Ditto.
408         (vn_delete): Ditto.
409         (vn_lookup): Update arguments.
410
411         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
412         (tree-vn.o): Ditto.
413         (tree-ssa-sccvn.o): New.
414         (OBJS-common): Add tree-ssa-sccvn.o
415         
416 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
417
418         PR c/4076
419         * c-typeck.c (build_external_ref): Don't mark as used if called
420         from itself.
421         * calls.c (rtx_for_function_call): Likewise.
422         
423 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
424
425         Revert:
426
427         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
428
429         * dce.c (deletable_insn_p_1): New function, split out from...
430         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
431         specially, not those inside PARALLELs.  Remove BODY argument
432         and adjust recursive call accordingly.
433         (prescan_insns_for_dce): Update call to delete_insn_p.
434
435 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
436
437         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
438         (try_combine): Move potential calls to undo_all() so they happen
439         before we commit to using the combined insns.
440
441 2006-06-30  Jan Hubicka  <jh@suse.cz>
442
443         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
444         code.
445
446 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
447
448         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
449         (cgraph_remove_unreachable_nodes): Likewise.
450         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
451         * ipa-inline.c (update_caller_keys): Cast according to the coding
452         conventions.
453         (cgraph_decide_recursive_inlining): Likewise.
454         (cgraph_decide_inlining_of_small_function): Likewise.
455         (try_inline): Likewise.
456         (cgraph_decide_inlining_incrementally): Likewise.
457         * ipa-pure-const.c (get_function_state): Likewise.
458         (scan_function): Likewise.
459         (analyze_function): Likewise.
460         (static_execute): Likewise.
461         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
462         (merge_callee_local_info): Likewise.
463         (analyze_function): Use type safe memory macros.
464         (static_execute): Likewise. Cast according to the coding conventions.
465         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
466         conventions.
467         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
468         names.
469         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
470         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
471         variable names.
472
473 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
474
475         PR middle-end/30024
476         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
477         for complex modes (both int and real).
478
479 2007-06-29  Jan Hubicka  <jh@suse.cz>
480
481         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
482
483 2007-06-29  Jan Hubicka  <jh@suse.cz>
484
485         PR middle-end/32372
486         * cse.c (cse_insn): Avoid invalid sharing in between register note and
487         the insn pattern.
488
489 2007-06-29  Anatoly Sokolov <aesok@post.ru>
490
491         PR target/32335
492         * config/avr/avr.c: Include dataflow header file.
493         (expand_prologue): Adjust for prologue insn change.
494         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
495         inside a insn.
496
497 2007-06-29  Richard Guenther  <rguenther@suse.de>
498
499         PR middle-end/32493
500         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
501         during type verification.
502
503 2007-06-29  Jan Hubicka  <jh@suse.cz>
504
505         * recog.c (validate_change_rtx_1): Unshare TO argument.
506
507 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
508
509         PR tree-optimization/24659
510         * tree-vect-transform.c (vectorizable_call): Handle
511         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
512
513         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
514         * config/i386/i386.c (enum ix86_builtins)
515         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
516         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
517         description.
518         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
519         const using def_builtin_const.
520         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
521         input operands in the same modes as the result.
522         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
523
524 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
525
526         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
527         (df_set_dead_notes_for_mw): Likewise.
528
529 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
530
531         * c-common.c (pointer_int_sum): Do the negation in sizetype.
532
533 2007-06-28  DJ Delorie  <dj@redhat.com>
534
535         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
536
537 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
538
539         * doc/invoke.texi (C++ Dialect Options): Document
540         fvisibility-ms-compat.
541         * c.opt (fvisibility-ms-compat): New.
542
543 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
544
545         PR tree-opt/32417
546         * tree-affine.c (aff_combination_add_elt): Handle
547         pointer addition specially.
548
549 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
550
551         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
552         decl is non-external for AIX ABI.
553
554 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
555
556         * config/rs6000/predicates.md (current_file_function_operand):
557         Ensure the symbol is non-external for AIX ABI.
558
559 2007-06-28  Nick Clifton  <nickc@redhat.com>
560
561         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
562         (fdce, fdse, fpredictive-commoning): Likewise.
563
564 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
565
566         PR other/31400
567         * gcc.c (process_command): Recognize the new -static-libgfortran
568         option.
569
570 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
571
572         PR target/32418
573         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
574         Use a call clobbered hard reg instead of a pseudo reg.
575
576 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
577
578         * config/sh/sh.md (load_gbr): Use correct operand constraint.
579
580 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
581
582         PR target/32479
583         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
584         REG_LIBCALL and REG_RETVAL notes.
585         (divsi3, mulsi3): Likewise.
586         (mulhisi3): Likewise.  Use emit_libcall_block.
587         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
588
589 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
590
591         PR rtl-optimization/32481
592         * combine.c (adjust_for_new_dest): Rescan the changed insn.
593
594 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
595
596         * dce.c (deletable_insn_p_1): New function, split out from...
597         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
598         specially, not those inside PARALLELs.  Remove BODY argument
599         and adjust recursive call accordingly.
600         (prescan_insns_for_dce): Update call to delete_insn_p.
601
602 2007-06-27  Richard Guenther  <rguenther@suse.de>
603
604         PR middle-end/32492
605         * tree.h (fold_convertible_p): Declare.
606         * fold-const.c (fold_convertible_p): New function.
607         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
608         instead of lang_hooks.types_compatible_p.
609
610 2007-06-26  Jan Hubicka  <jh@suse.cz>
611
612         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
613         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
614         early use validate_unshare_change.
615         (reload_combine): Likewise.
616         * recog.c (change_t): New field unshare.
617         (validate_change_1): Rename from validate_change; add argument unshare.
618         (validate_change): Turn into wrapper of validate_change_1; update
619         prototype for bools.
620         (validate_unshare_change): New.
621         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
622         calls of df_insn_rescan.
623         * recog.h (validate_change): Replace ints by bools.
624         (validate_unshare_change): Declare.
625
626 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
627
628         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
629         
630 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
631
632         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
633
634 2007-06-25  Jan Hubicka  <jh@suse.cz>
635
636         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
637         uninlinable call.
638         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
639         cgraph_decide_inlining_incrementally): Move uninlinability checks to
640         places other call site specific checks are performed.
641
642 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
643
644         PR tree-opt/32421
645         * tree-vect-transform.c (vectorizable_operation): Convert
646         POINTER_PLUS_EXPR over to PLUS_EXPR.
647
648 2007-06-25  Chao-ying Fu  <fu@mips.com>
649
650         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
651         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
652         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
653         Document GET_MODE_IBIT, and GET_MODE_FBIT.
654
655         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
656         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
657         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
658         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
659         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
660         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
661         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
662         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
663         ALL_FIXED_POINT_MODE_P): New define.
664         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
665         MODE_UACCUM.
666         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
667
668         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
669         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
670         MODE_VECTOR_UACCUM): New mode classes.
671
672         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
673         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
674         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
675         USA, UDA, and UTA.
676
677         * genmodes.c (struct mode_data): Add ibit and fbit fields.
678         (blank_mode): Initialize ibit and fbit.
679         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
680         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
681         (new_adjust): Change required_class to required_class_from and
682         required_class_to for testing within a range.
683         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
684         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
685         MODE_VECTOR_UACCUM.
686         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
687         (make_fixed_point_mode): New.
688         (_ADD_ADJUST): Change C to C1 and C2.
689         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
690         use a range for machine classes.
691         (ADJUST_IBIT, ADJUST_FBIT): New.
692         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
693         CONST_MODE_FBIT.
694         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
695         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
696         Emit adjustment for ibit and fbit.
697         (emit_mode_ibit, emit_mode_fbit): New.
698         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
699
700 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
701
702         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
703         as the source of the set.
704
705 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
706
707         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
708         FP_REGNO_P): Use IN_RANGE.
709         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
710         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
711         (DATA_REG_P): Use DATA_REGNO_P.
712         (FP_REG_P): Use FP_REGNO_P.
713         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
714         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
715         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
716
717 2007-06-24  Jan Hubicka  <jh@suse.cz>
718
719         PR middle-end/30563
720         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
721
722 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
723
724         PR middle-end/32461
725         * fold-const.c (fold_binary): Strip nops of operand 0
726         of BIT_NOT_EXPR before calling operand_equal_p.
727         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
728         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
729
730 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
731
732         * doc/extend.texi: Document that dllimport and dllexport imply
733         default visibility.
734         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
735         imported or exported declaration, including type declarations.
736         * c-common.c (handle_visibility_attribute): Check for conflicts
737         with dllimport/dllexport.
738         (c_determine_visibility): Handle dllimport/dllexport as an
739         explicit visibility atttribute.
740
741 2007-06-23  Richard Guenther  <rguenther@suse.de>
742
743         PR tree-optimization/16876
744         PR middle-end/29478
745         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
746         for CALL_EXPRs.
747         * tree-inline.c (initialize_inlined_parameters): Do not call
748         lang_hooks.tree_inlining.convert_parm_for_inlining.
749         * cgraphbuild.c (initialize_inline_failed): Set inline failed
750         reason for mismatched types.
751         * gimplify.c (gimplify_call_expr): Verify the call expression
752         arguments match the called function type signature.  Otherwise
753         mark the call expression to be not considered for inlining
754         using CALL_CANNOT_INLINE_P flag.
755         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
756         edges call expression.
757         (cgraph_decide_inlining_of_small_function): Likewise.
758         (cgraph_decide_inlining): Likewise.
759         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
760         Remove define.
761         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
762         * c-typeck.c (c_convert_parm_for_inlining): Remove.
763         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
764         Remove declaration.
765         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
766         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
767         Remove.
768         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
769         convert_parm_for_inlining member.
770
771 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
772
773         PR target/31152
774         * arm.md (negscc): Match the correct operand for optimized LT0 test.
775         Remove optimization for GT.
776
777 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
778
779         PR middle-end/32437
780         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
781         is a PARALLEL.
782         (prescan_insns_for_dce): Add extra parameter.
783         
784 2007-06-23  Jan Hubicka  <jh@suse.cz>
785
786         PR middle-end/31541
787         * gimplify.c (mark_addressable): New function.
788         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
789
790 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
791
792         PR middle-end/32374
793         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
794
795 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
796
797         PR target/32413
798         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
799         moves between MMX/SSE registers to at least 8 units to prevent
800         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
801
802 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
803
804         * config/i386/i386.c (override_options): Correct x86_sahf
805         setting condition.
806
807 2007-06-21  David Daney  <ddaney@avtrex.com>
808
809         PR target/32406
810         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
811         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
812         (exception_receiver): Renamed to ...
813         (nonlocal_goto_receiver): ... this.
814
815 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
816
817         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
818         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
819         partial register accesses.
820
821 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
822
823         * fold-const.c (debug_fold_checksum): Move it under
824         ENABLE_FOLD_CHECKING.
825
826 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
827
828         PR middle-end/20623
829         * tree.h (debug_fold_checksum): Declared.
830         * fold-const.c (build_fold_addr_expr_with_type_1): New.
831         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
832         build_fold_addr_expr_with_type_1.
833         (fold_addr_expr, debug_fold_checksum): New.
834         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
835         (fold_unary, fold_comparison, split_address_to_core_and_offset):
836         Use fold_addr_expr.
837         
838 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
839
840         PR tree-optimization/19590
841         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
842         of scev is a constant.
843         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
844
845 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
846
847         * df-problems.c (df_note_bb_compute): Made computation of live
848         info consistent with df_lr.
849
850 2007-06-21  Richard Guenther  <rguenther@suse.de>
851
852         PR tree-optimization/32453
853         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
854         for pointer anti-range.
855
856 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
857
858         * config/i386/i386.c (processor_target_table): Increase maximum
859         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
860         default 64bit.
861
862         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
863         byte alignment if > 8 byte alignment is preferred.
864         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
865
866 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
867
868         PR tree-optimization/31866
869         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
870         if ASM_EXPR's input is not a SSA_NAME.
871
872         PR middle-end/32362
873         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
874         but decl is a global var, instead return decl.
875         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
876         even for is_global_var decls, if they are private in some outer
877         context.
878
879 2007-06-21  Richard Guenther  <rguenther@suse.de>
880
881         PR tree-optimization/32451
882         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
883
884 2007-06-21  Christian Bruel  <christian.bruel@st.com>
885
886         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
887         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
888         (push_regs): Changed saving order or banked registers.
889         (sh_expand_epilogue): Likewise.
890         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
891         (FIRST_BANKED_REG): Likewise.
892         (LAST_BANKED_REG): Likewise.
893         * config/sh/sh.md (banked) New attribute.
894         (in_delay_slot): Check banked attribute.
895         
896 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
897
898         PR tree-optimization/32075
899         * tree-data-ref.c (subscript_dependence_tester_1, 
900         analyze_miv_subscript, analyze_overlapping_iterations,
901         add_distance_for_zero_overlaps, build_classic_dist_vector,
902         subscript_dependence_tester_1, analyze_overlapping_iterations,
903         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
904         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
905         to evolution_function_is_affine_multivariate_p.
906
907 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
908
909         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
910
911 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
912
913         PR target/32335
914         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
915         for TARGET_A16.
916         * config/m32c/prologue.md (epilogue_exitd_16): New.
917         (epilogue_reit_16): New.
918         (epilogue_exitd): Rename to epilogue_exitd_24.
919         (epilogue_reit): Rename to epilogue_reit_24.
920
921 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
922             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
923
924         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
925         New counters.
926         * haifa-sched.c (queue_to_ready): Don't requeue next insn
927         if dbg_cnt (sched_insn) reaches the limit.
928         (choose_ready): New parameter INSN_PTR and new return value.
929         (schedule_block): Handle dbg_cnt (sched_insn). Handle
930         the new return value from choose_ready.
931         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
932         (rest_of_handle_global_alloc): New global_alloc_at_func.
933
934 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
935
936         PR tree-optimization/25737
937         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
938         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
939         * tree-flow.h (struct fieldoff): Add new field alias_set.
940         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
941         argument addressable_type.  Set alias_set of fieldoff.
942         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
943         (create_overlap_variables_for): Pass alias_set from fieldoff to
944         create_sft.
945         * alias.c (get_alias_set): Use alias_set from SFT if set.
946
947 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
948
949         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
950         of a variable as an unsigned HOST_WIDE_INT integer.
951
952 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
953
954         PR rtl-optimization/32405
955         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
956
957 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
958
959         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
960
961         PR middle-end/31959
962         * builtins.c: Include diagnostic.h.
963         (expand_builtin_expect): Make gcc_assert more permissive.
964         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
965
966         PR inline-asm/32109
967         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
968         and !allows_mem.
969
970         PR middle-end/32285
971         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
972         if ACCUMULATE_OUTGOING_ARGS.
973
974 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
975
976         * config/m68hc11/m68hc11.c: Include dataflow header file.
977         (m68hc11_reorg): Port to dataflow.
978
979 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
980
981         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
982         (struct df_problem.free_blocks_on_set_blocks): New field.
983         (struct dataflow.optional_p): New field.
984         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
985         (df_live_set_all_dirty): New function.
986         * df-scan.c (df_scan_alloc): Initialize optional_p.
987         (problem_SCAN): Initialize free_blocks_on_set_blocks.
988         * df-core.c (df_set_blocks): Removed use of
989         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
990         df_problem.free_blocks_on_set_blocks to determine which blocks are
991         recycled.
992         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
993         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
994         uses dataflow.optional_p to determine if problem should be
995         deleted.
996         (rest_of_handle_df_initialize): Only start live problem if 
997         -02 or above.
998         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
999         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
1000         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
1001         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
1002         problem_NOTE):  Initialize free_blocks_on_set_blocks.
1003         (df_lr_bb_local_compute): Recompute luids if df_live problem is
1004         not active.
1005         (df_live_set_all_dirty, df_note_alloc): New function.
1006         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
1007         df_get_live_*.
1008         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
1009         * postreload.c (reload_combine): Ditto.
1010         * cse.c (cse_extended_basic_block): Ditto.
1011         * regmove.c (mark_flags_life_zones): Ditto.
1012         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
1013         erase_matching_seqs): Ditto.
1014         * bt-load.c (compute_defs_uses_and_gen): Ditto.
1015         * integrate (allocate_initial_values): Ditto.
1016         * combine.c (reg_dead_at_p): Ditto.
1017         * resource.c (mark_target_live_regs): Ditto.
1018         * sched-rgn.c (check_live_1, update_live_1): Ditto.
1019         * config/sh/sh.c (find_r0_life_regions): Ditto.
1020         * global.c (rest_of_handle_global_alloc): Only add back df_live
1021         for -O > 1.
1022         * local-alloc.c (rest_of_handle_local_alloc): Only remove
1023         df_live for -O > 1.
1024         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
1025         df_get_live_*.
1026         (if_convert): Make sure df_live is there at -O == 1.
1027         (pass_if_after_combine): Cleanup flags.
1028         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
1029         is there at -O == 1.
1030         
1031 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
1032
1033         * config/arm/arm.c (arm_get_frame_offsets): Set
1034         offsets->locals_base to avoid negative stack size.
1035         (thumb1_expand_prologue): Assert on negative stack size.
1036
1037 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
1038
1039         PR tree-optimization/32367
1040         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
1041         of the chrec has no evolution in that loop.
1042         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
1043
1044 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
1045
1046         * config/xtensa/xtensa.c: Include "df.h".
1047         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
1048         (xtensa_va_start): Invoke make_tree with sizetype for
1049         expand_builtin_saveregs and then convert the result to a pointer.
1050         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
1051         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
1052         Subtract argument size from index value as integers and then use
1053         POINTER_PLUS_EXPR to add the result to the array address.
1054         
1055 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1056
1057         PR target/32335
1058         * config/m32c/m32c.c: Include dataflow header file.
1059         (m32c_emit_prologue): Adjust for prologue insn change.
1060         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
1061         once inside a PARALLEL. Assume frame size passed in operand 0
1062         includes space to save the fb register.
1063         (prologue_enter_24): Likewise.
1064         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
1065
1066 2007-06-19  David Daney  <ddaney@avtrex.com
1067
1068         PR target/32313
1069         * config/mips/mips.md (cprestore): Mark $gp as used.
1070
1071 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1072
1073         PR target/32369
1074         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
1075         (frv_ifcvt_modify_insn): Likewise.
1076
1077 2007-06-19  Richard Guenther  <rguenther@suse.de>
1078
1079         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
1080         only handle positive offsets that fit in a HOST_WIDE_INT.
1081
1082 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
1083
1084         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
1085         result of rsqrt insn for zero input argument to avoid NaN.
1086
1087 2007-06-19  Richard Guenther  <rguenther@suse.de>
1088
1089         PR middle-end/31950
1090         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
1091
1092 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
1093
1094         PR tree-optimization/32353
1095         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
1096
1097 2007-06-19  Nick Clifton  <nickc@redhat.com>
1098
1099         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
1100
1101 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1102
1103         PR target/32389
1104         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
1105         * config/i386/i386.c (assign_386_stack_local): Assert that
1106         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
1107         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
1108         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
1109         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
1110
1111 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
1112
1113         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
1114
1115 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
1116
1117         PR rtl-optimization/32321
1118         * gcse.c (replace_store_insn): Update the note before
1119         calling emit_insn_after.
1120
1121 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
1122
1123         PR middle-end/32355
1124         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
1125         cse_main.
1126         * df-problems.c (df_note_bb_compute): Fix dumping info.
1127         
1128 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
1129
1130         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
1131         insn with emit_jump_insn.
1132
1133 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1134
1135         PR tree-optimization/32383
1136         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
1137         * targhooks.h (default_builtin_reciprocal): Update prototype.
1138         * target.h (struct gcc_target): Update builtin_reciprocal.
1139         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
1140         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
1141         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
1142         when fndecl is in BUILT_IN_MD class.
1143         (execute_convert_to_rsqrt): Ditto.
1144
1145         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
1146         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
1147         Convert BUILT_IN_SQRTF code only  when md_fn is false.
1148
1149 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1150
1151         * bt-load.c (move_btr_def): Fix the order of arguments
1152         to validate_replace_rtx.
1153
1154 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
1155
1156         * config/m68k/m68k-devices.def: Add 54450..54455.
1157
1158 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
1159
1160         PR rtl-optimization/32366
1161         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
1162         FLOAT_EXTEND]: Prevent non-scalar modes from entering
1163         significand_size.
1164
1165 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
1166
1167         PR middle-end/32349
1168         * modulo-sched (generate_reg_moves): Added rescan parameter and if
1169         this is true, rescan insn being modified.
1170         (sms_schedule): Added rescan parameter.
1171         (rest_of_handle_sms): Moved freeing of dominance info to before
1172         getting out of cfg_layout.
1173         
1174 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
1175
1176         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
1177         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
1178         appropriate.
1179
1180         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
1181         FL_CF_EMAC from the entry for isac.
1182
1183         * config/m68k/predicates.md (const_call_operand): Adjust comment.
1184         (const_sibcall_operand): New.
1185         (sibcall_operand): Use it.
1186         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
1187         (m68k_isas): ISAC does not imply FPU or EMAC.
1188         (override_options): Add ISA_C logic for symbolic jump & call.
1189
1190 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
1191
1192         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
1193         return mode from the builtin itself.
1194         (sparc_fold_builtin): Fix cast of zero constant.
1195
1196 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1197
1198         * targhooks.c (default_builtin_reciprocal): New default target hook.
1199         * targhooks.h (default_builtin_reciprocal): Add prototype.
1200         * hooks.c (hook_tree_tree_bool_null): Remove hook.
1201         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
1202         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
1203         default_builtin_reciprocal.
1204
1205 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1206
1207         PR middle-end/31723
1208         * hooks.c (hook_tree_tree_bool_null): New hook.
1209         * hooks.h (hook_tree_tree_bool_null): Add prototype.
1210         * tree-pass.h (pass_convert_to_rsqrt): Declare.
1211         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
1212         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
1213         and convert it to reciprocal a*rfunc(b).
1214         (execute_convert_to_rsqrt): New function.
1215         (gate_convert_to_rsqrt): New function.
1216         (pass_convert_to_rsqrt): New pass definition.
1217         * target.h (struct gcc_target): Add builtin_reciprocal.
1218         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
1219         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
1220         TARGET_BUILTIN_RECIPROCAL.
1221         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
1222
1223         * config/i386/i386.h (TARGET_RECIP): New define.
1224         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
1225         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1226         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1227         and not optimizing for size.
1228         (*rcpsf2_sse): New insn pattern.
1229         (*rsqrtsf2_sse): Ditto.
1230         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1231         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1232         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1233         and not optimizing for size.
1234         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
1235         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1236         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1237         and not optimizing for size.
1238         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
1239         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1240         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1241         and not optimizing for size.
1242         (*sse_rsqrtv4sf2): Do not export.
1243         (sqrtv4sf2): Ditto.
1244         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1245         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1246         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1247         and not optimizing for size.
1248         (sqrtv4sf2): Ditto.
1249         * config/i386/i386.opt (mrecip): New option.
1250         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
1251         (ix86_emit_swsqrtsf): Ditto.
1252         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
1253         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
1254         builtin definition.
1255         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
1256         ix86_expand_unop1_builtin.
1257         (ix86_emit_swdivsf): New function.
1258         (ix86_emit_swsqrtsf): Ditto.
1259         (ix86_builtin_reciprocal): New function.
1260         (TARGET_BUILTIN_RECIPROCAL): Use it.
1261         (ix86_vectorize_builtin_conversion): Rename from
1262         ix86_builtin_conversion.
1263         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
1264         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
1265         "i386 and x86_64 Options" section.
1266         (Intel 386 and AMD x86_64 Options): Document -mrecip.
1267
1268 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
1269             Zdenek Dvorak <dvorakz@suse.cz>
1270             Richard Guenther  <rguenther@suse.de>
1271             Kaz Kojima  <kkojima@gcc.gnu.org>
1272
1273         * tree-vrp.c (compare_values_warnv): Convert val2 to
1274         the type of val1.
1275         (extract_range_from_assert): Create
1276         POINTER_PLUS_EXPR for pointer types.
1277         (extract_range_from_binary_expr): Handle
1278         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
1279         for pointer types.
1280         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
1281         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
1282         POINTER_PLUS_EXPR as PLUS_EXPR.
1283         (number_of_iterations_lt_to_ne):
1284         For pointer types, use sizetype when
1285         creating MINUS_EXPR/PLUS_EXPRs.
1286         (assert_loop_rolls_lt): For pointer types, use sizetype when
1287         creating MINUS_EXPR/PLUS_EXPRs.
1288         (number_of_iterations_le): Likewise.
1289         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
1290         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
1291         like PLUS_EXPR and MINUS_EXPR.
1292         * tree-pretty-print.c (dump_generic_node): Handle
1293         POINTER_PLUS_EXPR.
1294         (op_prio): Likewise.
1295         (op_symbol_1): Likewise.
1296         * optabs.c (optab_for_tree_code): Likewise.
1297         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
1298         specially.
1299         * tree-tailcall.c (process_assignment): Mention
1300         POINTER_PLUS_EXPR in a TODO comment.
1301         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
1302         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
1303         not used with a pointer and an integer type.
1304         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
1305         increment using chrec_convert_rhs instead of chrec_convert.
1306         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
1307         PLUS_EXPR except for the right hand side's type will be
1308         sizetype.
1309         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
1310         (fold_used_pointer_cast): Kill.
1311         (pointer_offset_p): Kill.
1312         (fold_used_pointer): Kill.
1313         (pointer_used_p): Kill.
1314         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
1315         call fold_used_pointer.
1316         (instantiate_parameters_1): Convert the increment
1317         using chrec_convert_rhs instead of chrec_convert.
1318         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
1319         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
1320         instead of PLUS_EXPR.
1321         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
1322         PLUS_EXPR for pointers.
1323         (std_gimplify_va_arg_expr): Likewise.
1324         (fold_builtin_memory_op): Likewise.
1325         (fold_builtin_strstr): Likewise.
1326         (fold_builtin_strchr): Likewise.
1327         (fold_builtin_strrchr): Likewise.
1328         (fold_builtin_strpbrk): Likewise.
1329         (expand_builtin_memory_chk): Likewise.
1330         (fold_builtin_memory_chk): Likewise.
1331         (std_expand_builtin_va_start): Use
1332         sizetype for the call to make_tree and then convert
1333         to the pointer type.
1334         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
1335         instead of PLUS_EXPR for adding to a pointer.
1336         (std_gimplify_va_arg_expr): Use fold_build2 for
1337         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
1338         the operands to sizetype first and then cast the BIT_AND_EXPR
1339         back to the pointer type.
1340         * fold-const.c (build_range_check): Handle pointer types
1341         specially.
1342         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
1343         of PLUS_EXPR's. Make sure the offset is converted to
1344         sizetype.
1345         (try_move_mult_to_index): Strip the NOPs from the offset.
1346         Remove code argument and replace all uses with PLUS_EXPR.
1347         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
1348         specially. Don't use a pointer type for MINUS_EXPR.
1349         (fold_unary): Handle for (T1)(X op Y),
1350         only p+ as that is the only as that can be handled for
1351         binary operators now.
1352         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
1353         POINTER_PLUS_EXPR.
1354         <case PLUS_EXPR>: Add folding of PTR+INT into
1355         PTR p+ INT.
1356         Don't call try_move_mult_to_index.
1357         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
1358         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
1359         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
1360         Don't call try_move_mult_to_index.
1361         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
1362         (tree_expr_nonzero_p): Likewise.
1363         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
1364         of PLUS_EXPR for the complex expression folding.
1365         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
1366         first chrec is a pointer type, then the second should
1367         be sizetype and not the first's type.
1368         For POINTER_PLUS_EXPR, use a different right hand side type.
1369         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1370         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
1371         different right hand side type.
1372         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1373         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
1374         instead of PLUS_EXPR.
1375         When either operand is zero, convert the other operand.
1376         (chrec_apply): Use chrec_convert_rhs
1377         on the argument x instead of chrec_convert.
1378         (reset_evolution_in_loop): For pointer types, the new_evol
1379         should be sizetype.
1380         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
1381         different right hand side type.
1382         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1383         (chrec_convert_rhs): New function.
1384         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
1385         different right hand side type.
1386         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1387         * tree-chrec.h (chrec_convert_rhs): New prototype.
1388         (build_polynomial_chrec): For pointer types, the right hand
1389         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
1390         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
1391         Remove subtraction case as it is always addition now.
1392         Make sure the offset is converted to sizetype.
1393         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
1394         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
1395         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
1396         PLUS_EXPR in pointer type.
1397         Handle POINTER_PLUS_EXPR.
1398         (tree_to_aff_combination): Likewise.
1399         (force_expr_to_var_cost): Likewise.
1400         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
1401         instead of PLUS_EXPR for pointers.
1402         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
1403         instead of PLUS_EXPR of pointer types.
1404         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
1405         as PLUS_EXPR.
1406         (check_va_list_escapes): Likewise.
1407         (check_all_va_list_escapes): Likewise.
1408         * dwarf2out.c (loc_descriptor_from_tree_1):
1409         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
1410         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
1411         (string_constant): Likewise.
1412         * tree-ssa-address.c (tree_mem_ref_addr): When adding
1413         the offset to the base, use POINTER_PLUS_EXPR.
1414         (add_to_parts): Convert the index to sizetype.
1415         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
1416         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
1417         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
1418         Offset only holds something for PLUS_EXPR.
1419         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
1420         a PLUS_EXPR.
1421         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
1422         and not PLUS_EXPR.
1423         (analyze_accesses_for_modify_stmt): Likewise.
1424         Remove comment about the type being integral type as it is
1425         wrong now.
1426         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
1427         PLUS_EXPR.
1428         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
1429         and not PLUS_EXPR.
1430         Correct the type which the artimentic is done in (is now
1431         sizetype).
1432         Reindent one loop.
1433         * tree-data-ref.c (split_constant_offset): Handle
1434         POINTER_PLUS_EXPR
1435         * tree-affine.c (tree_to_aff_combination): Likewise.
1436         * c-typeck.c (build_unary_op): For pointers create the increment
1437         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
1438         for pointers.
1439         * gimplify.c (gimplify_self_mod_expr): Create a
1440         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1441         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
1442         * tree.def (POINTER_PLUS_EXPR): New tree code.
1443         * tree-predcom.c (ref_at_iteration): If we have a pointer
1444         type do the multiplication in sizetype.
1445         * tree-mudflap.c (mf_xform_derefs_1): Create a
1446         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1447         * tree-ssa-forwprop.c 
1448         (forward_propagate_addr_into_variable_array_index):
1449         Don't expect there to be a cast for the index as that
1450         does not exist anymore.
1451         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
1452         instead of PLUS_EXPR.
1453         Don't check for the first operand of the POINTER_PLUS_EXPR
1454         was the index as it cannot be.
1455         Call forward_propagate_addr_into_variable_array_index with
1456         the SSA_NAME instead of the statement.
1457         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
1458         (compare_constant): Likewise.
1459         (copy_constant): Likewise.
1460         (compute_reloc_for_constant): Likewise.
1461         (output_addressed_constants): Likewise.
1462         (initializer_constant_valid_p): Likewise.
1463         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
1464         Convert the MIN/MAX of the inner type to the outer
1465         type before comparing them.
1466         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
1467         POINTER_PLUS_EXPR instead of PLUS_EXPR.
1468         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
1469         of PLUS_EXPR for pointers.
1470         * tree-inline.c (estimate_num_insns_1): Handle
1471         POINTER_PLUS_EXPR.
1472         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
1473         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1474         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
1475         instead of PLUS_EXPR for the pointer increment statement.
1476         (vect_update_ivs_after_vectorizer): For pointer types, create
1477         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
1478         MULT_EXPR in sizetype.
1479         (vect_gen_niters_for_prolog_loop): Add a cast when creating
1480         byte_misalign.
1481         * tree-object-size.c (plus_expr_object_size): Handle
1482         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
1483         code which is trying to figure out which side is a pointer and 
1484         is the index.
1485         (check_for_plus_in_loops_1): Likewise.
1486         (check_for_plus_in_loops): Likewise.
1487         * c-common.c (pointer_int_sum): Create a
1488         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1489         * tree-ssa-structalias.c (handle_ptr_arith): Handle
1490         only POINTER_PLUS_EXPR.  Removing all the extra
1491         code which is trying to figure out which side is a pointer and 
1492         is the index.
1493         * tree-cfg.c (verify_expr): Add extra checking for pointers and
1494         PLUS_EXPR and MINUS_EXPR.
1495         Also add checking to make sure the operands of POINTER_PLUS_EXPR
1496         are correct.
1497         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
1498         with make_tree, instead of a pointer type.
1499         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
1500         for pointers instead of PLUS_EXPR.
1501         (s390_gimplify_va_arg): Likewise.
1502         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
1503         instead of PLUS_EXPR when doing addition on pointer
1504         types.  Use sizetype for the second operand.
1505         (spu_gimplify_va_arg_expr): Likewise.
1506         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
1507         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
1508         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
1509         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
1510         for the pointer addition and also use size_int/sizetype
1511         for the offset.
1512         (ix86_gimplify_va_arg): Likewise.
1513         Perform BIT_AND_EXPR on sizetype arguments.
1514         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
1515         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
1516         for the pointer additions and also use size_int for the offsets.
1517         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
1518         additions and also use size_int for the offsets.  Perform
1519         BIT_AND_EXPR on sizetype arguments.
1520         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
1521         POINTER_PLUS_EXPR for pointers and create the
1522         BIT_AND_EXPR in sizetype.
1523         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
1524         instead of PLUS_EXPR for pointer addition.
1525         (rs6000_va_start): Likewise.
1526         Also use sizetype for the offset.
1527         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
1528         as PLUS_EXPR/MINUS_EXPR.
1529         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
1530         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
1531         Don't use BIT_AND_EXPR on a pointer type, convert the
1532         expression to sizetype first.
1533         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
1534         for pointers.
1535         (mips_gimplify_va_arg_expr): Likewise.
1536         Don't create BIT_AND_EXPR in a pointer type.
1537
1538 2007-06-15  Eric Christopher  <echristo@apple.com>
1539
1540         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
1541         (x86_64-*-darwin*): Ditto.
1542         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
1543         for above.
1544
1545 2007-06-15  Matthew Wilcox <matthew@wil.cx>
1546
1547         * doc/extend.texi: Document behavior of __attribute__((aligned))
1548         on typedefs.
1549
1550 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1551
1552         * rtlanal.c (note_stores): Improve documentation.
1553
1554 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1555
1556         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
1557         LOCAL_LABEL_PREFIX): Delete.
1558         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
1559         (bfin_internal_label): Delete.
1560
1561 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
1562
1563         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
1564         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
1565         otherwise define to LIBGCC2_TF_CEXT.
1566         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
1567         (LIBGCC_TF_CEXT): Ditto.
1568         (TF_SIZE): Ditto.
1569
1570 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
1571
1572         PR rtl-optimization/32339
1573         * df-scan.c (df_uses_record): Don't modify flags but just add to
1574         it for df_ref_record.
1575
1576 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1577
1578         * tree-mudflap.c: Fix whitespace issues.
1579
1580 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
1581
1582         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
1583
1584 2007-06-14  Eric Christopher  <echristo@apple.com>
1585
1586         * config/i386/sse.md (movdi_to_sse): Rewrite body.
1587         (movv4sf): Use gcc_unreachable instead of abort.
1588
1589 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1590
1591         PR target/32268
1592         * config/i386/sfp-machine.h (CMPtype): New define.
1593         (mach stubs): Use CMPtype instead of int as a return type.
1594
1595 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1596
1597         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
1598         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
1599         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
1600         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
1601         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
1602         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
1603         config/soft-fp/soft-fp.h: Update from glibc CVS.
1604
1605 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1606
1607         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
1608
1609 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1610
1611         PR target/32341
1612         * config/v850/v850.c: Include dataflow header file.
1613         (substitute_ep_register): Fix typo.
1614
1615 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1616
1617         * configure.ac: Fix earlier checkin.
1618         * configure: Regenerated.
1619
1620 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1621
1622         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
1623         * aclocal.m4: Regenerate.
1624         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
1625         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
1626         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
1627         * configure: Regenerate.
1628         * Makefile.in (LOOSE_WARN): Subst loose_warn.
1629
1630         * Makefile.in (quickstrap): Build libgcc too.
1631
1632 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1633
1634         * configure.ac: Add --enable-checking=df.  Explicitly mention that
1635         the variables are initialized as for "release".
1636         * df-core.c: Use it.
1637         * configure: Regenerate.
1638         * config.in: Regenerate.
1639
1640 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
1641
1642         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
1643         validate_replace_rtx instead of replace_rtx.
1644         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
1645
1646 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
1647
1648         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
1649         (DWARF2_UNWIND_INFO): Override default if configured with
1650         SJLJ EH disabled.
1651         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
1652         (ENDFILE_SPEC): Add crtend.o.
1653         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
1654         (ENDFILE_SPEC): Add crtend.o.
1655         (TARGET_USE_JCR_SECTION): Define.
1656         (MD_UNWIND_SUPPORT): Define for 32-bit target.
1657
1658         * config/i386/cygming-crtbegin.c: New file.
1659         * config/i386/cygming-crtend.c: New file.
1660
1661 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
1662
1663         * config/i386/w32-unwind.h: New file.
1664
1665 2007-06-13  Eric Christopher  <echristo@apple.com>
1666
1667         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
1668         the user set a value below STACK_BOUNDARY.
1669
1670 2007-06-13  Thiemo Seufer  <ths@networkno.de>
1671
1672         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
1673         imply -lpthread for -pthread.
1674
1675 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1676
1677         * basic-block.h: Remove the prototype for
1678         free_basic_block_vars.
1679         * cfglayout.h: Remove the prototype for
1680         insn_locators_initialize.
1681         * tree.h: Remove the prototype for emit_line_note.
1682
1683         * tree-ssa-pre.c (mergephitemp): Remove.
1684         (init_pre): Don't use mergephitemp.
1685
1686 2007-06-13  Eric Christopher  <echristo@apple.com>
1687
1688         * config/i386/i386.c (override_options): If we've specified
1689         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
1690
1691 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
1692
1693         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
1694         is defined.
1695
1696 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1697
1698         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
1699         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
1700         (eh_store_handler): New pattern.
1701         (eh_return): Emit it instead of a plain move.
1702
1703 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
1704
1705         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
1706         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
1707         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
1708         def_builtin_const.
1709
1710 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1711
1712         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1713         (find_next_insn_start, find_load): New functions.
1714         (bfin_reorg): Use them to deal with the fact that parallel insns are
1715         no longer represented as a SEQUENCE.
1716
1717 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1718
1719         * config/sparc/sparc.c (sparc_override_options): Initialize
1720         fpu mask correctly.
1721
1722 2007-06-13  Dave Korn  <dave.korn@artimi.com>
1723
1724         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1725         df_get_live_out.
1726
1727 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1728
1729         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1730         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
1731         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
1732         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
1733         tree-vect-transform.c: Fix comment typos.  Follow spelling
1734         conventions.
1735
1736 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1737
1738        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
1739        to the exit block use set.
1740        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
1741        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
1742        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
1743
1744 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1745
1746         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
1747         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
1748         to indicate an error.
1749         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
1750         (dbg_cnt_process_opt): Print an error on a bad argument.
1751         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
1752         * common.opt (-fdbg-cnt-list): New.
1753         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
1754
1755 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
1756
1757         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
1758         flag on ref-all pointers.
1759
1760 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1761
1762         PR middle-end/31579
1763         * expr.c (expand_expr_addr_expr_1): Call expand_expr
1764         for the offset with the modifier as EXPAND_INITIALIZER
1765         if the modifier is EXPAND_INITIALIZER.
1766         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
1767         a register if we had an overflow.
1768
1769 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1770
1771         * real.c (real_isfinite): New.
1772         (real_sqrt): Use it.
1773         * real.h (real_isfinite): New.
1774         * builtins.c: Use it.
1775
1776 2007-06-12  Ian Lance Taylor  <iant@google.com>
1777             Daniel Berlin  <dberlin@dberlin.org>
1778
1779         PR libstdc++/29286
1780         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
1781         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
1782         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
1783         (DECL_NO_TBAA_P): Define.
1784         (struct tree_decl_common): Add no_tbaa_flag field.
1785         * tree-ssa-structalias.c (struct variable_info): Add
1786         no_tbaa_pruning field.
1787         (new_var_info): Initialize no_tbaa_pruning field.
1788         (unify_nodes): Copy no_tbaa_pruning field.
1789         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1790         (dump_solution_for_var): Print no_tbaa_pruning flag.
1791         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
1792         callers.
1793         (compute_tbaa_pruning): New static function.
1794         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
1795         Call compute_tbaa_pruning.
1796         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
1797         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1798         * gimple-low.c (lower_stmt): Likewise.
1799         * tree-gimple.c (is_gimple_stmt): Likewise.
1800         * tree-ssa-operands.c (get_expr_operands): Likewise.
1801         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1802         * tree-inline.c (estimate_num_insns_1): Likewise.
1803         (copy_result_decl_to_var): Likewise.
1804         * expr.c (expand_expr_real_1): Likewise.
1805         * tree-pretty-print.c (dump_generic_node): Likewise.
1806         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
1807         * omp-low.c (omp_copy_decl_2): Likewise.
1808         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
1809         * doc/c-tree.texi (Expression trees): Document
1810         CHANGE_DYNAMIC_TYPE_EXPR.
1811
1812 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1813
1814         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
1815         with !HONOR_NANS and !HONOR_INFINITIES.
1816         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
1817
1818 2007-06-12  Tristan Gingold  <gingold@adacore.com>
1819
1820         * gcov.c: Comments updated.
1821         (source_info): Add file_time field.
1822         (source_index): New variable.
1823         (mutiple_files): New variable.
1824         (generate_results): New function extracted from process_file.
1825         (process_file): Save and restore chain of functions, generate
1826         results and free structures only if not merging results.
1827         (release_structures): File names are now freed in create_file_names
1828         (create_file_names): Free previous file names.
1829         (find_source): File date is now read here and modifications in
1830         source files is checked here.
1831         (read_graph_file): Only reverse order of functions for the current
1832         object file.
1833         (make_gcov_file_name): Do not generate long names if input_name is
1834         NULL.
1835         (output_lines): If merging results do not display graph, data and
1836         runs informations.
1837         Checking source file modification is done in find_source.
1838
1839         * doc/gcov.texi: Append an s to sourcefile.
1840
1841 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1842
1843         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
1844         (forced_nop): New pattern.
1845         * config/bfin/bfin.c: Include "df.h".
1846         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
1847         (bfin_discover_loop): Use df_get_live_in instead of
1848         global_live_at_start.
1849         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
1850         df_analyze when done.
1851         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
1852         the insns.  Use QImode for the final insn in a bundle.  Call
1853         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
1854         gen_nop.
1855         (reorder_var_tracking_notes): New function.
1856         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
1857         update_life_info.  Call df_analyze after scheduling and bundle
1858         generation.  Call reorder_var_tracking_notes if generating these notes.
1859         Call df_finish_pass at the end.
1860
1861 2007-06-12  Dirk Mueller  <dmueller@suse.de>
1862
1863         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
1864         a comparison, not an assignment.
1865
1866 2007-06-12  Olivier Hainque  <hainque@adacore.com>
1867
1868         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
1869         Request walking the subtrees only, leaving the current is_lhs/val_only
1870         untouched.
1871         (convert_non_local_reference): Likewise.
1872
1873 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
1874
1875         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
1876
1877 2007-06-12  Richard Guenther  <rguenther@suse.de>
1878
1879         PR tree-optimization/15353
1880         PR tree-optimization/31657
1881         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
1882         * timevar.def: Add TV_TREE_IFCOMBINE.
1883         * tree-pass.h (pass_tree_ifcombine): Declare.
1884         * tree-ssa-ifcombine.c: New file.
1885         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
1886         * tree-flow.h (blocks_in_phiopt_order): Declare.
1887         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
1888         (tree-ssa-ifcombine.o): New dependencies.
1889
1890 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1891
1892         PR rtl-optimization/32293
1893         * combine.c (simplify_if_then_else): Truncate return from
1894         nonzero_bits() to correct mode.
1895
1896 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1897
1898         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
1899         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
1900
1901 2007-06-11  Diego Novillo  <dnovillo@google.com>
1902
1903         * Makefile.in (reload1.o-warn): Remove.
1904
1905 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
1906
1907         * combine.c (subst): Use reg_overlap_mentioned_p
1908         instead of comparing register numbers directly.
1909
1910 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1911
1912         * reload1.c (mark_home_live_1): Use the mode parameter.
1913
1914 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1915
1916         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
1917         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
1918         word "deferred".
1919         * df-core.c: Ditto.
1920
1921 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
1922
1923         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
1924
1925 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1926
1927         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
1928         from integer registers.
1929         (FP mode splitters): Handle TFmode.
1930
1931 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
1932
1933         * tree-ssa-structalias.c (find_what_p_points_to): Return false
1934         for ref-all pointers that point-to anything.
1935
1936 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
1937
1938         * config/arm/arm.c (arm_output_dwarf_dtprel,
1939         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
1940
1941 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1942
1943         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
1944         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
1945         to memory moves.
1946
1947 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1948
1949         * gcc/tree.c (signed_or_unsigned_type_for): New.
1950         (unsigned_type_for): Use signed_or_unsigned_type_for.
1951         (signed_type_for): Use signed_or_unsigned_type_for.
1952         * gcc/tree.h (signed_or_unsigned_type_for): New.
1953         (get_signed_or_unsigned_type): Remove.
1954         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
1955         lang_hooks.types.signed_type
1956         (size_diffop): Likewise.
1957         (all_ones_mask_p): Likewise.
1958         (build_range_check): Likewise.
1959         (fold_cond_expr_with_comparison): Likewise.
1960         (fold_cond_expr_with_comparison): Likewise.
1961         (unextend): Likewise.
1962         (extract_muldiv_1): Likewise.
1963         (fold_single_bit_test_into_sign_test): Likewise.
1964         (fold_binary): Likewise.
1965         (fold_ternary): Likewise.
1966         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
1967         instead of get_signed_or_unsigned_type.
1968         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1969         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1970         * gcc/expr.c (signed_or_unsigned_type_for): Use
1971         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
1972         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
1973         (lhd_signed_or_unsigned_type): Remove.
1974         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
1975         signed_or_unsigned_type.
1976         (lhd_signed_or_unsigned_type): Remove.
1977         * gcc/expmed.c (make_tree): Use signed_type_for instead of
1978         lang_hooks.types.signed_type.
1979         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
1980         c_common_signed_type instead of lang_hooks.types.signed_type.
1981         (c_common_unsigned_type): New.
1982         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
1983         (shorten_compare): Use c_common_unsigned_type instead of
1984         c_common_signed_or_unsigned_type.
1985         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
1986         unsigned_type_for.
1987         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
1988         lang_hooks.types.signed_type.
1989         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1990         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
1991         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
1992         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
1993         instead of unsigned_type_for.
1994         * gcc/c-decl.c (groakdeclarator): Likewise.
1995         * gcc/c-typeck.c (convert_for_assignment): Likewise.
1996         * gcc/c-common.h (c_common_unsigned_type): New.
1997
1998 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1999
2000         PR target/32280
2001         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
2002         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
2003
2004 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
2005
2006         PR middle-end/32279
2007         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
2008         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
2009
2010 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
2011             Sebastian Pop  <sebpop@gmail.com>
2012
2013         * lambda-code.c (remove_iv): New.
2014         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
2015
2016 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
2017
2018         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
2019         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
2020         * tree-ssa-loop-prefetch.c: Include optabs.h.
2021         (FENCE_FOLLOWING_MOVNT): New macro.
2022         (struct mem_ref): Add independent_p and storent_p fields.
2023         (record_ref): Initalize the new fields.
2024         (gather_memory_references_ref): Return true if the reference
2025         could be analysed.
2026         (gather_memory_references): Check whether all memory accesses
2027         in loop were recorded.
2028         (should_issue_prefetch_p): Return false for nontemporal stores.
2029         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
2030         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
2031         (determine_loop_nest_reuse): Detect independent memory references.
2032         (loop_prefetch_arrays): Call mark_nontemporal_stores.
2033         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
2034         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
2035         * config/i386/i386.h (x86_mfence): Declare.
2036         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
2037         * config/i386/i386.c (x86_mfence): New variable.
2038         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
2039
2040         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
2041         * optabs.c (init_optabs): Initialize storent_optab.
2042         * optabs.h (enum optab_index): Add OTI_storent.
2043         (storent_optab): Declare.
2044         * genopinit.c (optabs): Add initialization for storent_optab.
2045         * tree.h (MOVE_NONTEMPORAL): New macro.
2046         * expr.c (expand_assignment, store_expr, store_constructor_field,
2047         store_constructor, store_field, expand_expr_real_1): Propagate
2048         nontemporality of the expanded store.
2049         (emit_storent_insn): New function.
2050         * expr.h (expand_assignment, store_expr): Declaration changed.
2051         * function.c (assign_parm_setup_reg): Pass false as nontemporality
2052         to expand_assignment.
2053         * stmt.c (expand_asm_expr): Ditto.
2054         * calls.c (initialize_argument_information): Pass false as
2055         nontemporality to store_expr.
2056         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
2057         storentsi): New.
2058
2059 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
2060
2061         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
2062         parameter, use it.
2063         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
2064
2065 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
2066
2067         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
2068         and allow DECL_P here.
2069
2070 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
2071
2072         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
2073         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
2074         track of the size of the expression.
2075         * cfghooks.c (merge_blocks): Remove block from loops structure only
2076         after call of the merge_blocks hook.
2077
2078 2007-06-09  Tom Tromey  <tromey@redhat.com>
2079
2080         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
2081         (deprecated_state): Removed.
2082         (start_decl): Update.
2083         (enum deprecated_states): Moved earlier.
2084         (groktypename): Update.
2085         (push_parm_decl): Likewise.
2086         (grokfield): Likewise.
2087         (start_function): Likewise.
2088
2089 2007-06-09  Ian Lance Taylor  <iant@google.com>
2090
2091         PR tree-optimization/32169
2092         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
2093         CONVERT_EXPR, check whether min and max both converted to an
2094         overflow infinity representation.
2095
2096 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
2097
2098         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
2099         not inserted on the edge.
2100
2101 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
2102
2103         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
2104         instructions if they are supported.
2105         (__divsi3, __umodsi3, __modsi3): Likewise.
2106         (__ashldi3, __ashrdi3, __lshrdi3): New.
2107         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
2108
2109 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
2110             Tony Linthicum <tony.linthicum@amd.com>
2111
2112         * doc/extend.texi: Add fvect-cost-model flag.
2113         * common.opt (fvect-cost-model): New flag.
2114         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
2115         cost fields in stmt_vec_info struct for STMT.
2116         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
2117         fields in stmt_vec_info struct and access functions for the same.
2118         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
2119         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
2120         load, store and vector to scalar operation.
2121         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
2122         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
2123         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
2124         (TARG_VEC_STORE_COST): Define cost of vector store.
2125         (vect_estimate_min_profitable_iters): Define new function.
2126         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
2127         check to evaluate if loop iterations are less than minimum profitable
2128         iterations determined by cost model or minimum vect loop bound defined
2129         by user, whichever is more conservative.
2130         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
2131         run-time check to evaluate if loop iterations are less than minimum
2132         profitable iterations determined by cost model or minimum vect loop
2133         bound defined by user, whichever is more conservative.
2134         (vect_estimate_min_profitable_iterations): New function to estimate
2135         mimimimum iterartions required for vector version of loop to be
2136         profitable over scalar version.
2137         (vect_model_reduction_cost): New function.
2138         (vect_model_induction_cost): New function.
2139         (vect_model_simple_cost): New function.
2140         (vect_cost_strided_group_size): New function.
2141         (vect_model_store_cost): New function.
2142         (vect_model_load_cost): New function.
2143         (vectorizable_reduction): Call vect_model_reduction_cost during
2144         analysis phase.
2145         (vectorizable_induction): Call vect_model_induction_cost during
2146         analysis phase.
2147         (vectorizable_load): Call vect_model_load_cost during analysis phase.
2148         (vectorizable_store): Call vect_model_store_cost during analysis phase.
2149         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
2150         vectorizable_promotion, vectorizable_demotion): Call
2151         vect_model_simple_cost during analysis phase.
2152
2153 2007-06-08  Simon Baldwin  <simonb@google.com>
2154
2155         * reg-stack.c (get_true_reg): Readability change.  Moved default case
2156         label into direct switch statement scope.
2157
2158 2007-06-08  Simon Baldwin  <simonb@google.com>
2159
2160         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
2161         in gcc_assert() with '==' comparison.
2162
2163 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2164
2165         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
2166         TARGET_ABM handling of x86_popcnt variable.
2167
2168 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2169
2170         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
2171         __builtin_copysignq and __builtin_infq built-in functions.
2172
2173 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2174
2175         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
2176         SSE4.2 section.  Correct built-in function names in SSE4A section.
2177
2178 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2179
2180         PR tree-optimization/32243
2181         * tree-vect-transform.c (vectorizable_type_promotion): Move check
2182         for ncopies after ratio check between nunits_out and nunits_in.
2183         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
2184
2185 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
2186
2187         PR tree-optimization/32224
2188         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
2189         vectorization upon a non GIMPLE_MODIFY_STMT.
2190
2191 2007-06-08  Christian Bruel  <christian.bruel@st.com>
2192
2193         PR target/29953
2194         * config/sh/sh.md (doloop_end): New pattern and splitter.
2195         * loop-iv.c (simple_rhs_p): Check for hardware registers.
2196
2197 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
2198
2199         PR middle-end/32209
2200         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
2201         functions.
2202         (verify_dominators): Do not change dominance tree.
2203
2204 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2205
2206         * config/sh/constraints.md: New file.
2207         * config/sh/sh.c: Include tm-constrs.h.
2208         (reg_class_from_letter): Remove.
2209         (prepare_cbranch_operands): Use satisfies_constraint_*
2210         function instead of macro.
2211         (andcosts, broken_move, sh_secondary_reload): Likewise.
2212         * config/sh/predicates.md (trapping_target_operand): Likewise.
2213         (and_operand, arith_operand, arith_reg_or_0_operand,
2214         cmp_operand, logical_operand, target_operand,
2215         ua_address_operand, ua_offset, xor_operand): Likewise.
2216         * config/sh/sh.md: Include constraints.md.
2217         (*movsicc_t_false): Use satisfies_constraint_* function
2218         instead of macro.
2219         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
2220         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
2221         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
2222         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
2223         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
2224         (REG_CLASS_FROM_CONSTRAINT): Remove.
2225         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
2226         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
2227         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
2228         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
2229         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2230         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
2231         function instead of macro.
2232         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2233         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
2234         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
2235         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
2236         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
2237         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
2238         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
2239         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
2240         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
2241         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
2242         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
2243         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
2244         EXTRA_CONSTRAINT_STR): Likewise.
2245         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
2246
2247 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2248
2249         * config/i386/darwin.h (STACK_BOUNDARY): Define.
2250
2251 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
2252
2253         PR c++/30759
2254         * c-common.h (flag_cpp0x): Replaced by...
2255         (cxx_dialect): ... this new variable specifying the C++ dialect that
2256         is used.
2257         * c-common.c (flag_cpp0x): Removed.
2258         (cxx_dialect): Defined.
2259         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
2260         cxx_dialect.
2261         * c-opts.c (c_common_post_options): Likewise.
2262         (set_std_cxx98): Set cxx_dialect to cxx98.
2263         (set_std_cxx0x): Set cxx_dialect to cxx0x.
2264
2265 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2266             Hui-May Chang <hm.chang@apple.com>
2267
2268         * doc/invoke.texi (Darwin Options): Update documentation for
2269         -mmacosx-version-min.
2270         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
2271         * config/darwin-driver.c: New file.
2272         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
2273         * config/t-darwin (darwin-driver.o): New rule.
2274
2275         * config/darwin-c.c (version_as_macro): Ignore low digit.
2276
2277 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
2278
2279         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
2280         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
2281         (CSGNMODE): New mode macro.
2282         (CSGNVMODE): New mode attribute.
2283         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
2284         expander using CSGNMODE mode macro.  Handle TFmode.
2285         (copysign<mode>3_const): Rename from copysignsf3_const and
2286         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
2287         Handle TFmode.
2288         (copysign<mode>3_var): Rename from copysignsf3_var and
2289         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
2290         Handle TFmode.
2291         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
2292         mode macro.  Handle TFmode.
2293         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
2294         (iortf3, *iortf3): Ditto.
2295         (xortf3, *xortf3): Ditto.
2296         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
2297         TFmode and TImode masks.
2298         (ix86_expand_copysign): Expand TFmode copysign insn.
2299         (IX86_BUILTIN_INFQ): New.
2300         (IX86_BUILTIN_FABSQ): Ditto.
2301         (IX86_BUILTIN_COPYSIGNQ): Ditto.
2302         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
2303         [__builtin_fabsq]: Ditto.
2304         [__builtin_copysignq]: Ditto.
2305         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
2306         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
2307         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
2308         ix86_expand_binop_builtin().
2309
2310 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
2311
2312         * config/xtensa/lib1funcs.asm: Clean up whitespace.
2313
2314 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
2315
2316         PR target/31850
2317         * rtl.h (push_to_sequence2): New.
2318         * emit-rtl.c (push_to_sequence2): New.
2319         * function.c (assign_parm_data_all): Add new fields.
2320         (assign_parm_setup_block): Call push_to_sequence2 instead of
2321         push_to_sequence.
2322         (assign_parm_setup_reg): Ditto.
2323         (assign_parm_setup_stack): Ditto.
2324         (assign_parms_unsplit_complex): Ditto.
2325         (assign_parms): Change field name.
2326
2327 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
2328
2329         PR tree-optimization/32220
2330         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
2331         phi node is reached before defining statement.
2332
2333 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2334
2335         PR tree-opt/32231
2336         * tree-vect-transform.c (vectorizable_call): Call update_stmt
2337         after changing the right hand side of the assignment.
2338
2339 2007-06-06  Eric Christopher  <echristo@apple.com>
2340
2341         * config.gcc (i?86-*-darwin*): Remove arch parameter.
2342         (x86_64-*-darwin*): Ditto.
2343         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
2344         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2345
2346 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2347
2348         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
2349         coding conventions.
2350         (add_key): Likewise.
2351         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
2352         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
2353         variable names.
2354         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
2355         (add_cost_one_coalesce): Likewise.
2356         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
2357         variable names. Rename orig to orig_name for consistency.
2358         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
2359         conventions.
2360         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
2361         (record_equivalences_from_stmt): Likewise.
2362         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
2363         the coding conventions.
2364         (memory_ssa_name_same): Likewise.
2365         (dse_optimize_stmt): Likewise.
2366         (dse_record_phis): Likewise.
2367         (dse_finalize_block): Likewise.
2368         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
2369         keywords as variable names.
2370         (may_move_till): Cast according to the coding conventions.
2371         (force_move_till_expr): Avoid using C++ keywords as variable names.
2372         (force_move_till): Cast according to the coding conventions.
2373         (memref_hash): Likewise.
2374         (memref_eq): Likewise.
2375         (gather_mem_refs_stmt): Likewise.
2376         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
2377         keywords as variable names.
2378         (idx_find_step): Cast according to the coding conventions.
2379         (idx_record_use): Likewise.
2380         (find_depends): Likewise.
2381         (prepare_decl_rtl): Likewise.
2382         (mbc_entry_hash): Likewise.
2383         (mbc_entry_eq): Likewise.
2384         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
2385         (simplify_replace_tree): Avoid using C++ keywords as variable names.
2386         (idx_infer_loop_bounds): Cast according to the coding conventions.
2387         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
2388         * tree-ssa-math-opts.c (occ_new ): Likwise.
2389         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
2390         macros.
2391         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
2392         names.
2393         (add_use_op): Likewise.
2394         (add_vop): Likewise.
2395         (add_vuse_op): Likewise.
2396         (add_vdef_op): Likewise.
2397         (get_expr_operands): Likewise.
2398         (push_stmt_changes): Use type safe memory macros.
2399         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
2400         keywords as variable names.
2401         (conditional_replacement): Likewise.
2402         (minmax_replacement): Likewise.
2403         (abs_replacement): Likewise.
2404         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
2405         coding conventions.
2406         (insert_fake_stores): Avoid using C++ keywords as variable names.
2407         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
2408         conventions.
2409         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
2410         (heapvar_insert): Use type safe memory macros.
2411         (new_var_info): Cast according to the coding conventions.
2412         (new_constraint): Likewise.
2413         (remove_preds_and_fake_succs): Use type safe memory macros.
2414         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
2415         conventions.
2416         (thread_single_edge): Likewise.
2417         (thread_through_loop_header): Likewise.
2418
2419 2007-06-06  Eric Christopher  <echristo@apple.com>
2420
2421         * config/i386/i386.c (override_options): Move handling
2422         of TARGET_SUBTARGET* earlier.
2423
2424 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
2425
2426         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
2427         use %n on printf.
2428
2429 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
2430
2431         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
2432         emited outside of basic block.
2433         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
2434         the created blocks.
2435         * rtl.h (delete_insn_chain): Declaration changed.
2436         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
2437         non-removed insns.
2438         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
2439         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
2440         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
2441         to delete_insn_chain.
2442         (rtl_verify_flow_info_1): Verify that the insns in header and footer
2443         do not have bb field set.
2444         (rtl_verify_flow_info): Verify that insns between basic blocks do not
2445         have bb field set.
2446         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
2447         * cfgcleanup.c (try_optimize_cfg): Ditto.
2448
2449 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2450
2451         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
2452         (lambda_body_vector_new): Use type safe memory macros.
2453         (lambda_linear_expression_new): Likewise.
2454         (lambda_loopnest_new): Likewise.
2455         (lambda_lattice_new): Likewise.
2456         (replace_uses_equiv_to_x_with_y): Cast according to the coding
2457         conventions. Use type safe memory macros.
2458         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
2459         (lambda_body_vector_s): Likewise.
2460         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
2461         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
2462
2463 2007-06-06  Richard Guenther  <rguenther@suse.de>
2464
2465         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
2466         if we need to schedule cfg_cleanup.
2467         (tree_ssa_forward_propagate_single_use_vars): Do so.
2468
2469 2007-06-06  Ian Lance Taylor  <iant@google.com>
2470
2471         * fold-const.c (merge_ranges): If range_successor or
2472         range_predecessor fail, just return 0.
2473
2474 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2475
2476         PR tree-optimization/32216
2477         * tree-vectorizer.c (supportable_widening_operation): Determine
2478         signedness of FIX_TRUNC_EXPR from output operand.
2479         (supportable_narrowing_operation): Ditto.
2480         * tree-vect-generic.c (expand_vector_operations_1): Determine
2481         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
2482         from input operand.
2483
2484 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2485
2486         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
2487         (struct pta): ...from here. Change flags to unsigned to avoid
2488         excessive casting (as it is used as a bit mask).
2489         (override_options): Add casts according to the coding convenventions.
2490         (x86_64_elf_unique_section): Likewise.
2491         (examine_argument): Avoid using C++ keywords as variable names.
2492         (construct_container): Likewise.
2493         (legitimize_pic_address): Likewise.
2494         (get_dllimport_decl): Cast according to the coding conventions. Use
2495         type safe memory macros.
2496         (legitimize_address): Cast according to the coding conventions.
2497         (emit_i387_cw_initialization): Corrected the type of slot to enum
2498         ix86_stack_slot.
2499         (ix86_init_machine_status): Use type safe memory macros.
2500         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
2501         (bdesc_pcmpistr): Likewise.
2502         (bdesc_crc32): Likewise.
2503         (bdesc_sse_3arg): Likewise.
2504         (bdesc_2arg): Likewise.
2505         (bdesc_1arg): Likewise.
2506         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
2507         (ix86_expand_sse_pcmpistr): Likewise.
2508         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
2509         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
2510         int to match the langhook definition.
2511         (ix86_builtin_conversion): Change the type of code to unsigned init to
2512         match the langhook definition.
2513         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
2514         names.
2515         (ix86_preferred_output_reload_class): Likewise.
2516         (ix86_cannot_change_mode_class): Likewise.
2517         (ix86_memory_move_cost): Likewise.
2518         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
2519         avoid excessive casting later on.
2520         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
2521
2522 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2523
2524         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
2525         as flags setting insn.
2526         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
2527
2528 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2529
2530         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
2531         (UNSPEC_ROUND): New.
2532         ("sse4_1_round<mode>2"): New insn pattern.
2533         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
2534         SSE4.1 targets.
2535         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
2536         expander using SSEMODEF mode macro.  Expand using
2537         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2538         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
2539         expander using SSEMODEF mode macro.  Expand using
2540         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2541         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
2542         expander using SSEMODEF mode macro.  Expand using
2543         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2544         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
2545         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
2546         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
2547         UNSPEC_ROUNDS.
2548
2549 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
2550             Sebastian Pop  <sebpop@gmail.com>
2551
2552         * lambda.h (build_linear_expr): New.
2553         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
2554         Use build_linear_expr, call fold and force_gimple_operand.
2555         (lambda_loopnest_to_gcc_loopnest): Check that there is
2556         something to insert.
2557         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
2558
2559 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
2560
2561         PR preprocessor/23479
2562         * doc/extend.texi: Document the 0b-prefixed binary integer
2563         constant extension.
2564
2565 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2566
2567         PR tree-optimization/32215
2568         * tree-vectorizer.c (supportable_widening_operation): Return false
2569         for unsupported FIX_TRUNC_EXPR tree code.
2570         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
2571
2572 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
2573
2574         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
2575         register on SPE targets.  Change documentation to reflect
2576         reality.
2577         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2578         Change FIXED_SCRATCH to 14 and document why we're keeping r14
2579         out of the register allocation pool.
2580         (rs6000_reg_live_or_pic_offset_p): New function.
2581         (rs6000_emit_prologue): Move the actual saving of LR up to free
2582         r0 for holding r11.  Split saving of SPE 64-bit registers into
2583         its own case.  Ensure that offsets will always be in-range for
2584         'evstdd' by using r11 as a scratch register to point at the start
2585         of the SPE save area.  Save r11 if necessary, as it is the static
2586         chain register.
2587         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
2588         into its own case.  Ensure that offsets will always be in-range
2589         for 'evldd' by using r11 as a scratch register to point at the
2590         start of the SPE save area.  Also adjust r11 when restoring
2591         the stack pointer to compensate for pre-loading r11.
2592
2593 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
2594
2595         * cfg.c (init_flow): Use type safe memory macros.
2596         (alloc_block): Likewise.
2597         (unchecked_make_edge): Likewise.
2598         (dump_flow_info): Avoid using C++ keywords as variable names.
2599         (copy_original_table_clear): Cast according to the coding conventions.
2600         (copy_original_table_set): Likewise.
2601         * cfgexpand (label_rtx_for_bb): Likewise.
2602         (expand_gimple_basic_block): Likewise.
2603         * cfghooks.c (dump_bb): Likewise.
2604         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
2605         variable names.
2606         (lv_add_condition_to_bb): Likewise.
2607         * cfglayout (relink_block_chain): Cast according to the coding
2608         conventions.
2609         (fixup_reorder_chain): Likewise.
2610         (fixup_fallthru_exit_predecessor): Likewise.
2611         * cfgloop.c (glb_enum_p): Likewise.
2612         (get_exit_description): Likewise.
2613         (dump_recorded_exit): Likewise.
2614         * cfgloop.h (enum loop_estimation): Move out of struct scope...
2615         (struct loop): ... from here.
2616         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
2617         conventions.
2618         * cfgrtl.c (rtl_create_basic_block): Likewise.
2619         (rtl_split_block): Likewise.
2620         (rtl_dump_bb): Likewise.
2621         (cfg_layout_split_block): Likewise.
2622         (init_rtl_bb_info): Use typesafe memory macros.
2623
2624         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
2625         * graphds.h: Updated all usages of edge to graph_edge.
2626         * graphds.c: Likewise.
2627         * cfgloopanal.c: Likewise.
2628
2629 2007-06-05  Ian Lance Taylor  <iant@google.com>
2630
2631         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
2632         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
2633         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
2634         expression.
2635         (test_for_singularity): Likewise.
2636
2637 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2638
2639         * config/i386/constraints.md ("Y2"): Replaced by ...
2640         ("Yt"): This.
2641         * config/i386/i386.md: Likewise.
2642         * config/i386/mmx.md: Likewise.
2643         * config/i386/sse.md: Likewise.
2644
2645 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2646
2647         * config/i386/constraints.md ("z"): Replaced by ...
2648         ("Y0"): This.
2649         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
2650         (sse4_1_blendvps): Likewise.
2651         (sse4_1_pblendvb): Likewise.
2652         (sse4_2_pcmpestr): Likewise.
2653         (sse4_2_pcmpestrm): Likewise.
2654         (sse4_2_pcmpestr_cconly): Likewise.
2655         (sse4_2_pcmpistr): Likewise.
2656         (sse4_2_pcmpistrm): Likewise.
2657         (sse4_2_pcmpistr_cconly): Likewise.
2658
2659 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
2660
2661         * matrix-reorg.c (transform_access_sites): Fix computation.
2662         (transform_allocation_sites): Same.
2663
2664 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2665
2666         * config/i386/i386.c (override_options): Use
2667         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
2668
2669 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2670
2671         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
2672         (nonimm_not_xmm0_operand): Ditto.
2673         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
2674         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
2675         as operand[2] predicate.  Require "z" class XMM register for
2676         operand[3].  Adjust asm template.
2677         ("sse4_1_blendvpd"): Ditto.
2678         ("sse4_1_pblendvb"): Ditto.
2679         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
2680         force op2 into xmm0 register for variable blend instructions.
2681
2682 2007-06-04  Tom Tromey  <tromey@redhat.com>
2683
2684         * c-tree.h (start_enum): Update.
2685         (build_enumerator): Likewise.
2686         * c-decl.c (enum_next_value): Removed.
2687         (enum_overflow): Likewise.
2688         (start_enum): Add c_enum_contents argument.  Don't use globals.
2689         (build_enumerator): Likewise.
2690         * c-tree.h (struct c_enum_contents): New struct.
2691
2692 2007-06-04  Tom Tromey  <tromey@redhat.com>
2693
2694         * c-common.c (c_common_get_alias_set): Fix indentation.
2695
2696 2007-06-04  Ian Lance Taylor  <iant@google.com>
2697
2698         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
2699         to overflow, reduce overflow infinity to regular infinity.
2700         (vrp_var_may_overflow): New static function.
2701         (vrp_visit_phi_node): Check vrp_var_may_overflow.
2702
2703 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
2704
2705         * stor-layout.c (layout_type): Remove duplicate code.
2706
2707 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
2708
2709         PR c/32191
2710         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
2711         before build_common_builtin_nodes ().
2712
2713 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
2714
2715         PR target/31733
2716         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2717
2718 2007-06-04  Jan Hubicka  <jh@suse.cz>
2719
2720         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2721         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2722         instead of _stat version.
2723
2724 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2725
2726         PR tree-optimization/32194
2727         * tree-predcom.c (determine_offset): Check that both references have
2728         the same type.
2729
2730 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2731
2732         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
2733         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
2734         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
2735         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
2736         Add argument to iterate_fix_dominators call.
2737         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
2738         * gcse.c (hoist_code): Change domby to vector.
2739         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
2740         Add argument to iterate_fix_dominators call.
2741         * loop-doloop.c (doloop_modify): Changed recount_dominator to
2742         recompute_dominator.
2743         * lambda-code.c (perfect_nestify): Ditto.
2744         * cfgloopanal.c: Include graphds.h.
2745         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
2746         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
2747         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
2748         add_edge call.
2749         * graphds.c: New file.
2750         * graphds.h: New file.
2751         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
2752         (get_dominated_by, get_dominated_by_region): Change return type to
2753         vector.
2754         (verify_dominators): Recompute all dominators and compare the results.
2755         (recount_dominator): Renamed to ...
2756         (recompute_dominator): ... this.  Do not check that the block is
2757         dominated by entry.
2758         (iterate_fix_dominators): Reimplemented.
2759         (prune_bbs_to_update_dominators, root_of_dom_tree,
2760         determine_dominators_for_sons): New functions.
2761         * et-forest.c (et_root): New function.
2762         * et-forest.h (et_root): Declare.
2763         * Makefile.in (graphds.o): Add.
2764         (cfgloopanal.o): Add graphds.h dependency.
2765         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
2766         * basic-block.h (get_dominated_by, get_dominated_by_region,
2767         iterate_fix_dominators): Declaration changed.
2768         (recount_dominator): Renamed to ...
2769         (recompute_dominator): ... this.
2770         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
2771         (thread_through_all_blocks): Do not free dominance info.
2772
2773 2007-06-03  Andreas Schwab  <schwab@suse.de>
2774
2775         * config/m68k/m68k.c (override_options): Don't override
2776         REAL_MODE_FORMAT.
2777         * config/m68k/m68k-modes.def (SF, DF): Define to use
2778         motorola_single_format and motorola_double_format, resp.
2779         * real.c (motorola_single_format): Renamed from
2780         coldfire_single_format.
2781         (motorola_double_format): Renamed from coldfire_double_format.
2782         (encode_ieee_extended): Generate a proper canonical NaN image
2783         respecting canonical_nan_lsbs_set.
2784         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
2785         true.
2786         * real.h: Adjust declarations.
2787
2788 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2789
2790         PR target/32163
2791         * config/sh/sh.md (symGOT_load): Don't schedule insns when
2792         the symbol is generated with the stack protector.
2793
2794 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
2795
2796         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
2797         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
2798         "interrupt".
2799         * doc/extend.texi (interrupt): Mention m68k.
2800
2801 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
2802
2803         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
2804         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
2805         (ix86_expand_sse_pcmpestr): Do not check operands for
2806         "register_operand", when insn operand predicate is "register_operand".
2807         (ix86_expand_sse_pcmpistr): Ditto.
2808
2809 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
2810             Uros Bizjak  <ubizjak@gmail.com>
2811
2812         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
2813         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
2814         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
2815         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
2816         * config/i386/constraints.md ("z"): New register constraint
2817         for members of SSE_FIRST_REG class.
2818         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
2819         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
2820         SSE_FIRST_REG class.
2821         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
2822         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
2823         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
2824         (IX86_BUILTIN_PCMPESTRM128): Likewise.
2825         (IX86_BUILTIN_PCMPESTRA128): Likewise.
2826         (IX86_BUILTIN_PCMPESTRC128): Likewise.
2827         (IX86_BUILTIN_PCMPESTRO128): Likewise.
2828         (IX86_BUILTIN_PCMPESTRS128): Likewise.
2829         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
2830         (IX86_BUILTIN_PCMPISTRI128): Likewise.
2831         (IX86_BUILTIN_PCMPISTRM128): Likewise.
2832         (IX86_BUILTIN_PCMPISTRA128): Likewise.
2833         (IX86_BUILTIN_PCMPISTRC128): Likewise.
2834         (IX86_BUILTIN_PCMPISTRO128): Likewise.
2835         (IX86_BUILTIN_PCMPISTRS128): Likewise.
2836         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
2837         (struct builtin_description): Change "flag" field to unsigned.
2838         (bdesc_pcmpestr): New builtin description table.
2839         (bdesc_pcmpistr): Likewise.
2840         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
2841         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
2842         Initialize pcmp[ei]str[im] insns for SSE4.2.
2843         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
2844         (ix86_expand_sse_pcmpistr): Likewise.
2845         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
2846         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
2847         (UNSPEC_PCMPISTR): Likewise.
2848         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
2849         (sse4_2_pcmpestri):New isns pattern.
2850         (sse4_2_pcmpestrm): Likewise.
2851         (sse4_2_pcmpestr_cconly): Likewise.
2852         (sse4_2_pcmpistr): New insn patern and splitter.
2853         (sse4_2_pcmpistri):New isns pattern.
2854         (sse4_2_pcmpistrm): Likewise.
2855         (sse4_2_pcmpistr_cconly): Likewise.
2856         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
2857         in SSE4.2.
2858
2859 2007-06-01  David Daney  <ddaney@avtrex.com>
2860
2861         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
2862         LOADGP_ABSOLUTE and not binds_local_p.
2863
2864 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
2865
2866         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
2867
2868 2007-06-01  Ian Lance Taylor  <iant@google.com>
2869
2870         * tree-vrp.c (compare_name_with_value): Always set
2871         used_strict_overflow if we get a result from the variable itself.
2872
2873 2007-06-01  Ian Lance Taylor  <iant@google.com>
2874
2875         PR rtl-optimization/31455
2876         * lower-subreg.c (find_decomposable_subregs): Don't decompose
2877         subregs which have a cast between modes which are not tieable.
2878
2879 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
2880
2881         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
2882         breaks after return statements.
2883
2884 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2885
2886         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
2887         only after no_new_pseudos.
2888
2889 2007-05-31  Eric Christopher  <echristo@apple.com>
2890
2891         * expr.c (convert_move): Assert that we don't have a BLKmode
2892         operand.
2893         (store_expr): Handle BLKmode moves by calling emit_block_move.
2894
2895 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2896
2897         * c-typeck.c (build_indirect_ref): Include type in error message.
2898         (build_binary_op): Pass types to binary_op_error.
2899         * c-common.c (binary_op_error): Take two type arguments, print out
2900         types with error.
2901         * c-common.h (binary_op_error): Update prototype.
2902
2903 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2904
2905         * config/i386/i386.c: Correct coments on -mno-sse4.
2906
2907 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2908
2909         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
2910         (x86_64-*-*): Likewise.
2911         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
2912         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
2913         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
2914         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
2915         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
2916         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
2917         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
2918         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
2919         (OPTION_MASK_ISA_SSE4): Likewise.
2920         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
2921         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
2922         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
2923         (override_options): Support SSE4.2.
2924         (ix86_build_const_vector): Support SImode and DImode.
2925         (ix86_build_signbit_mask): Likewise.
2926         (ix86_expand_int_vcond): Support V2DImode.
2927         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
2928         (IX86_BUILTIN_CRC32HI): Likewise.
2929         (IX86_BUILTIN_CRC32SI): Likewise.
2930         (IX86_BUILTIN_CRC32DI): Likewise.
2931         (IX86_BUILTIN_PCMPGTQ): Likewise.
2932         (bdesc_crc32): Likewise.
2933         (bdesc_sse_3arg): Likewise.
2934         (ix86_expand_crc32): Likewise.
2935         (ix86_init_mmx_sse_builtins): Support SSE4.2.
2936         (ix86_expand_builtin): Likewise.
2937         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2938         __SSE4_2__ for -msse4.2.
2939         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
2940         (CRC32MODE): Likewise.
2941         (crc32modesuffix): Likewise.
2942         (crc32modeconstraint): Likewise.
2943         (sse4_2_crc32<mode>): Likewise.
2944         (sse4_2_crc32di): Likewise.
2945         * config/i386/i386.opt (msse4.2): New for SSE4.2.
2946         (msse4): Likewise.
2947         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
2948         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
2949         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
2950         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
2951         (vcondu<mode>): Likewise.
2952         * doc/extend.texi: Document SSE4.2 built-in functions.
2953         * doc/invoke.texi: Document -msse4.2/-msse4.
2954
2955 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2956
2957         PR tree-optimization/32160
2958         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
2959         variable as gimple reg.
2960         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
2961
2962 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
2963
2964         * gcc.c (main): Don't consider linker options when issuing the
2965         warning about a linker input file not being used.
2966
2967 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2968
2969         * tree-vrp.c (compare_names): Initialize sop.
2970
2971 2007-05-30  Dirk Mueller  <dmueller@suse.de>
2972
2973         * cgraphunit.c (cgraph_analyze_function): Remove
2974         computation of inline parameters.
2975
2976 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
2977
2978         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
2979
2980 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
2981
2982         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
2983         Add vx-common.h.  Include vxworks.h between vx-common.h and
2984         arm/vxworks.h.
2985         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
2986         redefining.
2987         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
2988         (TARGET_ASM_DESTRUCTOR): Likewise.
2989         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
2990         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
2991         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2992         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
2993         (VXWORKS_ENDIAN_SPEC): Define.
2994         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
2995         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
2996         VXWORKS_* equivalents.
2997         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
2998         (ASM_FILE_START): Delete.
2999         (TARGET_VERSION): Reformat.
3000         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
3001         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
3002         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
3003         (FPBIT, DPBIT): Define.
3004         (fp-bit.c, dp-bit.c): New rules.
3005         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
3006         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
3007         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
3008         * config/arm/arm.h: Include vxworks-dummy.h.
3009         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
3010         Mark with ATTRIBUTE_UNUSED.
3011         (arm_override_options): Do not allow VxWorks RTP PIC to be used
3012         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
3013         make it incompatible with -msingle-pic-base.
3014         (arm_function_ok_for_sibcall): Return false for calls that might
3015         go through a VxWorks PIC PLT entry.
3016         (require_pic_register): New function, split out from...
3017         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
3018         for VxWorks RTPs.
3019         (arm_load_pic_register): Handle the VxWorks RTP initialization
3020         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
3021         (arm_emit_call_insn): New function.
3022         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
3023         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
3024         (pic_offset_arm): New pattern.
3025         (call, call_value): Use arm_emit_call_insn.
3026         (call_internal, call_value_internal): New expanders.
3027         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
3028         VxWorks unless __PIC__.
3029
3030 2007-05-30  Eric Christopher  <echristo@gmail.com>
3031
3032         * genrecog.c: Include regs.h in generated file.
3033         * genemit.c: Ditto. Fix up formatting.
3034         * config/mn10300/constraints.md: New.
3035         * config/mn10300/mn10300.md: Include.
3036         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
3037         Fix up for removed macro.
3038         * config/mn10300/predicates.md (call_address_operand):  Ditto.
3039         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
3040         (CONST_OK_FOR_I): Ditto.
3041         (CONST_OK_FOR_J): Ditto.
3042         (CONST_OK_FOR_K): Ditto.
3043         (CONST_OK_FOR_L): Ditto.
3044         (CONST_OK_FOR_M): Ditto.
3045         (CONST_OK_FOR_N): Ditto.
3046         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
3047         (OK_FOR_Q): Ditto.
3048         (OK_FOR_R): Ditto.
3049         (OK_FOR_T): Ditto.
3050         (EXTRA_CONSTRAINT): Ditto.
3051
3052 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3053
3054         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
3055         Remove defines.
3056         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
3057         OPTION_MASK_ISA_64BIT.
3058         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
3059
3060 2007-05-30  Richard Guenther  <rguenther@suse.de>
3061
3062         PR middle-end/32152
3063         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
3064         types for comparison.
3065         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
3066         with original typed arguments.
3067         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
3068
3069 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
3070
3071         PR tree-optimization/31769
3072         * except.c (duplicate_eh_regions): Clear prev_try if
3073         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
3074
3075 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
3076
3077         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
3078         * tree-ssa-sink.c (statement_sink_location): Return basic block and
3079         bsi of the location where statements should be inserted.
3080         (sink_code_in_bb): Take bsi from statement_sink_location.
3081         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
3082         instead of bsi_start.
3083         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
3084         bsi_insert_after.
3085         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
3086         (bsi_move_before): Document inconsistency with bsi_move_after.
3087         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
3088
3089 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3090
3091         * config/i386/i386.h (TARGET_ABM): New define.
3092         (TARGET_POPCNT): Ditto.
3093         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
3094         New temporary defines to redefine from OPTION_ISA_* defines.
3095         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
3096         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
3097         (ix86_isa_flags): New extern int declaration.
3098         (TARGET_SUBTARGET_DEFAULT): New define.
3099         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
3100         (TARGET_SUBTARGET32_DEFAULT): Ditto.
3101         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
3102         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3103         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
3104         * config/i386/darwin.h: Change TARGET_64BIT define to
3105         OPTION_ISA_64BIT.
3106
3107         * config/i386/i386.opt (m3dnowa): Define as undocumented option
3108         using existing "ix86_isa_flags" varible.
3109         (m32, m64): Use existing "ix86_isa_flags" variable.
3110         (mmmx, m3dnow): Ditto.
3111         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
3112         (mabm): Define as non-negative option using "x86_abm" variable.
3113         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
3114
3115         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
3116         Rewrite feature test bitmap.
3117         (ix86_isa_flags): New initialized global int varible.
3118         (ix86_isa_flags_explicit): New static int variable.
3119         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
3120         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
3121         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
3122         target_flags_explicit.
3123         (override_options): Remove "target_enable" and "target_disable" fields
3124         from "struct ptt". Update processor_target_table accordingly. Remove
3125         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
3126         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
3127         "target_flags" and "ix86_isa_flags_explicit" instead of
3128         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
3129         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
3130         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
3131         to true when either of PTA_POPCNT or PTA_ABM is set in
3132         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
3133         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
3134         processor_alias_table flags entry.  Remove handling of
3135         "target_enable" and "target_disable" fields of processor_target_table.
3136         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
3137         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
3138         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
3139         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
3140         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
3141         "target_flags".
3142         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
3143
3144 2007-05-29  David Daney  <ddaney@avtrex.com>
3145
3146         PR gcc/31975
3147         * config/mips/mips.c (mips_output_mi_thunk): Emit
3148         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
3149
3150 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
3151         * config/i386/i386.c (ix86_function_regparm): Added checking of
3152         ix86_force_align_arg_pointer to determine the number of
3153         register parameters.
3154
3155 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
3156
3157         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
3158         (SET_DR_MISALIGNMENT): New.
3159         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
3160         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
3161         Use SET_DR_MISALIGNMENT.
3162         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
3163         pointer.
3164         * tree-data-ref.c (create_data_ref, compute_all_dependences,
3165         find_loop_nest): Export.
3166         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
3167         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
3168         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
3169         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
3170         New macros.
3171         (struct mem_ref): Add field reuse_distance.
3172         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
3173         Initialize reuse_distance field.
3174         (issue_prefetch_ref): Select temporality of prefetch according to
3175         reuse_distance.
3176         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
3177         self_reuse_distance, determine_loop_nest_reuse): New functions.
3178         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
3179         (tree_ssa_prefetch_arrays): Dump L2 cache size.
3180         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
3181         dependency.
3182
3183 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
3184
3185         * tree-ssa-alias.c: Add aliasing overview.
3186
3187 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
3188             Danny Smith  <dannysmith@users.sourceforge.net>
3189
3190         PR target/29498
3191         * config/i386/t-crtfm: Compile crtfastmath.o with
3192         -minline-all-stringops.
3193         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
3194         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
3195
3196 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3197
3198         * doc/md.texi: Document constraints on HP PA-RISC.
3199
3200         * pa/constraints.md: New file.
3201         * pa.md: Include constraints.md.
3202         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
3203         (integer_store_memory_operand, ldil_cint_p): New functions.
3204         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
3205         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3206         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
3207         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
3208         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
3209
3210 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
3211
3212         PR c/31339
3213         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
3214         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
3215         case POSTDECREMENT_EXPR>): Return the error_mark_node
3216         if either the real or imaginary parts would an
3217         error_mark_node.
3218
3219 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
3220
3221         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
3222         name when we remove it from a call.
3223
3224 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
3225
3226         * targhooks.c (default_narrow_bitfield): Remove.
3227         * targhooks.h: Remove the prototype for
3228         default_narrow_bitfield.
3229
3230         * langhooks-def.h: Remove the prototype for
3231         hook_get_alias_set_0.
3232         * langhooks.c (hook_get_alias_set_0): Remove.
3233
3234         * global.c (EXECUTE_IF_CONFLICT): Remove.
3235
3236 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3237
3238         PR tree-opt/32100
3239         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
3240         return true when truth_value_p is true and the type
3241         is of signed:1.
3242
3243 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
3244
3245         * doc/install.texi (Prerequisites): We no longer require Autoconf
3246         2.13 for the top-level.
3247
3248 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
3249
3250         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
3251         memory access via x86_expand_vector_move_misalign() only for
3252         TImode values on 32-bit targets.
3253
3254 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
3255
3256         * matrix-reorg.c: New file. Implement matrix flattening and
3257         transposing optimization.
3258         * tree-pass.h: Add matrix reorg pass.
3259         * common.opt: Add fipa-mreorg flag.
3260         * Makefile.in: Add matrix-reorg.c.
3261         * passes.c: Add matrix reorg pass.
3262         * varpool.c (add_new_static_var): New function.
3263         * cgraph.h (add_new_static_var): Declare.
3264
3265 2007-05-27  Eric Christopher  <echristo@apple.com>
3266
3267         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
3268         sp_offset depending on stack size. Save r12 depending
3269         on registers we're saving later.
3270         (rs6000_emit_epilogue): Update sp_offset depending only
3271         on stack size.
3272
3273 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
3274
3275         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
3276         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
3277         * ifcvt.c (if_convert): Ditto.
3278         * tree-ssa-threadupdate.c (thread_block): Ditto.
3279         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
3280         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3281         verify_loop_closed_ssa): Check number_of_loops instead of
3282         current_loops.
3283         * predict.c (tree_estimate_probability): Ditto.
3284         * tree-if-conv.c (main_tree_if_conversion): Ditto.
3285         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
3286         * modulo-sched.c (sms_schedule): Ditto.
3287         * tree-scalar-evolution.c (scev_const_prop): Ditto.
3288         (scev_finalize): Do not do anything if scev analysis was not
3289         initialized.
3290         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
3291         current_loops == NULL.
3292         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
3293         * loop-init.c (loop_optimizer_init): Do not free current_loops when
3294         there are no loops.
3295         (loop_optimizer_finalize): Assert that loops were analyzed.
3296         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
3297         rtl_doloop): Check number_of_loops instead of current_loops.
3298         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
3299         current_loops == NULL.
3300         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
3301         gate_tree_vectorize tree_linear_transform, check_data_deps,
3302         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
3303         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
3304         Check number_of_loops instead of current_loops.
3305         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
3306         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
3307         free loops if available.
3308         (execute_pre): Do not pass do_fre to fini_pre.
3309
3310 2007-05-27  Tobias Burnus  <burnus@net-b.de>
3311
3312         PR middle-end/32083
3313         * real.c (mpfr_from_real): Fix sign of -Inf.
3314
3315 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
3316
3317         * tree-vect-transform.c (vectorizable_conversion): Initialize
3318         tree_code variables to ERROR_MARK.
3319         (vectorizable_type_demotion): Likewise.
3320         (vectorizable_type_promotion): Likewise.
3321
3322 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3323
3324         PR target/32065
3325         * config/i386/i386.md (movti): Handle push operands via
3326         ix86_expand_push().
3327
3328 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3329
3330         * basic-block.h: Remove the prototype for merge_seq_blocks.
3331         * cfgcleanup.c (merge_seq_blocks): Remove.
3332
3333         * tree-flow.h: Remove the prototype for is_aliased_with.
3334         * tree-ssa-alias.c (is_aliased_with): Remove.
3335
3336 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
3337
3338         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
3339
3340         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
3341
3342         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
3343         ix86_expand_sse4_unpack if SSE4.1 is enabled.
3344         (vec_unpacks_hi_v16qi): Likewise.
3345         (vec_unpacku_lo_v16qi): Likewise.
3346         (vec_unpacks_lo_v16qi): Likewise.
3347         (vec_unpacku_hi_v8hi): Likewise.
3348         (vec_unpacks_hi_v8hi): Likewise.
3349         (vec_unpacku_lo_v8hi): Likewise.
3350         (vec_unpacks_lo_v8hi): Likewise.
3351         (vec_unpacku_hi_v4si): Likewise.
3352         (vec_unpacks_hi_v4si): Likewise.
3353         (vec_unpacku_lo_v4si): Likewise.
3354         (vec_unpacks_lo_v4si): Likewise.
3355
3356 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3357
3358         * c-typeck.c, config/arm/arm.c, config/darwin.c,
3359         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
3360         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
3361         follow spelling conventions in various
3362         warning/error/diagnostic messages.
3363
3364         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
3365         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
3366         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
3367         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
3368         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
3369         * doc/tm.texi: Follow spelling conventions.
3370
3371 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3372
3373         PR tree-opt/32090
3374         * tree-ssa-forwprop.c
3375         (forward_propagate_addr_into_variable_array_index): Remove
3376         the lhs argument.  Use the type of def_rhs instead of lhs.
3377         (forward_propagate_addr_expr_1): Update use of
3378         forward_propagate_addr_into_variable_array_index.
3379
3380 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
3381             Nigel Stephens  <nigel@mips.com>
3382
3383         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
3384         function attributes, "far" being an alias for "long_call".
3385         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
3386         (mips_near_type_p, mips_far_type_p): New.
3387         (mips_comp_type_attributes): New function to check that attributes
3388         attached to a function type are compatible.
3389         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
3390         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
3391         to the target function of the thunk.
3392         (mips_encode_section_info): Check for "near" and "far" function
3393         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
3394
3395         * config/mips/predicates.md (const_call_insn_operand): Test only
3396         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
3397
3398         * doc/extend.texi (Function Attributes): Document MIPS "near" and
3399         "far" attributes.
3400
3401         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
3402         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
3403         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
3404         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
3405
3406 2007-05-25  Eric Christopher  <echristo@apple.com>
3407
3408         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
3409         to x86-darwin configurations.
3410         * config/i386/t-darwin: Add softfp support.
3411         * config/i386/t-darwin64: Ditto.
3412         * config/i386/sfp-machine.h: If mach then don't use
3413         aliasing, emit a stub to call.
3414
3415 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
3416
3417         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
3418         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
3419         tree-predcom.c, tree-ssa-alias-warnings.c,
3420         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
3421         comment typos.  Follow spelling conventions.
3422         * doc/cpp.texi, doc/invoke.texi: Fix typos.
3423
3424 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3425
3426         PR target/32065
3427         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
3428         constants into memory.  Expand unaligned memory references for
3429         SSE modes via x86_expand_vector_move_misalign() function.
3430
3431 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
3432
3433         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
3434         "memory" attribute for "sseishft" type insn without operands[2].
3435
3436 2007-05-25  Dirk Mueller  <dmueller@suse.de>
3437             Marcus Meissner <meissner@suse.de>
3438
3439         * doc/extend.texi (alloc_size): New attribute.
3440         * c-common.c (handle_alloc_size_attribute): New.
3441         * tree-object-size.c (alloc_object_size): Use alloc_size
3442         attribute, if available.
3443
3444 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3445
3446         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
3447         with MASK_SSE2.
3448         (__builtin_ia32_vec_ext_v2di): Likewise.
3449         (__builtin_ia32_vec_ext_v4si): Likewise.
3450         (__builtin_ia32_vec_ext_v8hi): Likewise.
3451         (__builtin_ia32_vec_ext_v16qi): Likewise.
3452         (__builtin_ia32_vec_set_v8hi): Likewise.
3453
3454 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3455
3456         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
3457
3458 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
3459
3460         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
3461         (arm_is_longcall_p): Rename to...
3462         (arm_is_long_call_p): ...this.  Take a single tree argument and
3463         return a bool.
3464         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
3465         (CUMULATIVE_ARGS): Remove call_cookie.
3466         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
3467         (ENCODED_LONG_CALL_ATTR_P): Delete.
3468         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
3469         LONG_CALL_FLAG_CHAR cases.
3470         (ARM_DECLARE_FUNCTION_SIZE): Delete.
3471         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
3472         ARM_DECLARE_FUNCTION_SIZE.
3473         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
3474         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
3475         (arm_encode_call_attribute, current_file_function_operand): Delete.
3476         (arm_function_in_section_p): New function.
3477         (arm_is_longcall_p): Rename to...
3478         (arm_is_long_call_p): ...this.  Take the target function as a single
3479         argument and return a bool.  Do not rely on call cookies.  Check
3480         whether the target symbol is in the same section as the current
3481         function, not just the same compilation unit.
3482         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
3483         (arm_encode_section_info): Don't encode a call type.
3484         * config/arm/arm.md (call, call_value): Update calls to
3485         arm_is_long(_)call_p.  Simplify logic.
3486         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
3487         Update calls to arm_is_long(_)call_p.
3488
3489 2007-05-25  Richard Guenther  <rguenther@suse.de>
3490
3491         PR tree-optimization/31982
3492         * tree-ssa-forwprop.c
3493         (forward_propagate_addr_into_variable_array_index): Handle arrays
3494         with element size one.
3495
3496 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3497
3498         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
3499         (umulsi3_highpart): Likewise.
3500
3501 2007-05-24  Ian Lance Taylor  <iant@google.com>
3502
3503         PR rtl-optimization/32069
3504         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
3505         is NULL.
3506
3507 2007-05-24  Ollie Wild  <aaw@google.com>
3508
3509         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
3510         description.
3511
3512 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
3513
3514         * postreload-gcse.c (reg_changed_after_insn_p): New function.
3515         (oprs_unchanged_p): Use it to check all registers in a REG.
3516         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
3517         (reg_set_between_after_reload_p): Delete.
3518         (reg_used_between_after_reload_p): Likewise.
3519         (reg_set_or_used_since_bb_start): Likewise.
3520         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
3521         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
3522         Use reg_set_between_p instead of reg_set_between_after_reload_p.
3523         * rtlanal.c (reg_set_p): Check whether REG overlaps
3524         regs_invalidated_by_call, rather than just checking the
3525         membership of REGNO (REG).
3526
3527 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3528
3529         * doc/passes.texi: Document predictive commoning.
3530         * doc/invoke.texi (-fpredictive-commoning): Document.
3531         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
3532         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
3533         adding indices to the generated name.
3534         (schedule_sm): Pass 0 to get_lsm_tmp_name.
3535         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
3536         * tree-pretty-print.c (op_symbol_1): Renamed to ...
3537         (op_symbol_code): ... and exported.
3538         (dump_omp_clause, op_symbol): Use op_symbol_code
3539         instead of op_symbol_1.
3540         * tree-pass.h (pass_predcom): Declare.
3541         * timevar.def (TV_PREDCOM): New timevar.
3542         * tree-ssa-loop.c (run_tree_predictive_commoning,
3543         gate_tree_predictive_commoning, pass_predcom): New.
3544         * tree-data-ref.c (find_data_references_in_loop): Find the
3545         references in dominance order.
3546         (canonicalize_base_object_address): Ensure that the result has
3547         pointer type.
3548         (dr_analyze_innermost): Export.
3549         (create_data_ref): Code to fail for references with invariant
3550         address moved ...
3551         (find_data_references_in_stmt): ... here.
3552         * tree-data-ref.h (dr_analyze_innermost): Declare.
3553         * tree-affine.c: Include tree-gimple.h and hashtab.h.
3554         (aff_combination_find_elt, name_expansion_hash,
3555         name_expansion_eq, tree_to_aff_combination_expand,
3556         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
3557         New functions.
3558         * tree-affine.h (aff_combination_constant_multiple_p,
3559         tree_to_aff_combination_expand): Declare.
3560         * tree-predcom.c: New file.
3561         * common.opt (fpredictive-commoning): New option.
3562         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
3563         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
3564         * Makefile.in (tree-predcom.o): Add.
3565         (tree-affine.o): Add TREE_GIMPLE_H dependency.
3566         * passes.c (init_optimization_passes):  Add dceloop after
3567         copy propagation in loop optimizer.  Add predictive commoning
3568         to loop optimizer passes.
3569
3570 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3571
3572         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
3573         default hook.
3574
3575 2007-05-24  Jan Hubicka  <jh@suse.cz>
3576
3577         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
3578         statistics.
3579         (genheader): Include statistics.h.
3580
3581         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
3582         notes are gone.
3583         * print-rtl.c (flag_dump_unnumbered): Update comments.
3584         (print_rtl): Fix my previous change.
3585         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
3586         specific data.
3587
3588 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3589
3590         PR middle-end/32018
3591         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
3592         set_loop_copy.
3593         (thread_through_all_blocks): Call initialize_original_copy_tables
3594         and free_original_copy_tables.
3595         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
3596         Use set_loop_copy.
3597         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3598         * cfghooks.c (duplicate_block): Use get_loop_copy.
3599         * cfg.c: Include cfgloop.h.
3600         (loop_copy): New hash table.
3601         (initialize_original_copy_tables): Initialize loop_copy table.
3602         (free_original_copy_tables): Free loop_copy table.
3603         (copy_original_table_clear, copy_original_table_set,
3604         set_loop_copy, get_loop_copy): New functions.
3605         (set_bb_original, set_bb_copy): Use copy_original_table_set.
3606         * cfgloop.h (struct loop): Remove copy field.
3607         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
3608         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
3609
3610 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3611
3612         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
3613         -msse/-msse2/-msse3.
3614
3615 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3616
3617         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
3618         __builtin_ia32_vec_set_v2di with MASK_64BIT.
3619
3620 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
3621
3622         PR target/27067
3623         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
3624         * targhooks.h (default_mangle_decl_assembler_name): Declare
3625         default hook.
3626         * targhooks.c (default_mangle_decl_assembler_name): Define
3627         default hook.
3628         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
3629         default hook.
3630         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
3631         * langhooks.c (lhd_set_decl_assembler_name): Call
3632         targetm.mangle_decl_assembler_name for names with global scope.
3633
3634         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
3635         default.
3636         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
3637         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
3638         Declare.
3639         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
3640         New. Factored out of i386_pe_encode_section_info.
3641         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
3642         Move check for prior decoration of stdcall
3643         symbols to i386_pe_encode_section_info.
3644         (i386_pe_encode_section_info): Adjust call to
3645         gen_stdcall_or_fastcall_suffix.  Use
3646         i386_pe_maybe_mangle_decl_assembler_name, if needed.
3647         (i386_pe_mangle_decl_assembler_name): New. Wrap
3648         i386_pe_maybe_mangle_decl_assembler_name.
3649
3650 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3651
3652         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
3653         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
3654         * langhooks.c (get_signed_or_unsigned_type): Don't check for
3655         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
3656         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
3657         TYPE_UNSIGNED.
3658
3659 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
3660             Nigel Stephens  <nigel@mips.com>
3661             Richard Sandiford  <richard@codesourcery.com>
3662
3663         Fix up MIPS16 hard float and add support for complex.
3664
3665         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
3666         (TARGET_SOFT_FLOAT_ABI): New.
3667         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
3668         __mips_soft_float to reflect the ABI in use, not whether the
3669         FPU is directly accessible (e.g., in MIPS16 mode).
3670         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
3671         (UNITS_PER_FPVALUE): Likewise.
3672
3673         * config/mips/mips.c (mips_expand_call): Remove redundant
3674         TARGET_MIPS16 check.
3675         (mips_arg_regno): New.
3676         (function_arg_advance): When setting bits in cum->fp_code for
3677         MIPS16, don't subtract 1 from cum->arg_number, since it is now
3678         zero-based.
3679         (function_arg): Use mips_arg_regno.
3680         (mips_return_mode_in_fpr_p): New.
3681         (mips16_call_stub_mode_suffix): New.
3682         (mips16_cfun_returns_in_fpr_p): New.
3683         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
3684         (mips_output_function_prologue): Test mips16_hard_float, not
3685         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
3686         (mips_expand_epilogue): Call MIPS16 helper routines to copy
3687         return value into a floating-point register.
3688         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
3689         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
3690         (mips16_fp_args): Handle MIPS32r2 ISA which supports
3691         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
3692         word of double arguments from or to the high bits of 64-bit
3693         floating point registers.
3694         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
3695         (mips16_fpret_double): New helper function.
3696         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
3697         support for complex modes.  Fill in DECL_RESULT for stubdecl.
3698         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
3699
3700         * config/mips/mips16.S
3701         (RET, ARG1, ARG2): New.
3702         (MERGE_GPRf, MERGE_GPRt): New.
3703         (DELAYt, DELAYf): New.
3704         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
3705         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
3706         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
3707         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
3708         (SFOP): Renamed to...
3709         (OPSF3): This, and macro-ified.  Updated all uses.
3710         (SFOP2): Renamed to...
3711         (OPSF2): This, and macro-ified.  Updated all uses.
3712         (SFCMP): Renamed to...
3713         (CMPSF): This, and macro-ified.  Updated all uses.
3714         (SFREVCMP): Renamed to...
3715         (REVCMPSF): This, and macro-ified.  Updated all uses.
3716         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
3717         (LDDBL1, LDDBL2, RETDBL): Deleted.
3718         (DFOP): Renamed to...
3719         (OPDF3): This, and macro-ified.  Updated all uses.
3720         (DFOP2): Renamed to...
3721         (OPDF2): This, and macro-ified.  Updated all uses.
3722         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
3723         (DFCMP): Renamed to...
3724         (CMPDF): This, and macro-ified.  Updated all uses.
3725         (DFREVCMP): Renamed to...
3726         (REVCMPDF): This, and macro-ified.  Updated all uses.
3727         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
3728         (RET_FUNCTION): New.
3729         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
3730         (__mips16_ret_sc, __mips16_ret_dc): New.
3731         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
3732         STUB_ARGS_6, STUB_ARGS_10): New.
3733         (CALL_STUB_NO_RET): New.
3734         (__mips16_call_stub_1): Macro-ified.
3735         (__mips16_call_stub_5): Macro-ified.
3736         (__mips16_call_stub_2): Macro-ified.
3737         (__mips16_call_stub_6): Macro-ified.
3738         (__mips16_call_stub_9): Macro-ified.
3739         (__mips16_call_stub_10): Macro-ified.
3740         (CALL_STUB_RET): New.
3741         (__mips16_call_stub_sf_0): Macro-ified.
3742         (__mips16_call_stub_sf_1): Macro-ified.
3743         (__mips16_call_stub_sf_5): Macro-ified.
3744         (__mips16_call_stub_sf_2): Macro-ified.
3745         (__mips16_call_stub_sf_6): Macro-ified.
3746         (__mips16_call_stub_sf_9): Macro-ified.
3747         (__mips16_call_stub_sf_10): Macro-ified.
3748         (__mips16_call_stub_df_0): Macro-ified.
3749         (__mips16_call_stub_df_1): Macro-ified.
3750         (__mips16_call_stub_df_5): Macro-ified.
3751         (__mips16_call_stub_df_2): Macro-ified.
3752         (__mips16_call_stub_df_6): Macro-ified.
3753         (__mips16_call_stub_df_9): Macro-ified.
3754         (__mips16_call_stub_df_10): Macro-ified.
3755         (__mips16_call_stub_sc_0): New.
3756         (__mips16_call_stub_sc_1): New.
3757         (__mips16_call_stub_sc_5): New.
3758         (__mips16_call_stub_sc_2): New.
3759         (__mips16_call_stub_sc_6): New.
3760         (__mips16_call_stub_sc_9): New.
3761         (__mips16_call_stub_sc_10): New.
3762         (__mips16_call_stub_dc_0): New.
3763         (__mips16_call_stub_dc_1): New.
3764         (__mips16_call_stub_dc_5): New.
3765         (__mips16_call_stub_dc_2): New.
3766         (__mips16_call_stub_dc_6): New.
3767         (__mips16_call_stub_dc_9): New.
3768         (__mips16_call_stub_dc_10): New.
3769
3770         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
3771         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
3772         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
3773
3774 2007-05-23  Ian Lance Taylor  <iant@google.com>
3775
3776         * doc/invoke.texi (Invoking GCC): Document that the order of the
3777         -l option matters.
3778
3779 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
3780
3781         PR target/30987
3782         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
3783         * config/score/predicate.md (const_pow2, const_npow2): Remove.
3784         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
3785         undef.
3786
3787         PR target/30474
3788         * config/score/score.c (score_print_operand): Make sure that only
3789         lower bits are used.
3790
3791 2007-05-22  Ian Lance Taylor  <iant@google.com>
3792
3793         * tree-vrp.c (avoid_overflow_infinity): New static function,
3794         broken out of set_value_range_to_value.
3795         (set_value_range_to_value): Call avoid_overflow_infinity.
3796         (extract_range_from_assert): Likewise.
3797
3798 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3799
3800         PR middle-end/31095
3801          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
3802         change the type before looking for a COMPOUND_EXPR.
3803
3804 2007-05-22  Ian Lance Taylor  <iant@google.com>
3805
3806         * lower-subreg.c (decompose_multiword_subregs): If we change an
3807         insn, call remove_retval_note on it.
3808
3809 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3810
3811         * regs.h (end_hard_regno): New function.
3812         (END_HARD_REGNO, END_REGNO): New macros.
3813         (add_to_hard_reg_set): New function.
3814         (remove_from_hard_reg_set): Likewise.
3815         (in_hard_reg_set_p): Likewise.
3816         (overlaps_hard_reg_set_p): Likewise.
3817         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
3818         (note_btr_set): Use END_HARD_REGNO.
3819         * caller-save.c (setup_save_areas): Use end_hard_regno.
3820         (mark_set_regs): Use END_HARD_REGNO.
3821         (add_stored_regs): Use end_hard_regno.
3822         (mark_referenced_regs): Use add_to_hard_reg_set.
3823         * combine.c (update_table_tick): Use END_REGNO.
3824         (record_value_for_reg): Likewise.
3825         (record_dead_and_set_regs): Likewise.
3826         (get_last_value_validate): Likewise.
3827         (use_crosses_set_p): Likewise.
3828         (reg_dead_at_p_1): Likewise.
3829         (reg_dead_at_p): Likewise.
3830         (mark_used_regs_combine): Use add_to_hard_reg_set.
3831         (move_deaths): Use END_HARD_REGNO.
3832         (reg_bitfield_target_p): Use end_hard_regno.
3833         (distribute_notes): Use END_HARD_REGNO.
3834         * cse.c (mention_regs): Use END_REGNO.
3835         (insert): Use add_to_hard_reg_set.
3836         (invalidate): Use END_HARD_REGNO.
3837         (invalidate_for_call): Likewise.
3838         (exp_equiv_p): Use END_REGNO.
3839         (cse_insn): Likewise.
3840         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
3841         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
3842         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
3843         * function.c (keep_stack_depressed): Use end_hard_regno.
3844         * global.c (global_alloc): Use end_hard_regno.
3845         (global_conflicts): Use add_to_hard_reg_set instead of
3846         mark_reg_live_nc.
3847         (find_reg): Likewise.
3848         (mark_reg_store): Likewise.
3849         (mark_reg_conflicts): Likewise.
3850         (mark_reg_death): Use remove_from_hard_reg_set.
3851         (mark_reg_live_nc): Delete.
3852         (set_preference): Use end_hard_regno.
3853         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
3854         remove_from_hard_reg_set.
3855         (post_mark_life): Use add_to_hard_reg_set.
3856         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
3857         (reg_becomes_live): Use add_to_hard_reg_set.
3858         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
3859         (peep2_find_free_register): Use add_to_hard_reg_set.
3860         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
3861         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
3862         * regrename.c (note_sets): Use add_to_hard_reg_set.
3863         (clear_dead_regs): Use remove_from_hard_reg_set.
3864         (regrename_optimize): Use add_to_hard_reg_set.
3865         (find_oldest_value_reg): Use in_hard_reg_set_p.
3866         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
3867         (hard_reg_set_here_p): Use end_hard_regno.
3868         (decompose): Likewise.
3869         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
3870         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
3871         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
3872         (mark_home_live): Use end_hard_regno.
3873         (spill_hard_reg): Likewise.
3874         (clear_reload_reg_in_use): Likewise.
3875         * reorg.c (delete_prior_computation): Use END_REGNO.
3876         * resource.c (update_live_status): Use END_HARD_REGNO.
3877         (mark_referenced_resources): Use add_to_hard_reg_set.
3878         (mark_set_resources): Likewise.
3879         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
3880         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
3881         (reg_overlap_mentioned_p): Likewise.
3882         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
3883         (covers_regno_no_parallel_p): Use END_REGNO.
3884         (find_regno_note): Likewise.
3885         (find_reg_fusage): Use END_HARD_REGNO.
3886         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
3887         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
3888
3889 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3890
3891         * mode-switching.c (reg_dies): Change type of second argument to
3892         "HARD_REG_SET *".
3893         (optimize_mode_switching): Update accordingly.
3894
3895 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
3896
3897         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
3898         in favor of...
3899         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
3900         (hard_reg_set_empty_p): ...these new functions.
3901         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
3902         GO_IF_HARD_REG_SUBSET.
3903         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
3904         instead of GO_IF_HARD_REG_EQUAL.
3905         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
3906         instead of GO_IF_HARD_REG_EQUAL.
3907         * global.c (find_reg): Use hard_reg_set_empty_p instead of
3908         GO_IF_HARD_REG_SUBSET.
3909         (modify_reg_pav): Use hard_reg_set_empty_p instead of
3910         GO_IF_HARD_REG_EQUAL.
3911         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
3912         of GO_IF_HARD_REG_SUBSET.
3913         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
3914         instead of GO_IF_HARD_REG_EQUAL.
3915         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
3916         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
3917         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
3918         of GO_IF_HARD_REG_SUBSET,
3919         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
3920         GO_IF_HARD_REG_SUBSET.
3921         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
3922         instead of GO_IF_HARD_REG_EQUAL.
3923         * config/sh/sh.c (push_regs, calc_live_regs): Use
3924         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
3925         (hard_regs_intersect_p): Delete.
3926
3927 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
3928
3929         * doc/sourcebuild.texi (Test Directives) Add dg-message.
3930
3931 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
3932             Richard Henderson  <rth@redhat.com>
3933
3934         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
3935         extra_headers.
3936         (x86_64-*-*): Likewise.
3937
3938         * i386/i386-modes.def (V2QI): New.
3939
3940         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
3941         SSE4A.
3942         (override_options): Support SSE4.1.
3943         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
3944         (IX86_BUILTIN_BLENDPS): Likewise.
3945         (IX86_BUILTIN_BLENDVPD): Likewise.
3946         (IX86_BUILTIN_BLENDVPS): Likewise.
3947         (IX86_BUILTIN_PBLENDVB128): Likewise.
3948         (IX86_BUILTIN_PBLENDW128): Likewise.
3949         (IX86_BUILTIN_DPPD): Likewise.
3950         (IX86_BUILTIN_DPPS): Likewise.
3951         (IX86_BUILTIN_INSERTPS128): Likewise.
3952         (IX86_BUILTIN_MOVNTDQA): Likewise.
3953         (IX86_BUILTIN_MPSADBW128): Likewise.
3954         (IX86_BUILTIN_PACKUSDW128): Likewise.
3955         (IX86_BUILTIN_PCMPEQQ): Likewise.
3956         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
3957         (IX86_BUILTIN_PMAXSB128): Likewise.
3958         (IX86_BUILTIN_PMAXSD128): Likewise.
3959         (IX86_BUILTIN_PMAXUD128): Likewise.
3960         (IX86_BUILTIN_PMAXUW128): Likewise.
3961         (IX86_BUILTIN_PMINSB128): Likewise.
3962         (IX86_BUILTIN_PMINSD128): Likewise.
3963         (IX86_BUILTIN_PMINUD128): Likewise.
3964         (IX86_BUILTIN_PMINUW128): Likewise.
3965         (IX86_BUILTIN_PMOVSXBW128): Likewise.
3966         (IX86_BUILTIN_PMOVSXBD128): Likewise.
3967         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
3968         (IX86_BUILTIN_PMOVSXWD128): Likewise.
3969         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
3970         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
3971         (IX86_BUILTIN_PMOVZXBW128): Likewise.
3972         (IX86_BUILTIN_PMOVZXBD128): Likewise.
3973         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
3974         (IX86_BUILTIN_PMOVZXWD128): Likewise.
3975         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
3976         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
3977         (IX86_BUILTIN_PMULDQ128): Likewise.
3978         (IX86_BUILTIN_PMULLD128): Likewise.
3979         (IX86_BUILTIN_ROUNDPD): Likewise.
3980         (IX86_BUILTIN_ROUNDPS): Likewise.
3981         (IX86_BUILTIN_ROUNDSD): Likewise.
3982         (IX86_BUILTIN_ROUNDSS): Likewise.
3983         (IX86_BUILTIN_PTESTZ): Likewise.
3984         (IX86_BUILTIN_PTESTC): Likewise.
3985         (IX86_BUILTIN_PTESTNZC): Likewise.
3986         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
3987         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
3988         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
3989         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
3990         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
3991         (bdesc_ptest): New.
3992         (bdesc_sse_3arg): Likewise.
3993         (bdesc_2arg): Likewise.
3994         (bdesc_1arg): Likewise.
3995         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
3996         with 3 args.
3997         (ix86_expand_sse_4_operands_builtin): New.
3998         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
3999         smaller than 8 bits as the 2nd arg.
4000         (ix86_expand_sse_ptest): New.
4001         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
4002         (ix86_expand_vector_set): Support SSE4.1.
4003         (ix86_expand_vector_extract): Likewise.
4004
4005         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
4006         __SSE4_1__ for -msse4.1.
4007
4008         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
4009         (UNSPEC_INSERTPS): Likewise.
4010         (UNSPEC_DP): Likewise.
4011         (UNSPEC_MOVNTDQA): Likewise.
4012         (UNSPEC_MPSADBW): Likewise.
4013         (UNSPEC_PHMINPOSUW): Likewise.
4014         (UNSPEC_PTEST): Likewise.
4015         (UNSPEC_ROUNDP): Likewise.
4016         (UNSPEC_ROUNDS): Likewise.
4017
4018         * config/i386/i386.opt (msse4.1): New for SSE4.1.
4019
4020         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
4021         (const_pow2_1_to_32768_operand): Likewise.
4022
4023         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
4024         file.
4025
4026         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
4027         SSE4.1.
4028         (sse4_1_insertps): Likewise.
4029         (*sse4_1_extractps): Likewise.
4030         (sse4_1_ptest): Likewise.
4031         (sse4_1_mulv2siv2di3): Likewise.
4032         (*sse4_1_mulv4si3): Likewise.
4033         (*sse4_1_smax<mode>3): Likewise.
4034         (*sse4_1_umax<mode>3): Likewise.
4035         (*sse4_1_smin<mode>3): Likewise.
4036         (*sse4_1_umin<mode>3): Likewise.
4037         (sse4_1_eqv2di3): Likewise.
4038         (*sse4_1_pinsrb): Likewise.
4039         (*sse4_1_pinsrd): Likewise.
4040         (*sse4_1_pinsrq): Likewise.
4041         (*sse4_1_pextrb): Likewise.
4042         (*sse4_1_pextrb_memory): Likewise.
4043         (*sse4_1_pextrw_memory): Likewise.
4044         (*sse4_1_pextrq): Likewise.
4045         (sse4_1_blendpd): Likewise.
4046         (sse4_1_blendps): Likewise.
4047         (sse4_1_blendvpd): Likewise.
4048         (sse4_1_blendvps): Likewise.
4049         (sse4_1_dppd): Likewise.
4050         (sse4_1_dpps): Likewise.
4051         (sse4_1_movntdqa): Likewise.
4052         (sse4_1_mpsadbw): Likewise.
4053         (sse4_1_packusdw): Likewise.
4054         (sse4_1_pblendvb): Likewise.
4055         (sse4_1_pblendw): Likewise.
4056         (sse4_1_phminposuw): Likewise.
4057         (sse4_1_extendv8qiv8hi2): Likewise.
4058         (*sse4_1_extendv8qiv8hi2): Likewise.
4059         (sse4_1_extendv4qiv4si2): Likewise.
4060         (*sse4_1_extendv4qiv4si2): Likewise.
4061         (sse4_1_extendv2qiv2di2): Likewise.
4062         (*sse4_1_extendv2qiv2di2): Likewise.
4063         (sse4_1_extendv4hiv4si2): Likewise.
4064         (*sse4_1_extendv4hiv4si2): Likewise.
4065         (sse4_1_extendv2hiv2di2): Likewise.
4066         (*sse4_1_extendv2hiv2di2): Likewise.
4067         (sse4_1_extendv2siv2di2): Likewise.
4068         (*sse4_1_extendv2siv2di2): Likewise.
4069         (sse4_1_zero_extendv8qiv8hi2): Likewise.
4070         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
4071         (sse4_1_zero_extendv4qiv4si2): Likewise.
4072         (*sse4_1_zero_extendv4qiv4si2): Likewise.
4073         (sse4_1_zero_extendv2qiv2di2): Likewise.
4074         (*sse4_1_zero_extendv2qiv2di2): Likewise.
4075         (sse4_1_zero_extendv4hiv4si2): Likewise.
4076         (*sse4_1_zero_extendv4hiv4si2): Likewise.
4077         (sse4_1_zero_extendv2hiv2di2): Likewise.
4078         (*sse4_1_zero_extendv2hiv2di2): Likewise.
4079         (sse4_1_zero_extendv2siv2di2): Likewise.
4080         (*sse4_1_zero_extendv2siv2di2): Likewise.
4081         (sse4_1_roundpd): Likewise.
4082         (sse4_1_roundps): Likewise.
4083         (sse4_1_roundsd): Likewise.
4084         (sse4_1_roundss): Likewise.
4085         (mulv4si3): Don't expand for SSE4.1.
4086         (smax<mode>3): Likewise.
4087         (umaxv4si3): Likewise.
4088         (uminv16qi3): Likewise.
4089         (umin<mode>3): Likewise.
4090         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
4091
4092         * doc/extend.texi: Document SSE4.1 built-in functions.
4093
4094         * doc/invoke.texi: Document -msse4.1.
4095
4096 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
4097
4098         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
4099         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
4100         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
4101         (ASM_SPEC): Add asm_pcrel_spec.
4102         (EXTRA_SPECS): Add asm_pcrel_spec.
4103
4104 2007-05-21  David Daney  <ddaney@avtrex.com>
4105
4106         * doc/install.texi (Building a cross compiler): Add requirements
4107         for Java cross compiler.
4108
4109 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4110
4111         PR middle-end/31995
4112         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
4113         Add loopno argument.  Use evolution_function_is_invariant_rec_p
4114         instead of evolution_function_is_constant_p.
4115         Update calls to evolution_function_is_affine_multivariate_p.
4116         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
4117         Add loopno argument.
4118         * tree-scalar-evolution.c (gather_chrec_stats): Call
4119         evolution_function_is_affine_multivariate_p with a loop
4120         number of 0.
4121         * tree-data-ref.c (analyze_miv_subscript): Likewise.
4122         (analyze_overlapping_iterations): Likewise.
4123         (access_functions_are_affine_or_constant_p): Likewise.
4124         (build_classic_dist_vector_1): If the access functions
4125         are equal, don't do anything.
4126
4127 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
4128             Paolo Carlini  <pcarlini@suse.de>
4129             Uros Bizjak  <ubizjak@gmail.com>
4130
4131         * c-cppbuiltin.c (c_cpp_builtins): Define
4132         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
4133         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
4134         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
4135         * doc/cpp.texi ([Standard Predefined Macros]): Document.
4136
4137 2007-05-21  Mike Stump  <mrs@apple.com>
4138
4139         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
4140         handling as well.
4141         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
4142
4143 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
4144
4145         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
4146         implementation if __OPTIMIZE__ is not defined.
4147         (_mm_alignr_pi8): Ditto.
4148         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4149         (_mm_inserti_si64): Ditto.
4150         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4151         (_mm_slli_epi16): Ditto.
4152         (_mm_slli_epi32): Ditto.
4153         (_mm_slli_epi64): Ditto.
4154         (_mm_srai_epi16): Ditto.
4155         (_mm_srai_epi32): Ditto.
4156         (_mm_srli_si128): Ditto.
4157         (_mm_slli_si128): Ditto.
4158         (_mm_srli_epi16): Ditto.
4159         (_mm_srli_epi32): Ditto.
4160         (_mm_srli_epi64): Ditto.
4161         (_mm_extract_epi16): Ditto.
4162         (_mm_insert_epi16): Ditto.
4163         (_mm_shufflehi_epi16): Ditto.
4164         (_mm_shufflelo_epi16): Ditto.
4165         (_mm_shuffle_epi32): Ditto.
4166         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
4167         (_m_pextrw): Ditto.
4168         (_mm_insert_pi16): Ditto.
4169         (_m_pinsrw): Ditto.
4170         (_mm_shuffle_pi16): Ditto.
4171         (_m_pshufw): Ditto.
4172         (_mm_shufle_ps): Ditto.
4173         (_mm_prefetch): Ditto.
4174
4175 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
4176
4177         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
4178         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
4179         * real.c (encode_i370_single, decode_i370_single,
4180         encode_i370_double, decode_i370_double): Functions removed.
4181         (i370_single_format, i370_double_format): Initializations removed.
4182         (real_maxval, round_for_format, exact_real_truncate, significand_size):
4183         Consider the log2_b field to always be one.
4184         (ieee_single_format, mips_single_format, coldfire_single_format,
4185         ieee_double_format, mips_double_format, coldfire_double_format,
4186         ieee_extended_motorola_format, ieee_extended_intel_96_format,
4187         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
4188         ibm_extended_format, mips_extended_format, ieee_quad_format,
4189         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
4190         decimal_single_format, decimal_double_format, decimal_quad_format,
4191         c4x_single_format, c4x_extended_format, real_internal_format): Remove
4192         initialization of log2_b.
4193         * real.h (i370_single_format, i370_double_format): Declarations removed.
4194         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
4195         field to always be one.
4196
4197 2007-05-21  Andreas Schwab  <schwab@suse.de>
4198
4199         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
4200         NOTE_INSN_BASIC_BLOCK_P.
4201         (process_for_unwind_directive): Likewise.
4202
4203 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
4204
4205         * builtins.c (expand_builtin_setjmp_setup): Update comment.
4206         * function.h (struct function): Move va_list_gpr_size,
4207         va_list_fpr_size, function_frequency to front of bitfields.  Add
4208         calls_unwind_init.
4209         (current_function_calls_unwind_init): New.
4210         * except.c (expand_builtin_unwind_init): Set
4211         current_function_calls_unwind_init not
4212         current_function_has_nonlocal_label.
4213         * reload1.c (has_nonexceptional_receiver): New.
4214         (reload): Use it and current_function_calls_unwind_init to
4215         determine whether call-saved regs must be saved.
4216
4217 2007-05-20  Jan Hubicka  <jh@suse.cz>
4218
4219         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
4220         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4221         * ddg.c (create_ddg): LIkewise.
4222         * final.c (final): Remove hunk moving line numbernotes around since
4223         they are no longer present at this stage.
4224         (final_scan_insn): Use NOTE_KIND instead of
4225         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4226         (output_asm_label): Likewise.
4227         * reorg.c (dbr_schedule): Likewise.
4228         * haifa-sched.c (unlink_other_notes): Likewise.
4229         * mode-switching.c (optimize_mode_switching): Likewise.
4230         * graph.c (start_bb): Likewise.
4231         * rtl.def (NOTE): Update description.
4232         * jump.c (squeeze_notes): Delete.
4233         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
4234         NOTE_INSN_BASIC_BLOCK_P when possible.
4235         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
4236         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
4237         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4238         (dwarf2out_var_location): Likewise.
4239         * cfgbuild.c (make_edges): Likewise.
4240         (find_basic_blocks_1): Likewise.
4241         * function.c (reorder_blocks_1): Likewise.
4242         (epilogue_done): Likewise.
4243         (reposition_prologue_and_epilogue_notes): Likewise.
4244         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
4245         notes.
4246         (print_rtl): Likewise.
4247         (print_rtl_single): Likewise.
4248         * gcse.c (insert_insn_start_bb): Likewise.
4249         * alias.c (init_alias_analysis): Likewise.
4250         * calls.c (fixup_tail_calls): Likewise.
4251         * except.c (sjlj_emit_function_enter): Likewise.
4252         * emit-rtl.c (add_insn_after): Likeiwse.
4253         (emit_label_before): Likewise.
4254         (emit_label_after): Likewise.
4255         (emit_note_before, emit_note_after, emit_note): Update
4256         parameter to be enum insn_note; do not deal with source
4257         files.
4258         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
4259         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
4260         when possible.
4261         (merge_blocks_move_successor_nojumps): Simplify now when
4262         we don't have BLOCK notes.
4263         (try_optimize_cfg): Likewise.
4264         * cfglayout.c (skip_insns_after_block): Likewise.
4265         (record_effective_endpoints): Likewise.
4266         (duplicate_insn_chain): Likewise.
4267         * varasm.c (output_constant_pool_1): Likewise.
4268         * sched-deps.c (sched_analyze): Likewise.
4269         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
4270         Exterminate.
4271         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
4272         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
4273         (SET_INSN_DELETED): Simplify.
4274         (NOTE_LINE_NUMBER): Exterminate.
4275         (NOTE_LINE_KIND): New.
4276         (NOTE_INSN_BASIC_BLOCK_P): Update.
4277         (enum insn_note): Simplify.
4278         (GET_NOTE_INSN_NAME) Simplify.
4279         (emit_note_before, emit_note_after, emit_note): Update prototype.
4280         (squeeze_notes): Remove.
4281         * sched-int.h (NOTE_NOT_BB_P): Update.
4282         * resource.c (mark_target_live_regs): Update.
4283         * sched-rgn.c (debug_dependencies): Update.
4284         * sched-vis.c (print_insn): Update.
4285         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
4286         * config/i386/i386.c (ix86_output_function_epilogue): Update.
4287         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
4288         (TARGET_ADJUST_UNROLL_MAX): Likewise.
4289         (split_branches): Update.
4290         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
4291         4.0.0.
4292         (sh_adjust_unroll_max): Exterminate.
4293         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
4294         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
4295         (m68hc11_reorg): Likewise.
4296         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
4297         (emit_predicate_relation_info): Update.
4298         (process_for_unwind_directive): Update.
4299         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
4300         (output_call): Update.
4301         * config/pa/pa.c (output_lbranch): Update.
4302         (output_millicode_call): Update.
4303         (output_call): Update.
4304         (pa_combine_instructions): Update.
4305         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
4306         * config/bfin/bfin.c (gen_one_bundle): Update.
4307         * cfgrtl.c (can_delete_note_p): Update.
4308         (delete_insn): Update.
4309         (rtl_merge_blocks): Update.
4310         (commit_one_edge_insertion): Update.
4311         (rtl_verify_flow_info): Update.
4312         * stmt.c (expand_case): Do not call squeeze_notes.
4313
4314 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4315
4316         PR middle-end/7651
4317         PR c++/11856
4318         PR c/12963
4319         PR c/23587
4320         PR other/29694
4321         * c.opt (Wtype-limits): New.
4322         * doc/invoke.texi (Wtype-limits): Document it.
4323         (Wextra): Enabled by -Wextra.
4324         * c-opts.c (c_common_post_options): Enabled by -Wextra.
4325         * c-common.c (shorten_compare): Warn with Wtype-limits.
4326
4327 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4328
4329         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
4330         inlined function, not as a macro.
4331         (_mm_alignr_pi8): Ditto.
4332         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4333         (_mm_inserti_si64): Ditto.
4334         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4335         (_mm_extract_epi16): Ditto.
4336         (_mm_insert_epi16): Ditto.
4337         (_mm_shufflehi_epi16): Ditto.
4338         (_mm_shufflelo_epi16): Ditto.
4339         (_mm_shuffle_epi32): Ditto.
4340         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
4341         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
4342         all functions.
4343         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
4344         float constant.
4345         (_m_to_float): Use C89 compatible assignment.
4346
4347 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
4348
4349         PR target/32007
4350         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
4351
4352 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4353
4354         PR middle-end/7651
4355         * doc/invoke.texi (Wreturn-type): Complete description.
4356         (Wextra): Delete item about return-type warning.
4357         * c-decl.c: Delete redundant Wextra warning.
4358
4359 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4360
4361         PR target/31585
4362         * config/i386/pmmintrin.h: Do not include xmmintrin.h
4363         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
4364         inlined function, not as a macro.
4365         (_mm_prefetch): Ditto.
4366         (_m_pextrw): Ditto.
4367         (_mm_insert_pi16): Ditto.
4368         (_m_pinsrw): Ditto.
4369         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
4370         (_m_pshufw): Ditto. Add const to __N argument.
4371         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
4372         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
4373         (_mm_slli_epi32): Ditto.
4374         (_mm_srli_si128): Implement as always inlined function, not as a macro.
4375         Add __inline to function declaration.
4376         (_mm_slli_si128): Ditto.
4377
4378 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
4379
4380         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
4381         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
4382         New constants.
4383         (struct fenv): New structure.
4384         (FP_HANDLE_EXCEPTIONS): New define.
4385         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
4386         (_FP_DECL_EXP): New define.
4387         (FP_INIT_ROUNDMODE): New define.
4388         (FP_ROUNDMODE): New define.
4389
4390 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4391
4392         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
4393         (Wconversion): Update description.
4394         (Wconversion-sign): New.
4395         * c.opt (Wconversion-sign): New.
4396         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
4397         means disabled for C++. Otherwise, take the status of Wconversion.
4398         * c-common.c (conversion_warning): Warn with either Wconversion or
4399         Wconversion-sign.
4400         (warnings_for_convert_and_check): Conditions are already checked by
4401         conversion_warning.
4402         (convert_and_check): Don't check warnings if the conversion failed.
4403
4404 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
4405            Anatoly Sokolov <aesok@dol.ru>
4406
4407         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
4408         avr_epilogue_uses) : Add declaration.
4409         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
4410         * config/avr/constraints.md (R): New constraint.
4411         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
4412         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
4413         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
4414         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
4415         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
4416         call_prologue_saves, epilogue_restores, return_from_epilogue,
4417         return_from_main_epilogue, return_from_interrupt_epilogue,
4418         return_from_naked_epilogue, prologue, epilogue): New patterns.
4419         (jump): Handle symbol reference.
4420         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
4421         avr_output_function_prologue, avr_output_function_epilogue): Remove
4422         functions.
4423         (avr_init_machine_status, expand_prologue, expand_epilogue,
4424         avr_asm_function_end_prologue, avr_epilogue_uses,
4425         avr_asm_function_begin_epilogue): New functions.
4426         (prologue_size, epilogue_size, jump_tables_size): Remove global
4427         variables.
4428         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
4429         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
4430         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
4431         (avr_override_options): Initialise init_machine_status.
4432         (output_movhi): Handle all stack pointer loads.
4433         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
4434         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
4435         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
4436         (EPILOGUE_USES) Redefine.
4437         (machine_function) Declare.
4438
4439 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
4440
4441         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
4442         Use a single return statement.
4443
4444 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4445
4446         PR middle-end/30250
4447         * builtins.c (do_mpfr_lgamma_r): New.
4448         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
4449         * tree.h (CASE_FLT_FN_REENT): New.
4450
4451 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
4452
4453         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
4454         (output_die): Use 'unsigned long' with %x.
4455         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
4456         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
4457         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
4458
4459         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
4460
4461 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
4462
4463         PR target/31989
4464         PR target/31681
4465         PR target/31666
4466         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
4467         true if function has no argument.
4468
4469 2007-05-18  DJ Delorie  <dj@redhat.com>
4470
4471         * config/mips/mips.c (mips_offset_within_alignment_p): New.
4472         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
4473
4474 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4475
4476         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
4477         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
4478         count_trailing_zeros.
4479         (__i386__): Implement count_leading_zeros using __builtin_clz().
4480         Implement count_trailing_zeros usign __builtin_ctz().
4481
4482 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
4483
4484         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
4485
4486 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4487
4488         PR middle-end/31344
4489         * expr.c (emit_move_change_mode): Change mode of push operands here.
4490
4491 2007-05-17  Ian Lance Taylor  <iant@google.com>
4492
4493         PR tree-optimization/31953
4494         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
4495         Change all callers.
4496         (set_value_range_to_null): Call set_value_range_to_value.
4497         (extract_range_from_comparison): Likewise.
4498
4499 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4500
4501         * toplev.c (print_version): Output GMP/MPFR version info.
4502
4503         * builtins.c (CASE_MATHFN_REENT): New macro.
4504         (mathfn_built_in): Use it.
4505         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
4506         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
4507         BUILT_IN_LGAMMAL_R): New.
4508         * doc/extend.texi: Document new builtins.
4509
4510         PR middle-end/31796
4511         * builtins.c (do_mpfr_remquo): New.
4512         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
4513         (fold_builtin_3): Handle BUILT_IN_REMQUO.
4514
4515         PR middle-end/30251
4516         * builtins.c (fold_builtin_1): Handle y0, y1.
4517         (fold_builtin_2): Handle yn.
4518
4519         PR middle-end/30251
4520         * builtins.c (do_mpfr_bessel_n): New.
4521         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
4522         (fold_builtin_2): Handle BUILT_IN_JN.
4523
4524 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
4525
4526         PR target/31965
4527         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
4528         TYPE_PRECISION (intmax_type_node).
4529
4530 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
4531
4532         PR target/31850
4533         * reload.c (subst_reloads): Remove checking.
4534
4535 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
4536
4537         PR rtl-optimization/31691
4538         * combine.c (simplify_set): Build a new src pattern instead of
4539         substituting its operands in the COMPARE case.
4540
4541 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
4542
4543         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
4544         (execute_vrp): Preserve loops through jump threading.
4545         * tree-ssa-threadupdate.c (thread_single_edge,
4546         dbds_continue_enumeration_p, determine_bb_domination_status,
4547         thread_through_loop_header): New functions.
4548         (create_edge_and_update_destination_phis,
4549         create_edge_and_update_destination_phis): Set loops for the new blocks.
4550         (prune_undesirable_thread_requests): Removed.
4551         (redirect_edges): Do not pretend that redirect_edge_and_branch can
4552         create new blocks.
4553         (thread_block): Do not call prune_undesirable_thread_requests.
4554         Update loops.
4555         (mark_threaded_blocks): Select edges to thread here.
4556         (thread_through_all_blocks): Take may_peel_loop_headers argument.
4557         Thread edges through loop headers independently.
4558         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
4559         * tree-pass.h (TODO_mark_first_instance): New.
4560         (first_pass_instance): Declare.
4561         * cfghooks.c (duplicate_block): Put the block to the original loop
4562         if copy is not specified.
4563         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
4564         jump threading.  Pass may_peel_loop_headers to
4565         thread_through_all_blocks according to first_pass_instance.
4566         * cfgloop.h (create_preheader): Declare.
4567         * tree-flow.h (thread_through_all_blocks): Declaration changed.
4568         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
4569         * passes.c (first_pass_instance): New variable.
4570         (next_pass_1): Set TODO_mark_first_instance.
4571         (execute_todo): Set first_pass_instance.
4572
4573 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
4574
4575         PR tree-optimization/24659
4576         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
4577         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
4578         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
4579         OTI_vec_pack_ufix_trunc.
4580         (vec_unpacks_float_hi_optab): Define new macro.
4581         (vec_unpacks_float_lo_optab): Ditto.
4582         (vec_unpacku_float_hi_optab): Ditto.
4583         (vec_unpacku_float_lo_optab): Ditto.
4584         (vec_pack_sfix_trunc_optab): Ditto.
4585         (vec_pack_ufix_trunc_optab): Ditto.
4586         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
4587         and vec_pack_[s|u]fix_trunc_optab using
4588         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
4589         * tree-vectorizer.c (supportable_widening_operation): Handle
4590         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
4591         (supportable_narrowing_operation): New function.
4592         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
4593         * tree-vect-transform.c (vectorizable_conversion): Handle
4594         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
4595         (vect_gen_widened_results_half): Move before vectorizable_conversion.
4596         (vectorizable_type_demotion): Call supportable_narrowing_operation()
4597         to check for target support.
4598         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
4599         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
4600         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
4601         for VEC_PACK_FIX_TRUNC_EXPR.
4602         (expand_binop): Special case mode of the result for
4603         vec_pack_[u|s]fix_trunc_optab.
4604         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
4605         vec_pack_[u|s]fix_trunc_optab.
4606
4607         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
4608         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
4609         * tree-pretty-print.c (dump_generic_node): Handle
4610         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
4611         VEC_PACK_FIX_TRUNC_EXPR.
4612         (op_prio): Ditto.
4613         * expr.c (expand_expr_real_1): Ditto.
4614         * tree-inline.c (estimate_num_insns_1): Ditto.
4615         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
4616
4617         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
4618         (vec_unpacks_float_lo_v8hi): Ditto.
4619         (vec_unpacku_float_hi_v8hi): Ditto.
4620         (vec_unpacku_float_lo_v8hi): Ditto.
4621         (vec_unpacks_float_hi_v4si): Ditto.
4622         (vec_unpacks_float_lo_v4si): Ditto.
4623         (vec_pack_sfix_trunc_v2df): Ditto.
4624
4625         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
4626         Document.
4627         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
4628         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
4629         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
4630         [vec_pack_ufix_trunc]: Ditto.
4631         [vec_unpacks_float_hi]: Ditto.
4632         [vec_unpacks_float_lo]: Ditto.
4633         [vec_unpacku_float_hi]: Ditto.
4634         [vec_unpacku_float_lo]: Ditto.
4635
4636 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
4637
4638         * soft-fp/README: Update for new files.
4639         * soft-fp/floattisf.c: New file.
4640         * soft-fp/floattidf.c: New file.
4641         * soft-fp/floattitf.c: New file.
4642         * soft-fp/floatuntisf.c: New file.
4643         * soft-fp/floatuntidf.c: New file.
4644         * soft-fp/floatuntitf.c: New file.
4645         * soft-fp/fixsfti.c: New file.
4646         * soft-fp/fixdfti.c: New file.
4647         * soft-fp/fixtfti.c: New file.
4648         * soft-fp/fixunssfti.c: New file.
4649         * soft-fp/fixunsdfti.c: New file.
4650         * soft-fp/fixunstfti.c: New file.
4651         * soft-fp/extendxftf.c: New file.
4652         * soft-fp/trunctfxf.c: New file.
4653
4654         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
4655         (__trunctfxf2): Ditto.
4656
4657         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
4658         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
4659         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
4660         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
4661         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
4662         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
4663
4664         * config/i386/t-fprules-softfp64: New file.
4665         * config/i386/sfp-machine.h: New file.
4666         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
4667         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
4668         and soft-fp/t-softfp to tmake_file.
4669         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
4670         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
4671
4672         * config/i386/t-linux64 (softfp_wrap_start): New.
4673         (softfp_wrap_end): New.
4674         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
4675         supported for TARGET_64BIT.
4676
4677 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
4678
4679         * c-common.c (c_common_signed_or_unsigned_type): Emulate
4680         c_common_unsigned_type behavior.
4681
4682 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
4683
4684         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
4685         calls as pure.
4686
4687 2007-05-16  Eric Christopher  <echristo@apple.com>
4688
4689         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
4690         saving after stack push. Set sp_offset whenever we push.
4691         (rs6000_emit_epilogue): Move altivec register restore before
4692         stack push.
4693
4694 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4695
4696         * configure.ac: Allow sysroots to be relocated under $prefix as
4697         well as $exec_prefix.
4698         * configure: Regenerate.
4699
4700 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4701
4702         Revert:
4703
4704         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4705
4706         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4707         (gcc_tooldir): Likewise.
4708         * configure: Regenerate.
4709         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4710         old configure.ac gcc_tooldir setting.
4711         (prefix_to_exec_prefix): New variable.
4712         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4713         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4714
4715 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
4716
4717         * c-typeck.c (build_binary_op): Return early for error.
4718
4719 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
4720
4721         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
4722         struct nb_iter_bound.
4723         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
4724         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
4725         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
4726         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
4727         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
4728         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
4729         (del_scev_info): Use ggc_free.
4730         (scev_initialize): Allocate scalar_evolution_info in gc memory.
4731         * loop-init.c: Include ggc.h.
4732         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
4733         (loop_optimizer_finalize): Use ggc_free.
4734         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
4735         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
4736         pass_iv_optimize): Add TODO_ggc_collect.
4737         * function.h (struct function): Remove skip marker from x_current_loops.
4738         * cfgloop.c: Include ggc.h.
4739         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
4740         memory.
4741         (establish_preds): Vector superloops is gc allocated.
4742         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
4743         loop->exits list.
4744         (flow_loops_find): Vector larray is gc allocated.
4745         (loop_exit_free): Use ggc_free.
4746         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
4747         that head of exits list is now not a part of struct loop.
4748         (record_loop_exits): Allocate exits table in gc memory.
4749         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
4750         head of exits list is now not a part of struct loop.
4751         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
4752         struct loop_exit): Add GTY marker.
4753         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
4754         Add skip marker to aux field.  Make head of exits list a separate
4755         object.
4756         (struct loops): Add GTY marker.  Make larray vector gc allocated.
4757         Add param marker to exits table.
4758         (get_loops): Type changed.
4759         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
4760         dependency.
4761         (cfgloop.o, loop-init.o): Add ggc.h dependency.
4762         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
4763         * basic-block.h (struct basic_block_def): Remove skip marker from
4764         loop_father field.
4765
4766 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
4767
4768         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
4769         of 0 in the call to expand_expr().
4770         (expand_builtin_mathfn_3): Ditto.
4771         (expand_builtin_interclass_mathfn): Ditto.
4772         (expand_builtin_cexpi): Ditto.
4773         (expand_builtin_int_roundingfn): Ditto.
4774         (expand_builtin_int_roundingfn_2): Ditto.
4775         (expand_builtin_pow): Ditto.
4776         (expand_builtin_powi): Ditto.
4777         (expand_builtin_bswap): Ditto.
4778         (expand_builtin_unop): Ditto.
4779         (expand_builtin_fabs): Ditto.
4780         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
4781         the call to expand_expr().
4782         (expand_builtin_sync_operation): Ditto.
4783         (expand_builtin_compare_and_swap): Ditto.
4784         (expand_builtin_lock_test_and_set): Ditto.
4785         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
4786         instead of 0 in the call to expand_expr().
4787         (expand_builtin_extract_return_addr): Ditto.
4788         (expand_builtin_eh_return): Ditto.
4789         (expand_eh_return): Ditto.
4790         * explow.c (expr_size): Ditto.
4791         * expr.c (optimize_bitfield_assignment_op): Ditto.
4792         (expand_assignement): Ditto.
4793         (store_expr): Ditto.
4794         (store_field): Ditto.
4795         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
4796         the call to expand_expr().
4797         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
4798         in the call to expand_expr().
4799         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
4800         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
4801         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
4802         of expand_expr().
4803         * optabs.c (expand_vec_shift_expr): Ditto.
4804         (expand_vec_cond_expr): Ditto.
4805         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
4806         call to expand_expr().
4807         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
4808         in the call to expand_expr().
4809
4810 2007-05-14  Dave Korn  <dave.korn@artimi.com>
4811
4812         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
4813
4814 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
4815
4816         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
4817         instead of c_common_unsigned_type.
4818         (c_common_unsigned_type): Remove.
4819         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
4820         c_common_unsigned_type.
4821         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
4822         c_common_unsigned_type.
4823         * c-common.h (c_common_unsigned_type): Remove.
4824         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
4825         c_common_unsigned_type.
4826         * c-format.c (check_format_types): Use unsigned_type_for instead of
4827         c_common_unsigned_type.
4828         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4829         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
4830         c_common_unsigned_type.
4831         * convert.c (convert_to_integer): Use unsigned_type_for instead of
4832         lang_hooks.types.unsigned_type.
4833         * expmed.c (make_tree): Use unsigned_type_for instead of
4834         lang_hooks.types.unsigned_type.
4835         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
4836         lang_hooks.types.unsigned_type.
4837         (build_range_check): Likewise.
4838         (fold_unary): Likewise.
4839         (fold_binary): Likewise.
4840         (fold_ternary): Likewise.
4841         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4842         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
4843         * tree.c (get_unsigned_type): New.
4844         (unsigned_type_for): Use get_unsigned_type instead of
4845         lang_hooks.types.unsigned_type.
4846
4847 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
4848
4849         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
4850         to m68k_get_function_kind.  Update its prototype.
4851         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
4852         interrupt_thread.
4853         (m68k_interrupt_function_p): Return enum m68k_function_type
4854         instead of bool.  Rename to m68k_get_function_kind.
4855         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
4856         target is not fido.
4857         (m68k_compute_frame_layout): Don't mark any register for save
4858         if an interrupt_thread attribute is specified.
4859         (m68k_hard_regno_rename_ok): Update a use of
4860         m68k_interrupt_function_p.
4861         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
4862         m68k_interrupt_function_p.
4863         (m68k_function_type): New.
4864         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
4865         for a function with an interrupt_thread attribute.
4866         * doc/extend.texi: Document the interrupt_thread attribute.
4867
4868 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
4869
4870         Fix PR tree-optimization/31911
4871         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
4872         if they didn't change the expression.
4873
4874 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
4875
4876         * tree-scalar-evolution.c (resolve_mixers): Exported.
4877         * tree-scalar-evolution.h (resolve_mixers): Declare.
4878         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
4879         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
4880         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
4881         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
4882         init_array_ref, init_pointer_ref, analyze_indirect_ref,
4883         strip_conversion, analyze_offset_expr, address_analysis,
4884         object_analysis, analyze_offset): Removed.
4885         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
4886         split_constant_offset, canonicalize_base_object_address,
4887         object_address_invariant_in_loop_p, disjoint_objects_p,
4888         dr_may_alias_p, dr_address_invariant_p): New functions.
4889         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
4890         and dr_analyze_alias.
4891         (initialize_data_dependence_relation): Use dr_may_alias_p
4892         and object_address_invariant_in_loop_p.
4893         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
4894         is chrec_dont_know.
4895         (find_data_references_in_stmt): Restrict the analysis of data references
4896         to the given loop nest.
4897         (find_data_references_in_loop): Made static.  Pass loop nest to
4898         find_data_references_in_stmt.
4899         (compute_data_dependences_for_loop): Use DR_VOPS.
4900         (free_data_ref): Free DR_VOPS.
4901         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
4902         (struct innermost_loop_behavior): ... new.
4903         (struct base_object_info): Replaced by ...
4904         (struct indices): ... new.
4905         (struct dr_alias): New.
4906         (enum data_ref_type): Removed.
4907         (struct data_reference): Consist of struct innermost_loop_behavior,
4908         struct indices and struct dr_alias.
4909         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
4910         (DR_MEMTAG): Renamed to ...
4911         (DR_SYMBOL_TAG): ... this.
4912         (find_data_references_in_loop): Declaration removed.
4913         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
4914         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
4915         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
4916         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
4917
4918 2007-05-13  Revital Eres  <eres@il.ibm.com>
4919
4920         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
4921         which walks virtual def-use chains to find redundant stores.
4922         (dse_optimize_stmt): Call it.
4923
4924 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4925
4926         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
4927         * passes.c (init_optimization_passes): Move pass_jump_bypass
4928         after loop2.
4929
4930         * basic-block.h (bb_has_eh_pred): Fix style issue.
4931
4932 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4933
4934         PR rtl-optimization/31848
4935         * loop-invariant.c (move_invariant_reg): If we move an insn
4936         with a REG_EQUAL note, and that insn is not always executed,
4937         remove the REG_EQUAL note.
4938
4939 2007-05-12  Richard Guenther  <rguenther@suse.de>
4940
4941         PR tree-optimization/31797
4942         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
4943         propagate into a stmt that has volatile ops.
4944
4945 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4946
4947         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4948         (gcc_tooldir): Likewise.
4949         * configure: Regenerate.
4950         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4951         old configure.ac gcc_tooldir setting.
4952         (prefix_to_exec_prefix): New variable.
4953         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4954         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4955
4956 2007-05-11  Silvius Rus  <rus@google.com>
4957
4958         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
4959         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
4960         * c-common.h (strict_aliasing_warning): Change return type.
4961         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
4962         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
4963         (build_c_cast): Condition call to strict_aliasing_warning.
4964         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
4965         * flags.h (set_Wstrict_aliasing): Declare.
4966         * opts.c (set_Wstrict_alising): Define, add call to.
4967         * tree-flow.h (strict_aliasing_warning_backend): Declare.
4968         * tree-ssa-alias-warnings.c: New file.
4969         * tree-ssa-alias.c (compute_may_aliases): Add call to
4970         strict_aliasing_warning_backend.
4971
4972 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
4973
4974         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
4975         Use loop_depth and loop_outer accessor functions.
4976         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
4977         determine_invariantness_stmt, move_computations_stmt): Ditto.
4978         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
4979         add_loop, loopify, unloop, fix_loop_structure): Ditto.
4980         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
4981         * tree-scalar-evolution.c (interpret_loop_phi,
4982         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
4983         instantiate_parameters_1, scev_const_prop): Ditto.
4984         * cfghooks.c (make_forwarder_block): Ditto.
4985         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
4986         * modulo-sched.c (loop_canon_p): Ditto.
4987         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
4988         slpeel_can_duplicate_loop_p): Ditto.
4989         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
4990         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4991         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
4992         cancel_loop, verify_loop_structure): Ditto.
4993         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
4994         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
4995         superloops vector instead of "pred" array.
4996         (establish_preds): Take father loop as an argument.  Initialize the
4997         superloops vector.
4998         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
4999         initialize loop->outer.
5000         (flow_loop_tree_node_remove): Truncate the superloops vector.
5001         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
5002         "pred" merged to "superloops" vector.
5003         (loop_depth, loop_outer): New.
5004         (fel_init): Use loop_outer.
5005
5006 2007-05-11  Jan Hubicka  <jh@suse.cz>
5007
5008         * cgraphunit.c: Include gt-cgraphunit.h
5009         (static_ctors, static_dtors): New static vars.
5010         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
5011         based on implementation in c-common.c
5012         (cgraph_finalize_function): Call record_cdtor_fn.
5013         (cgraph_optimize): Call cgraph_build_cdtor_fns.
5014         * decl.c (finish_function): Do not call c_record_cdtor_fn.
5015         (c_write_global_declarations): Do not call c_build_cdtor_fns.
5016         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
5017         build_cdtor, c_build_cdtor_fns): Remove.
5018         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
5019         c_build_cdtor_fns): Remove prototype.
5020
5021 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
5022
5023         PR other/31852
5024         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
5025         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
5026         * builtins.c (fold_builtin_memchr): New.
5027         (expand_builtin_memchr): Call the latter.
5028         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
5029         * doc/extend.texi ([Other built-in functions provided by GCC]):
5030         Document memchr.
5031
5032 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
5033
5034         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
5035         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
5036         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
5037         PFPO_OP1_TYPE_SHIFT): Constants added.
5038         (DFP_ALL): Mode macro defined.
5039         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
5040         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
5041         Insn definitions added.
5042         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
5043         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
5044         Expanders added.
5045
5046 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
5047
5048         PR tree-optimization/31885
5049         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
5050         to be undetermined.
5051         (automatically_generated_chrec_p): Return false for NULL.
5052
5053 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
5054
5055         * config/bfin/bfin.h (MOVE_RATIO): Define.
5056
5057 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
5058
5059         * config.gcc (sparc-wrs-vxworks): New target.
5060         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
5061         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
5062         * config/sparc/sparc.h: Include vxworks-dummy.h.
5063         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
5064         include LABEL_REFs too.
5065         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
5066         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
5067         VxWorks.
5068         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
5069         on VxWorks.
5070         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
5071         (sparc_emit_call_insn): New function.
5072         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
5073         functions when generating VxWorks PIC.
5074         * config/sparc/sparc.md (vxworks_load_got): New pattern.
5075         (call, call_value): Use sparc_emit_call_insn instead of
5076         emit_call_insn.
5077
5078 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
5079
5080         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
5081
5082 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
5083
5084         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
5085         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
5086         instead of operand_subword.
5087
5088 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
5089
5090         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
5091         * config/bfin/bfin.c (bfin_local_alignment): New function.
5092         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
5093
5094 2007-05-08  Chao-ying Fu  <fu@mips.com>
5095
5096         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
5097         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
5098         (smsub_widen_optab, umsub_widen_optab): Define.
5099         * optabs.c (init_optabs): Initialize smsub_widen_optab and
5100         umsub_widen_optab.
5101         * genopinit.c (optabs): Fill in smsub_widen_optab and
5102         umsub_widen_optab.
5103         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
5104         and umsub_widen_optab to implement multiply-subtract sequences.
5105         * config/mips/mips.md (*msac<u>_di): Rename to...
5106         (<u>msubsidi4): ...this.  Extend condition to include
5107         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
5108         of operand 0 to "ka" and use the three-operand form of msub<u>
5109         for TARGET_DSPR2.
5110         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
5111         to define_expands.
5112
5113 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
5114
5115         PR rtl-optimization/28011
5116         * reload.c (push_reload): Set dont_share if IN appears in OUT
5117         also when IN is a PLUS rtx.
5118         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
5119         are same PLUS rtx.
5120
5121 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
5122
5123         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
5124         call unshare_all_decls.
5125         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
5126         (unshare_all_decls): Remove.
5127
5128 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
5129
5130         PR 31847
5131         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
5132         dumps.
5133
5134 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
5135             Nigel Stephens  <nigel@mips.com>
5136
5137         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
5138         Update comments and all uses.
5139         (MIN_FPRS_PER_FMT): Define.
5140         * config/mips/mips.c (function_arg): Fix to correctly handle
5141         the -mips32r2 -mfp64 -mabi=32 case.
5142         (override_options): Enable use of odd-numbered registers for
5143         SFmode values on MIPS32.
5144         (mips_save_reg_p): Save whole floating-point register pair if
5145         either half is used.
5146         (compute_frame_size): Fix comment.
5147
5148 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
5149
5150         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
5151         argument of type bool.
5152         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
5153         argument. Safely select temporary P register according to it.
5154         (do_link): Change call site of add_to_reg accordingly.
5155         (do_unlink): Add epilogue_p as a fourth argument and pass it
5156         to add_to_reg.
5157         (expand_interrupt_handler_epilogue): Change call of do_unlink
5158         accordingly.
5159         (bfin_expand_prologue): Add a third argument sibcall_p.
5160         * config/bfin/bfin.md (epilogue): Change call of
5161         bfin_expand_epilogue accordingly.
5162         (sibcall_epilogue): Likewise.
5163         (eh_return_internal): Likewise.
5164
5165         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
5166         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
5167         * config/bfin/bfin.c (bfin_handle_option): Handle
5168         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
5169         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
5170         Support bf534, bf536 and bf561.
5171         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
5172
5173 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
5174
5175         PR target/31854
5176         * config/i386/i386.c (ix86_function_regparm): Process local
5177         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
5178
5179 2007-05-07  Mike Stump  <mrs@apple.com>
5180
5181         * doc/invoke.texi (Warning Options): Document that -Wempty-body
5182         also checks for and while statements in C++.
5183
5184 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
5185
5186         * gcc.c (at_file_supplied): New variable.
5187         (main): Set it if we expanded argv.
5188         (do_spec_1): Pass an @-file to the linker if we were called with
5189         an @-file argument and HAVE_GNU_LD.
5190         * collect2.c (at_file_supplied): New variable.
5191         (response_file): New variable.
5192         (collect_exit): Unlink response_file if necessary.
5193         (handler): Likewise.
5194         (do_wait): Likewise.
5195         (main): Set at_file_supplied if we expanded argv.
5196         (collect_execute): Pass an @-file to subprocesses if we were called
5197         with an @-file argument.
5198         * configure.ac: Add define for HAVE_GNU_LD.
5199         * configure: Regenerate.
5200         * config.in: Regenerate.
5201
5202 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
5203
5204         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
5205         operand to HI mode.
5206         (mulsi3): New.
5207         (divsi3): New.
5208         (udivsi3): New.
5209
5210 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
5211
5212         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
5213         (TARGET_ENCODE_SECTION_INFO): Re-define.
5214         (m32c_encode_section_info): New
5215         (function_vector_handler): New
5216         (current_function_special_page_vector): New
5217         (m32c_special_page_vector_p): New.
5218         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
5219         Prototype.
5220         * config/m32c/jump.md: Added instruction JSRS for functions
5221         with attribute "function_vector".
5222         * doc/extend.texi (function_vector): Added description
5223         for M16C, M32C targets.
5224
5225 2007-05-07  DJ Delorie  <dj@redhat.com>
5226
5227         PR 31794
5228         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
5229         ashrpsi3, lshrpsi3): Update shift count constraint.
5230
5231 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
5232             Nathan Froyd  <froydnj@codesourcery.com>
5233
5234         PR 22133
5235         * c-incpath.c (add_path): Strip trailing path separators.
5236
5237 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
5238
5239         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
5240         Free dominance info before purging EH edges.
5241         (eliminate_degenerate_phis): Likewise.
5242         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
5243
5244 2007-05-07  Jan Hubicka  <jh@suse.cz>
5245
5246         * gimplify.c (gimplify_expr): Do not crash when folding
5247         (void *)(int)&a + 4.
5248
5249 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5250
5251         PR driver/31694
5252         * c-opts.c (lang_fortran): Make it non static.
5253         * c-common.h (lang_fortran): New prototype.
5254         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
5255         -lang-fortran option was passed by the driver.
5256
5257 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
5258
5259         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
5260         of ASSERT_CHECKING.  Tweak message.
5261
5262 2007-05-06  Revital Eres  <eres@il.ibm.com>
5263
5264         PR 30957
5265         * loop-unroll.c (insert_var_expansion_initialization):
5266         Initialize the expansions with -zero instead of +zero.
5267
5268 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
5269
5270         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
5271         into pic and non-pic versions. Mark r19 as used for
5272         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
5273         for tgd_load, tld_load and tie_load .
5274         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
5275         version of tgd_load, tld_load and tie_load depending on the
5276         value of flag_pic.
5277
5278 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
5279             Jakub Jelinek  <jakub@redhat.com>
5280
5281         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
5282         (__do_global_dtors_aux): Use more paranoid loop to run
5283         destructors if HIDDEN_DTOR_LIST_END.
5284         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
5285
5286 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
5287
5288         * varasm.c (align_variable): Don't increase alignment for
5289         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
5290         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
5291
5292 2007-05-04  Josh Conner  <jconner@apple.com>
5293
5294         * basic-block.h (cdi_direction): Assign values to all enumeration
5295         constants.
5296         (dom_computed): Remove.
5297         (dom_info_state): New.
5298         (set_dom_info_availability): New.
5299         * tree-ssa-loop-im.c (determine_invariantness): Initialize
5300         walk_data.dom_direction.
5301         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
5302         instead of dom_computed[].
5303         (split_edge): Likewise.
5304         (create_basic_block): Likewise.
5305         (merge_blocks): Likewise.
5306         * ifcvt.c (find_if_header): Likewise.
5307         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
5308         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
5309         * tree-ssa.c (verify_ssa): Likewise.
5310         * tree-cfg.c (tree_verify_flow_info): Likewise.
5311         (remove_edge_and_dominated_blocks): Likewise.
5312         * dominance.c (dom_computed): Make static.
5313         (calc_dfs_tree_nonrec): Change third param to a bool.
5314         (calc_dfs_tree): Change second param to a bool.
5315         (calc_idioms): Change second param to a bool.  Use
5316         dom_convert_dir_to_idx.
5317         (init_dom_info): Validate dir before using.
5318         (dom_convert_dir_to_idx): New.
5319         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
5320         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
5321         (free_dominance_info): Use dom_convert_dir_to_idx.
5322         (get_immediate_dominator): Likewise.
5323         (set_immediate_dominator): Likewise.
5324         (get_dominated_by): Likewise.
5325         (redirect_immediate_dominators): Likewise.
5326         (nearest_common_denominator): Likewise.
5327         (dominated_by_p): Likewise.
5328         (bb_dom_dfs_in): Likewise.
5329         (bb_dom_dfs_out): Likewise.
5330         (recount_dominator): Likewise.
5331         (iterate_fix_dominators): Likewise.
5332         (add_to_dominance_info): Likewise.
5333         (delete_from_dominance_info): Likewise.
5334         (first_dom_son): Likewise.
5335         (next_dom_son): Likewise.
5336         (dom_info_available_p): Likewise.
5337         (dom_info_state): New.
5338         (set_dom_info_availability): New.
5339
5340 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5341
5342         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
5343         Expander removed.
5344         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
5345
5346 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
5347
5348         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
5349         (subdi3, subdi_carry): Delete.
5350
5351 2007-05-04  Jan Hubicka  <jh@suse.cz>
5352             Richard Guenther  <rguenther@suse.de>
5353
5354         * opts.c (decode_options): Do not fiddle with inlining
5355         parameters in case of optimizing for size.
5356         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
5357         for size do nothing.
5358         (cgraph_decide_inlining_of_small_function): When optimizing for
5359         size never inline functions increasing caller size.
5360         (cgraph_early_inlining): Inline for size when optimizing for size.
5361
5362 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
5363
5364         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
5365         logical operations piecewise.
5366         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
5367         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
5368         subdi_sesidi_di): Delete.
5369         (add_with_carry): Produce carry in CC instead of a DREG to shorten
5370         the generated sequence.  Allow three-reg add in constraints.  Rewrite
5371         the rtl expression for carry to avoid zero_extend of a constant.
5372         (sub_with_carry): New pattern.
5373         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
5374         different sequence not involving jumps.
5375         (notbi): Now a named pattern.
5376
5377 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
5378
5379         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
5380         Add the note about a significant loss of accuracy of some
5381         mathematical routines when these options are used.
5382
5383 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5384
5385         * haifa-sched.c (rtx_vec_t): New typedef.
5386         (contributes_to_priority_p): Extract piece of priority () into new
5387         static function.
5388         (priority): Use the function.  Add assertion.
5389         (rank_for_schedule, set_priorities): Add assertion to check that
5390         insn's priority is initialized.
5391         (clear_priorities, calc_priorities): Change signature.  Make it update
5392         all relevant insns.  Update all callers ('add_to_speculative_block ()'
5393         and 'create_block_check_twin ()').
5394         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
5395         Add new field 'priority_status'.
5396         (INSN_PRIORITY_STATUS): New macro.
5397         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
5398
5399 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5400
5401         * sched-ebb.c (debug_ebb_dependencies): New static function.
5402         (init_ready_list): Use it.
5403
5404         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
5405         with changed signature and 'debug_rgn_dependencies ()'.
5406         (debug_rgn_dependencies): New static function.
5407         (init_ready_list): Use it.
5408
5409         * sched-int.h (debug_dependencies): Declare.
5410
5411 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5412
5413         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
5414
5415 2007-05-04  Dirk Mueller  <dmueller@suse.de>
5416
5417         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
5418
5419 2007-05-03  Jan Hubicka  <jh@suse.cz>
5420
5421         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
5422         for pointer type in more cases than before.
5423
5424         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
5425
5426         * tree-object-size.c (plus_expr_object_size): When operand size is
5427         unknown, return unknown.
5428
5429 2007-05-03  Dirk Mueller  <dmueller@suse.de>
5430
5431         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
5432
5433         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
5434         options.
5435
5436         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
5437
5438 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
5439
5440         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
5441
5442 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
5443
5444         * config/soft-fp/double.h, config/soft-fp/extended.h,
5445         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
5446         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
5447         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
5448         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
5449         glibc CVS.
5450
5451 2007-05-03  Ian Lance Taylor  <iant@google.com>
5452
5453         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
5454         MASK_PPC_GFXOPT for 8540 or 8548.
5455
5456 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5457
5458         * tree-vect-transform.c (vect_update_inits_of_drs): Use
5459         vect_print_dump_info() to output debug information.
5460
5461 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5462
5463         PR target/31768
5464         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
5465         operands of size 2 when operand is not MEM_P.
5466
5467 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5468
5469         PR tree-optimization/30565
5470         * lambda-code.c (perfect_nestify): Fix updating of dominators.
5471
5472 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5473
5474         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
5475         (umulsi3_highpart): Use them.
5476         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
5477         for final accumulator to D regisster tranfser.
5478
5479 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
5480
5481         PR tree-optimization/31699
5482         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
5483         code.
5484         (vect_enhance_data_refs_alignment): Compute peel amount using
5485         TYPE_VECTOR_SUBPARTS instead of vf.
5486         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
5487
5488 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
5489
5490         PR bootstrap/31776
5491         * system.h: Remove inclusion of double-int.h
5492         * tree.h: Include double-int.h
5493         * gengtype.c: Likewise
5494         * cfgloop.h: Likewise
5495         * Makefile.in: Adjust dependencies on double-int.h
5496
5497 2007-05-02  Eric Christopher  <echristo@apple.com>
5498
5499         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
5500         -shared to -Zdynamiclib.
5501
5502 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
5503
5504         PR c++/31663
5505         * c-common.c (strip_pointer_or_array_types): New function.
5506         * c-common.h (strip_pointer_or_array_types): New function declaration.
5507
5508 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5509
5510         PR tree-optimization/31771
5511         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
5512
5513 2007-05-02  Paul Brook  <paul@codesourcery.com>
5514
5515         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
5516
5517 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5518
5519         PR middle-end/29715
5520         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
5521         transformation.
5522
5523 2007-05-02  Nick Clifton  <nickc@redhat.com>
5524
5525         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
5526
5527 2007-05-02  Richard Guenther  <rguenther@suse.de>
5528
5529         PR tree-optimization/31146
5530         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
5531         argument, single_use_p.  If we have a single use that is
5532         a conversion to the definition rhs type, propagate that rhs.
5533         (forward_propagate_addr_expr): Pass single_use_p argument
5534         to forward_propagate_addr_expr_1.
5535
5536 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
5537
5538         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
5539         variable.
5540
5541 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5542
5543         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
5544         'AMD Family 10 core'.
5545
5546 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5547
5548         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
5549         and athlon64-sse3 as improved versions of k8, opteron and athlon64
5550         with SSE3 instruction set support.
5551         * doc/invoke.texi: Likewise.
5552
5553 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5554
5555         * config/i386/i386.c (override_options): Tuning 32-byte loop
5556         alignment for amdfam10 architecture. Increasing the max loop
5557         alignment to 24 bytes.
5558
5559 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
5560
5561         * config/m68k/constraints.md: New.
5562         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
5563         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
5564         EXTRA_CONSTRAINT): Remove.
5565         * config/m68k/m68k.md: Include constraints.md.
5566         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
5567
5568 2007-05-01  Ian Lance Taylor  <iant@google.com>
5569
5570         PR tree-optimization/31739
5571         * tree-vrp.c (vrp_val_is_max): New static function.
5572         (vrp_val_is_min): New static function.
5573         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
5574         copying the node.
5575         (set_value_range): Use vrp_val_is_{max,min}.
5576         (extract_range_from_assert): Likewise.
5577         (extract_range_from_binary_expr): Likewise.
5578         (extract_range_from_unary_expr): Likewise.
5579         (dump_value_range, vrp_meet): Likewise.
5580         (vrp_visit_phi_node): Likewise.
5581         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
5582
5583 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
5584
5585         * config/i386/gmon-sol2.c (size_t): New type.
5586         (intptr_t): Likewise.
5587         (s_textsize): Declare as size_t.
5588         (sbrk): Declare.
5589         (monstartup): Use size_t for sizes.
5590         (_mcount): Save and restore registers.
5591         (internal_mcount): Pass 0 as the first argument to monstartup
5592         in 64-bit mode.
5593         (moncontrol): Convert pointer to appropriately sized integer
5594         before passing to profil.
5595
5596 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5597
5598         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
5599         __NO_FPRS__, not just if _SOFT_DOUBLE.
5600         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
5601         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
5602         also for E500 double.
5603         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
5604         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
5605         && !TARGET_FPRS).
5606
5607 2007-05-01  Richard Guenther  <rguenther@suse.de>
5608
5609         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
5610         is NULL.
5611
5612 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5613
5614         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
5615
5616 2007-05-01  Jan Hubicka  <jh@suse.cz>
5617
5618         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
5619         invariant.
5620
5621 2007-05-01  Jan Hubicka  <jh@suse.cz>
5622
5623         * tree.h (maybe_fold_offset_to_component_ref): Remove.
5624         (maybe_fold_offset_to_reference): Declare.
5625         * fold-const.c (fold_unary): Do not fold
5626         (type *)&A into &A->field_of_type_and_offset_0
5627         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
5628         size is unknown, give up.
5629         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
5630         offsets.
5631         (maybe_fold_offset_to_reference): New.
5632         (maybe_fold_stmt_indirect): Use it.
5633         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
5634         * gimplify.c (gimplify_conversion): Canonicalize conversions to
5635         field references.
5636         (gimplify_expr): Likewise for plus_expr.
5637
5638 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
5639
5640         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
5641         bsi_after_labels.  Always insert statements before bsi.
5642         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
5643         * predict.c (apply_return_prediction): Check for empty blocks.
5644         * cfgexpand.c (lab_rtx_for_bb): New variable.
5645         (label_rtx_for_bb): Do not create new tree labels.
5646         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
5647         (tree_expand_cfg): Initialize lab_rtx_for_bb.
5648         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
5649         creating edges.
5650         (label_for_bb): Add field used.
5651         (update_eh_label, main_block_label): Mark the label used.
5652         (cleanup_dead_labels): Remove unused labels.
5653
5654 2007-05-01  Richard Guenther  <rguenther@suse.de>
5655
5656         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
5657         if it is not about to be set.
5658         (get_value_range): Do not pre-allocate equiv bitmap.
5659         (update_value_range): No need to clear equiv field.
5660         (add_equivalence): Change prototype to get bitmap pointer.
5661         Allocate bitmap here if it is not already.
5662         (extract_range_from_assert): Do not allocate bitmap here.
5663         Update callers to add_equivalence.
5664         (extract_range_from_ssa_name): Likewise.
5665         (get_vr_for_comparison): New static helper.
5666         (compare_name_with_value): Handle NULL equiv bitmap by
5667         peeling the first iteration of the comparison loop.
5668         Use get_vr_for_comparison.
5669         (compare_names): Handle NULL equiv bitmaps by using fake
5670         ones.  Use get_vr_for_comparison.
5671
5672 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
5673
5674         * double-int.c (mpz_set_double_int): Moved from
5675         tree-ssa-loop-niter.c.
5676         (mpz_get_double_int): Likewise; also, add option to wrap
5677         out-of-range integers.
5678         * double-int.h: New prototypes for above.
5679         * tree.c (get_static_type_bounds): Moved from
5680         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
5681         TYPE_MAX_VALUE if they exist..
5682         * tree.h: New prototype for above.
5683         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
5684         get_type_bounds calls.
5685         (mpz_set_double_int): Move to double-int.c.
5686         (get_type_bounds): Move to tree.c, rename to
5687         get_static_type_bounds.
5688         (mpz_to_double_int): Move to double-int.c, rename to
5689         mpz_get_double_int.
5690
5691 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
5692
5693         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
5694         DIV0 exception can fall through to a normal return.
5695
5696 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
5697
5698         PR middle-end/22156
5699         Temporarily revert:
5700         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
5701         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
5702         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5703         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5704         initialize align to silence bogus warning.
5705         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5706         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5707         all_no_warning.
5708         (struct sra_walk_fns): Remove use_all parameter from use.
5709         (sra_hash_tree): Handle BIT_FIELD_REFs.
5710         (sra_elt_hash): Don't hash bitfld blocks.
5711         (sra_elt_eq): Skip them in parent compares as well.  Handle
5712         BIT_FIELD_REFs.
5713         (sra_walk_expr): Don't maintain or pass down use_all_p.
5714         (scan_use): Remove use_all parameter.
5715         (scalarize_use): Likewise.  Re-expand assignment to
5716         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5717         output, and re-scalarize after output.  Don't mark anything
5718         for no warning.
5719         (scalarize_ldst): Adjust.
5720         (scalarize_walk_gimple_modify_statement): Likewise.
5721         (build_element_name_1): Handle BIT_FIELD_REFs.
5722         (instantiate_element): Don't warn for any element whose parent
5723         is used as a whole.
5724         (instantiate_missing_elements_1): Return the sra_elt.
5725         (canon_type_for_field): New.
5726         (try_instantiate_multiple_fields): New.
5727         (instantiate_missing_elemnts): Use them.
5728         (mark_no_warning): Removed.
5729         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5730         (REPLDUP, sra_build_elt_assignment): New.
5731         (generate_copy_inout): Use them.
5732         (generate_element_copy): Likewise.  Handle bitfld differences.
5733         (generate_element_zero): Don't recurse for blocks.  Use
5734         sra_build_elt_assignment.
5735         (generate_one_element_int): Take elt instead of var.  Use
5736         sra_build_elt_assignment.
5737         (generate_element_init_1): Adjust.
5738         (scalarize_use, scalarize_copy): Use REPLDUP.
5739         (scalarize_ldst): Move assert before dereference.
5740         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5741
5742 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5743
5744         PR C++/31721
5745         * tree.c (reconstruct_complex_type): Reconstruct a reference
5746         correctly.
5747         Also use the same mode for the pointer as the old pointer type.
5748
5749 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
5750
5751         * doc/trouble.texi (Interoperation): Remove note about Ultrix
5752         Fortran compiler.
5753
5754 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
5755
5756         PR rtl-optimization/31676
5757         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
5758         (df_refs_record): Call it.
5759
5760 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5761
5762         * rtl.def (SS_ABS): New code.
5763         * config/bfin/bfin.c (print_operand): New modifier 'v'.
5764         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
5765         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
5766         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
5767         (bfin_init_builtins): Define them.
5768         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
5769         (bfin_expand_builtin): ... and handle the others here.
5770         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
5771         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
5772         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
5773         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
5774         operand is only HImode.
5775
5776 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
5777
5778         * regclass.c (scan_one_insn): Remove splitting of
5779         two address insns.
5780
5781 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
5782             Nigel Stephens  <nigel@mips.com>
5783
5784         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
5785
5786 2007-04-28  Jan Hubicka  <jh@suse.cz>
5787
5788         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
5789         insn_locators_alloc instead of insn_locators_initialize;
5790         call reset_block_changes.
5791         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5792         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
5793         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
5794         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5795         * config/score/score.c (th_output_mi_thunk): Likewise.
5796         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5797         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
5798         tolerate uninitialized locator info.
5799
5800         Re-apply:
5801         * function.c (init_function_start): Don't init line number info.
5802         (expand_function_end): Update.
5803         (reset_block_changes, record_block_change, finalize_block_changes,
5804         check_block_change, free_block_changes): Kill.
5805         * function.h (reset_block_changes, record_block_change,
5806         finalize_block_changes, check_block_change, free_block_changes): Remove
5807         prototypes.
5808         (struct function): Remove ib_boundaries_block.
5809         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5810         Use curr_insn_locator to initialize locator.
5811         (emit_line_note): Remove.
5812         * cfgexpand.c (expand_gimple_cond_expr): Update.
5813         (construct_exit_block): Likewise.
5814         (tree_expand_cfg): Initialize/finalize locators.
5815         * expr.c (expand_expr_real): Update.
5816         * cfglayout.c (line_locators_locs, line_locators_lines,
5817         file_locators_locs, file_locators_files): Remove.
5818         (set_block_levels): Move to cfgexpand.c.
5819         (insn_locators_initialize): Remove.
5820         (pass_insn_locators_initialize): Remove.
5821         (locations_locators_locs, locations_locators_vals): New static vars.
5822         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5823         Likewise.
5824         (insn_locators_alloc, insn_locators_finalize,
5825         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5826         New functions.
5827         (locator_location): New.
5828         (locator_line, locator_file): Rewrite.
5829         * rtl.h (emit_line_note): Kill.
5830         (insn_locators_alloc, insn_locators_finalize,
5831         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5832         Declare.
5833         * tree-inline.c (initialize_cfun): Do not initialize
5834         ib_boundaries_block.
5835         * passes.c (pass_insn_locators_initialize): Remove.
5836
5837 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
5838
5839         * tree-cfg.c (move_block_to_fn): Release bb from dominance
5840         info.  Update last_basic_block correctly.
5841
5842 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5843
5844         PR target/31701
5845         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
5846         register itself to hold the offset constant.  Tell flow the use
5847         of r4 and r5 when they are used.
5848
5849 2007-04-27  Richard Guenther  <rguenther@suse.de>
5850
5851         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
5852         if we simplified anything.
5853         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
5854         warnings until we did a simplification and the stmt was not
5855         marked as TREE_NO_WARNING.
5856
5857 2007-04-27  Mike Stump  <mrs@apple.com>
5858
5859         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
5860
5861 2007-04-27  Ian Lance Taylor  <iant@google.com>
5862
5863         PR middle-end/31710
5864         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
5865         TYPE_MAX_VALUE exist, convert them to the new type.
5866
5867 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5868
5869         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
5870         if it claims to be available.
5871         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
5872         edge is redirected.
5873         (perform_tree_ssa_dce): Always free postdominators.
5874
5875 2007-04-27  Richard Henderson  <rth@redhat.com>
5876
5877         * config/alpha/predicates.md (aligned_memory_operand): Mark
5878         as define_special_predicate.
5879         (unaligned_memory_operand, normal_memory_operand): Likewise.
5880         (reg_or_unaligned_mem_operand): Remove.
5881         (any_memory_operand): Match the documentation and check for
5882         non-renumbered pseudos during reload.
5883         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
5884         alpha_secondary_reload_class, update to new interface, make static.
5885         Handle CQImode like HImode.  Remove FP subreg check.
5886         (alpha_expand_mov): Use replace_equiv_address.
5887         (alpha_expand_mov_nobwx): Use any_memory_operand.
5888         (TARGET_SECONDARY_RELOAD): New.
5889         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
5890         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
5891         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
5892         * config/alpha/alpha.md: ... here.
5893         (RELOAD12, reloadmode): New.
5894         (movcqi): New.
5895         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
5896         Don't handle the aligned case here.
5897         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
5898         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
5899         reload_inhi_help.  Don't expect a scratch register.
5900         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
5901         reload_outhi_help.
5902         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
5903
5904 2007-04-27  Richard Guenther  <rguenther@suse.de>
5905
5906         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
5907
5908 2007-04-27  Richard Guenther  <rguenther@suse.de>
5909
5910         PR tree-optimization/30965
5911         PR tree-optimization/30978
5912         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
5913         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
5914         (find_equivalent_equality_comparison): Likewise.
5915         (simplify_cond): Likewise.
5916         (get_prop_source_stmt): New helper.
5917         (get_prop_dest_stmt): Likewise.
5918         (can_propagate_from): Likewise.
5919         (remove_prop_source_from_use): Likewise.
5920         (combine_cond_expr_cond): Likewise.
5921         (forward_propagate_comparison): New function.
5922         (forward_propagate_into_cond): Rewrite to use fold for
5923         tree combining.
5924         (tree_ssa_forward_propagate_single_use_vars): Call
5925         forward_propagate_comparison to propagate comparisons.
5926
5927 2007-04-27  Richard Guenther  <rguenther@suse.de>
5928
5929         PR tree-optimization/31715
5930         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
5931         sure to do computation on the offset in an appropriate
5932         signed type.
5933
5934 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
5935
5936         * reload.h (elimination_target_reg_p): Declare.
5937         * reload.c (find_reloads): Don't apply the reg_rtx move
5938         optimization if the SET_DEST satisfies elimination_target_reg_p.
5939         * reload1.c (elimination_target_reg_p): New function.
5940         (gen_reload): In the move/add2 fallback, make sure that op0
5941         does not overlap the destination register.
5942
5943 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5944
5945         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
5946         transform only GIMPLE_MODIFY_STMTs.
5947         * tree-complex.c (expand_complex_operations_1): Ditto.
5948         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
5949         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
5950         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
5951         branches.
5952         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5953         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
5954         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
5955         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
5956         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
5957         slpeel_add_loop_guard): Ditto.
5958         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
5959         * lambda-code.c (perfect_nestify): Ditto.
5960         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
5961         before the first statement.
5962         * tree-optimize.c (execute_free_datastructures): Fix comments.
5963         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
5964         * tree-flow.h (disband_implicit_edges): Declaration removed.
5965         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
5966         branches.
5967         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
5968         without gotos.
5969         (disband_implicit_edges, has_label_p): Removed.
5970         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
5971         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
5972         branches.
5973         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
5974         side effects.
5975         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
5976         also for COND_EXPRs.
5977         * cfgexpand.c (label_rtx_for_bb): New function.
5978         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
5979         Use label_rtx_for_bb to find the labels.
5980         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
5981         last block.  Detect fallthru edges.
5982
5983 2007-04-26  Ian Lance Taylor  <iant@google.com>
5984
5985         PR target/28675
5986         * reload.c (find_reloads_subreg_address): If the address was valid
5987         in the original mode but not in the new mode, reload the whole
5988         address.
5989
5990 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5991
5992         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
5993         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
5994         (cleanup_control_expr_graph): Do not invalidate dominance info.
5995         Record altered blocks.
5996         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
5997         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
5998         cleanup_tree_cfg_bb): New functions.
5999         (remove_forwarder_block): Do not maintain the worklist of blocks.
6000         Record altered blocks.
6001         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
6002         not over whole cfg.
6003         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
6004         delete_unreachable_blocks if dominators are not available.
6005         * tree-inline.c (optimize_inline_calls): Free dominance information
6006         earlier.
6007         * tree-flow.h (remove_edge_and_dominated_blocks,
6008         cfgcleanup_altered_bbs): Altered.
6009         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
6010         blocks.
6011         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
6012         functions.
6013         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
6014         do not invalidate dominators.
6015
6016 2007-04-26  Anatoly Sokolov <aesok@post.ru>
6017
6018         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
6019         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
6020         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
6021         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
6022
6023 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
6024
6025         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
6026
6027 2007-04-26  Richard Guenther  <rguenther@suse.de>
6028
6029         PR tree-optimization/31703
6030         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
6031         the right type for the target of the bittest.
6032
6033 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6034
6035         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
6036         ix86_sol10_return_in_memory.
6037
6038 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6039
6040         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
6041         variables.
6042
6043 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
6044
6045         PR c++/31598
6046         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
6047
6048         PR tree-optimization/30558
6049         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
6050         clear this_state.prev_try.
6051
6052 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6053             Mark Mitchell  <mark@codesourcery.com>
6054
6055         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
6056         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
6057         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
6058
6059 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6060
6061         PR driver/31107
6062         * doc/invoke.texi (%:print-asm-header): Document.
6063         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
6064         and -ftarget-help.
6065         (static_spec_functions): Add print-asm-header.
6066         (main): Print a banner before the --target-help linker options.
6067         (print_asm_header_spec_function): New function.
6068
6069 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
6070
6071         PR target/31403
6072         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
6073         (movsf_ie): Likewise.
6074
6075 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
6076
6077         * doc/extend.texi ([Type Traits]): Adjust per N2255.
6078
6079 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
6080
6081         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
6082         for divide-by-zero.
6083         (__umodsi3, __modsi3): Likewise.
6084
6085 2007-04-25  Dirk Mueller  <dmueller@suse.de>
6086
6087         * c-typeck.c (build_compound_expr): Annotate warning()
6088         call with OPT_Wunused_value.
6089         * tree-ssa.c (warn_uninit): Annotate warning with
6090         OPT_Wunintialized.
6091         * c-common.c (handle_sentinel_attribute): Annotate warning
6092         call with OPT_Wattributes.
6093
6094 2007-04-25  Thiemo Seufer  <ths@mips.com>
6095
6096         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
6097         (mips16): Fix typo.
6098         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
6099         on to the assembler.  Improve handling of -mno-mips16.  Add handling
6100         of -mno-mips3d, -mno-dsp, -mno-dspr2.
6101         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
6102         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
6103         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
6104
6105 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
6106
6107         PR target/31680
6108         * config/i386/winnt.c (i386_pe_file_end): Strip only
6109         USER_LABEL_PREFIX when writing export name.
6110
6111 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
6112
6113         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
6114         sh/elf.h, vx-common.h and vxworks.h.
6115         * config/sh/sh.h: Include config/vxworks-dummy.h.
6116         (SUBTARGET_OVERRIDE_OPTIONS): Define.
6117         (OVERRIDE_OPTIONS): Use it.
6118         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
6119         (vxworks_picreg): New pattern.
6120         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
6121         VXWORKS_OS_CPP_BUILTINS.
6122         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
6123         to their VXWORKS_* equivalents.
6124         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
6125         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
6126         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
6127         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
6128         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
6129         -mrtp/-fPIC multilibs.
6130         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
6131         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
6132         (MULTILIB_OSDIRNAMES): Delete.
6133
6134 2007-04-25  Anatoly Sokolov <aesok@post.ru>
6135
6136         PR target/18989
6137         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
6138
6139 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
6140
6141         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
6142         rounding mode to be specified by the caller.
6143         (real_to_mpfr) Likewise.
6144         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
6145         include new arguments.
6146         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
6147
6148 2007-04-24  Ian Lance Taylor  <iant@google.com>
6149
6150         PR tree-optimization/31605
6151         * tree-vrp.c (set_value_range): Check that min and max are not
6152         both overflow infinities.
6153         (set_value_range_to_value): New static function.
6154         (extract_range_from_binary_expr): Call set_value_range_to_value.
6155         (extract_range_from_cond_expr): Likewise.
6156         (extract_range_from_expr): Likewise.
6157         (extract_range_from_unary_expr): Likewise.  Don't create a range
6158         which overflows on both sides.
6159         (vrp_meet): Check for a useless range.
6160         (vrp_visit_phi_node): If we see a constant which looks like an
6161         overflow infinity, turn off the TREE_OVERFLOW flag.
6162
6163 2007-04-24  Ian Lance Taylor  <iant@google.com>
6164
6165         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
6166
6167 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
6168
6169         PR diagnostic/25923
6170         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
6171         diagnostic message is being built.
6172         * tree-pretty-print.c (dump_generic_node): Only write the
6173         formatted text into BUFFER's stream if we are not building a
6174         diagnostic message.
6175         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
6176         dump_generic_node.
6177         * Makefile.in (toplev.o): Depend on tree-pass.h.
6178
6179 2007-04-24  Ian Lance Taylor  <iant@google.com>
6180
6181         PR tree-optimization/31602
6182         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
6183         conditionals in the copied loop header.
6184         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
6185         warnings if TREE_NO_WARNING is set.
6186         * doc/invoke.texi (Warning Options): Clarify that
6187         -Wstrict-overflow does not warn about loops.
6188
6189 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
6190
6191         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
6192         expand on the comment about _Decimal128 arguments and check the
6193         integer result of the modulus operation; for 64-bit ELF ABI, ensure
6194         that _Decimal128 argument uses even/odd register pair.
6195         (function_arg): Ditto.
6196
6197 2007-04-24  Hui-May Chang <hm.chang@apple.com>
6198
6199         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
6200         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
6201
6202 2007-04-24  Richard Guenther  <rguenther@suse.de>
6203             Olga Golovanevsky  <olga@il.ibm.com>
6204
6205         * fold-const.c (multiple_of_p): Check for bottom
6206         to be zero.
6207
6208 2007-04-24  Richard Henderson  <rth@redhat.com>
6209
6210         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
6211         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
6212         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
6213         looking for non-zero bits shifted out.  Avoid a recursive call
6214         when constructing the scalar.
6215         (__floatundisf): Likewise.
6216
6217 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
6218
6219         * dwarf2out.c (field_byte_offset): Move the existing logic
6220         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
6221         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
6222
6223 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6224
6225         PR target/31641
6226         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
6227         argument of 0 for memset.
6228         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
6229         unsigned shift instead of the signed variant.
6230
6231 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6232
6233         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
6234         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
6235         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
6236         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
6237         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
6238         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
6239         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
6240         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
6241         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
6242         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
6243         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
6244         "mul<mode>3", "div<mode>3"): Insn definitions added.
6245         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
6246         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
6247         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
6248         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
6249         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
6250         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
6251         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
6252         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
6253         TARGET_FLOAT_FORMAT): Macro definitions removed.
6254         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
6255         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
6256         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
6257         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
6258         (s390_gen_rtx_const_DI): Function removed.
6259         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
6260
6261 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
6262
6263         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
6264         over an external ffs function.
6265
6266 2007-04-24  Chao-ying Fu  <fu@mips.com>
6267             Richard Sandiford  <richard@nildram.co.uk>
6268
6269         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
6270         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
6271         (smadd_widen_optab, umadd_widen_optab): Define.
6272         * optabs.c (init_optabs): Initialize smadd_widen_optab and
6273         umadd_widen_optab.
6274         * genopinit.c (optabs): Fill in smadd_widen_optab and
6275         umadd_widen_optab.
6276         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
6277         and umadd_widen_optab to implement multiply-add sequences.
6278         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
6279         (<u>maddsidi4): ...this.  Extend condition to include
6280         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
6281         of operand 0 to "ka" and use the three-operand form of madd<u>
6282         for TARGET_DSPR2.
6283         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
6284         to define_expands.
6285         * config/mips/constraints.md (ka): New register constraint.
6286
6287 2007-04-24  Jan Hubicka  <j@suse.cz>
6288
6289         Revert:
6290
6291         2007-04-23  Jan Hubicka  <jh@suse.cz>
6292         * function.c (init_function_start): Don't init line number info.
6293         (expand_function_end): Update.
6294         (reset_block_changes, record_block_change, finalize_block_changes,
6295         check_block_change, free_block_changes): Kill.
6296         * function.h (reset_block_changes, record_block_change,
6297         finalize_block_changes, check_block_change, free_block_changes): Remove
6298         prototypes.
6299         (struct function): Remove ib_boundaries_block.
6300         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6301         Use curr_insn_locator to initialize locator.
6302         (emit_line_note): Remove.
6303         * cfgexpand.c (expand_gimple_cond_expr): Update.
6304         (construct_exit_block): Likewise.
6305         (tree_expand_cfg): Initialize/finalize locators.
6306         * expr.c (expand_expr_real): Update.
6307         * cfglayout.c (line_locators_locs, line_locators_lines,
6308         file_locators_locs, file_locators_files): Remove.
6309         (set_block_levels): Move to cfgexpand.c.
6310         (insn_locators_initialize): Remove.
6311         (pass_insn_locators_initialize): Remove.
6312         (locations_locators_locs, locations_locators_vals): New static vars.
6313         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6314         Likewise.
6315         (insn_locators_alloc, insn_locators_finalize,
6316         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6317         New functions.
6318         (locator_location): New.
6319         (locator_line, locator_file): Rewrite.
6320         * rtl.h (emit_line_note): Kill.
6321         (insn_locators_alloc, insn_locators_finalize,
6322         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6323         Declare.
6324         * tree-inline.c (initialize_cfun): Do not initialize
6325         ib_boundaries_block.
6326         * passes.c (pass_insn_locators_initialize): Remove.
6327
6328 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
6329
6330         * doc/invoke.texi: Removed leading '-' from option index entries.
6331
6332 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
6333
6334         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
6335         Use phi_nodes_ptr.
6336         (create_phi_node): Use set_phi_nodes.
6337         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
6338         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
6339         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
6340         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
6341         (bsi_start, bsi_last): Use bb_stmt_list.
6342         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
6343         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
6344         Traverse the statements using tsi iterator.
6345         * basic-block.h (struct basic_block_def): Fields stmt_list
6346         and phi_nodes moved to ...
6347         (struct tree_bb_info): ... new structure.
6348         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
6349         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
6350         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
6351         (tree_verify_flow_info): Verify that il.tree is not set for
6352         entry and exit block.
6353         (tree_split_block): Use set_bb_stmt_list.
6354
6355 2007-04-23  Mike Stump  <mrs@apple.com>
6356
6357         * config/i386/i386.c (ix86_tune_features
6358         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
6359         nocona and core2.
6360
6361 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6362
6363         * config/i386/i386.md (prefix_extra): New attribute.
6364         (length): Add prefix_extra.
6365
6366         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
6367         (sse2_movntv2di): Likewise.
6368         (sse2_cvtps2dq): Likewise.
6369         (sse2_cvtpd2pi): Likewise.
6370         (sse2_cvttpd2pi): Likewise.
6371         (*sse2_cvtpd2ps): Likewise.
6372         (*add<mode>3): Likewise.
6373         (sse2_ssadd<mode>3): Likewise.
6374         (sse2_usadd<mode>3): Likewise.
6375         (*sub<mode>3): Likewise.
6376         (sse2_sssub<mode>3): Likewise.
6377         (sse2_ussub<mode>3): Likewise.
6378         (*mulv8hi3): Likewise.
6379         (*smulv8hi3_highpart): Likewise.
6380         (*umulv8hi3_highpart): Likewise.
6381         (sse2_umulv2siv2di3): Likewise.
6382         (sse2_pmaddwd): Likewise.
6383         (ashr<mode>3): Likewise.
6384         (lshr<mode>3): Likewise.
6385         (ashl<mode>3): Likewise.
6386         (sse2_ashlti3): Likewise.
6387         (sse2_lshrti3): Likewise.
6388         (*umaxv16qi3): Likewise.
6389         (*smaxv8hi3): Likewise.
6390         (*uminv16qi3): Likewise.
6391         (*sminv8hi3): Likewise.
6392         (sse2_eq<mode>3): Likewise.
6393         (sse2_gt<mode>3): Likewise.
6394         (*and<mode>3): Likewise.
6395         (sse2_nand<mode>3): Likewise.
6396         (*ior<mode>3): Likewise.
6397         (*xor<mode>3): Likewise.
6398         (sse2_packsswb): Likewise.
6399         (sse2_packssdw): Likewise.
6400         (sse2_packuswb): Likewise.
6401         (sse2_punpckhbw): Likewise.
6402         (sse2_punpcklbw): Likewise.
6403         (sse2_punpckhwd): Likewise.
6404         (sse2_punpcklwd): Likewise.
6405         (sse2_punpckhdq): Likewise.
6406         (sse2_punpckldq): Likewise.
6407         (sse2_punpckhqdq): Likewise.
6408         (sse2_punpcklqdq): Likewise.
6409         (*sse2_pinsrw): Likewise.
6410         (*sse2_pextrw): Likewise.
6411         (sse2_pshufd_1): Likewise.
6412         (sse2_uavgv16qi3): Likewise.
6413         (sse2_uavgv8hi3): Likewise.
6414         (sse2_psadbw): Likewise.
6415         (sse2_pmovmskb): Likewise.
6416         (*sse2_maskmovdqu): Likewise.
6417         (*sse2_maskmovdqu_rex64): Likewise.
6418         (sse4a_extrqi): Likewise.
6419         (sse4a_extrq): Likewise.
6420         (sse3_lddqu): Set prefix_rep.
6421         (sse3_addsubv4sf3): Likewise.
6422         (sse3_haddv4sf3): Likewise.
6423         (sse3_hsubv4sf3): Likewise.
6424         (sse_cvtss2si): Likewise.
6425         (sse_cvtss2si_2): Likewise.
6426         (sse_cvtss2siq): Likewise.
6427         (sse_cvtss2siq_2): Likewise.
6428         (sse_cvttss2si): Likewise.
6429         (sse_cvttss2siq): Likewise.
6430         (sse2_cvttps2dq): Likewise.
6431         (sse3_movshdup): Likewise.
6432         (sse3_movsldup): Likewise.
6433         (sse2_cvtsd2si): Likewise.
6434         (sse2_cvtsd2si_2): Likewise.
6435         (sse2_cvtsd2siq): Likewise.
6436         (sse2_cvtsd2siq_2): Likewise.
6437         (sse2_cvttsd2si): Likewise.
6438         (sse2_cvttsd2siq): Likewise.
6439         (*sse2_cvtpd2dq): Likewise.
6440         (*sse2_cvttpd2dq): Likewise.
6441         (sse2_pshuflw_1): Likewise.
6442         (sse2_pshufhw_1): Likewise.
6443         (sse4a_insertqi): Likewise.
6444         (sse4a_insertq): Likewise.
6445         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
6446         (ssse3_phadddv4si3): Likewise.
6447         (ssse3_phaddswv8hi3): Likewise.
6448         (ssse3_phsubwv8hi3): Likewise.
6449         (ssse3_phsubdv4si3): Likewise.
6450         (ssse3_phsubswv8hi3): Likewise.
6451         (ssse3_pmaddubswv8hi3): Likewise.
6452         (ssse3_pmulhrswv8hi3): Likewise.
6453         (ssse3_pshufbv16qi3): Likewise.
6454         (ssse3_psign<mode>3): Likewise.
6455         (ssse3_palignrti): Likewise.
6456         (abs<mode>2): Likewise.
6457         (ssse3_phaddwv4hi3): Set prefix_extra.
6458         (ssse3_phadddv2si3): Likewise.
6459         (ssse3_phaddswv4hi3): Likewise.
6460         (ssse3_phsubwv4hi3): Likewise.
6461         (ssse3_phsubdv2si3): Likewise.
6462         (ssse3_phsubswv4hi3): Likewise.
6463         (ssse3_pmaddubswv4hi3): Likewise.
6464         (ssse3_pmulhrswv4hi3): Likewise.
6465         (ssse3_pshufbv8qi3): Likewise.
6466         (ssse3_psign<mode>3): Likewise.
6467         (ssse3_palignrdi): Likewise.
6468         (abs<mode>2): Likewise.
6469         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
6470         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
6471         (sse2_pmovmskb): Set mode to SI instead of V2DF.
6472
6473 2007-04-23  Nick Clifton  <nickc@redhat.com>
6474
6475         * params.def: Fix formatting of emacs local variables.
6476
6477 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6478
6479         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
6480         move if inter-unit move isn't allowed.
6481         Don't split moving the first element of V2DI to DI to inter-unit
6482         move if inter-unit move isn't allowed.
6483
6484 2007-04-23  Richard Guenther  <rguenther@suse.de>
6485
6486         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
6487         and CDI_POST_DOMINATORS separately.
6488
6489 2007-04-23  Nick Clifton  <nickc@redhat.com>
6490
6491         * c.opt (Wformat-contains-nul): Add warning attribute.
6492
6493 2007-04-23  Jan Hubicka  <jh@suse.cz>
6494
6495         * function.c (init_function_start): Don't init line number info.
6496         (expand_function_end): Update.
6497         (reset_block_changes, record_block_change, finalize_block_changes,
6498         check_block_change, free_block_changes): Kill.
6499         * function.h (reset_block_changes, record_block_change,
6500         finalize_block_changes, check_block_change, free_block_changes): Remove
6501         prototypes.
6502         (struct function): Remove ib_boundaries_block.
6503         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6504         Use curr_insn_locator to initialize locator.
6505         (emit_line_note): Remove.
6506         * cfgexpand.c (expand_gimple_cond_expr): Update.
6507         (construct_exit_block): Likewise.
6508         (tree_expand_cfg): Initialize/finalize locators.
6509         * expr.c (expand_expr_real): Update.
6510         * cfglayout.c (line_locators_locs, line_locators_lines,
6511         file_locators_locs, file_locators_files): Remove.
6512         (set_block_levels): Move to cfgexpand.c.
6513         (insn_locators_initialize): Remove.
6514         (pass_insn_locators_initialize): Remove.
6515         (locations_locators_locs, locations_locators_vals): New static vars.
6516         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6517         Likewise.
6518         (insn_locators_alloc, insn_locators_finalize,
6519         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6520         New functions.
6521         (locator_location): New.
6522         (locator_line, locator_file): Rewrite.
6523         * rtl.h (emit_line_note): Kill.
6524         (insn_locators_alloc, insn_locators_finalize,
6525         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6526         Declare.
6527         * tree-inline.c (initialize_cfun): Do not initialize
6528         ib_boundaries_block.
6529         * passes.c (pass_insn_locators_initialize): Remove.
6530
6531 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6532
6533         PR middle-end/31448
6534         * expr.c (reduce_to_bit_field_precision): Handle
6535         CONST_INT rtx's.
6536
6537 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
6538
6539         PR tree-optimization/24659
6540         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
6541         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
6542         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
6543         * genopinit.c (optabs): Rename vec_pack_mod_optab
6544         to vec_pack_trunc_optab.
6545         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
6546         early for scalar floating point operands for NOP_EXPR.
6547         (vectorizable_type_promotion): Ditto.
6548         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
6549         vec_pack_trunc_optab.
6550         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
6551
6552         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
6553         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
6554         Rename from VEC_PACK_MOD_EXPR.
6555         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
6556         * expr.c (expand_expr_real_1): Ditto.
6557         * tree-inline.c (estimate_num_insns_1): Ditto.
6558         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
6559
6560         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
6561         (vec_unpacks_lo_v4sf): Ditto.
6562         (vec_pack_trunc_v2df): Ditto.
6563         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
6564         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6565         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
6566
6567         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
6568         vec_pack_mod_v8hi.
6569         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6570
6571         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
6572         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
6573         packing of floating point operands.
6574         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
6575         represent unpacking of floating point operands.
6576         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
6577         [vec_unpacks_hi]: Ditto.
6578         [vec_unpacks_lo]: Ditto.
6579
6580 2007-04-22  Jan Hubicka  <jh@suse.cz>
6581
6582         * final.c (rest_of_handle_final): Call
6583         targetm.asm_out.constructor/targetm.asm_out.destructor
6584         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
6585         proper priority via decl_*_priority_insert.
6586         * c-common.c (c_expand_body): Likewise.
6587
6588 2007-04-22  Richard Guenther  <rguenther@suse.de>
6589
6590         PR tree-optimization/29789
6591         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
6592         (rewrite_reciprocal): New helper split out from
6593         determine_invariantness_stmt.
6594         (rewrite_bittest): Likewise.
6595         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
6596         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
6597         is not.
6598
6599 2007-04-22  Revital Eres  <eres@il.ibm.com>
6600
6601         * loop-unroll.c (var_to_expand): New field to support also
6602         insns of the form x = something + x.
6603         (analyze_insn_to_expand_var): Use it.
6604         (expand_var_during_unrolling): Likewise.
6605
6606 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6607
6608         * predict.c: Include pointer-set.h.
6609         (bb_predictions): New variable.
6610         (tree_predicted_by_p, tree_predict_edge,
6611         remove_predictions_associated_with_edge): Use bb_predictions map
6612         instead of bb->predictions.
6613         (clear_bb_predictions, assert_is_empty): New functions.
6614         (combine_predictions_for_bb): Use bb_predictions map.  Call
6615         clear_bb_predictions.
6616         (tree_estimate_probability): Create and free bb_predictions map.
6617         * Makefile.in (predict.o): Add pointer-set.h dependency.
6618         * basic-block.h (struct basic_block_def): Remove predictions
6619         field.
6620         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
6621
6622 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6623
6624         PR target/31480
6625         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
6626         is null.
6627
6628 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6629
6630         * timevar.c (timevar_print): Change reference of --disable-checking to
6631         --enable-checking=release.  Also warn if assert checking is disabled.
6632
6633 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6634
6635         PR C/30265
6636         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
6637         decl as addressable if the compound literal was marked as
6638         addressable.
6639         Mark the decl as a gimple register if it is a complex or
6640         vector decl and does not live in memory.
6641
6642 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6643
6644         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
6645         (GENERIC_NEXT): New function macro.
6646         (PHI_CHAIN): Use phi_node's new chain variable.
6647         (tree_phi_node): Change tree_common to tree_base
6648         and add the chain field.
6649         * tree-phinodes.c (make_phi_node): Don't set
6650         TREE_TYPE on the new node.
6651         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
6652         instead of checking GIMPLE_TUPLE_P in chain_next.
6653         * tree-vect-transform.c
6654         (get_initial_def_for_induction): Look at
6655         PHI_RESULT_TREE for the type of the phi node.
6656         (update_vuses_to_preheader): Use PHI_CHAIN
6657         instead of TREE_CHAIN on the phi node.
6658         * tree-ssa-structalias.c (compute_points_to_sets):
6659         Likewise.
6660         (ipa_pta_execute): Likewise.
6661
6662 2007-04-21  Richard Guenther  <rguenther@suse.de>
6663
6664         PR middle-end/31136
6665         * fold-const.c (fold_unary): Call fold_convert_const on the
6666         original tree.
6667
6668 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
6669
6670         * gcse.c (store_killed_in_insn): Handle PARALLELs.
6671         (store_killed_in_pat): New.
6672
6673 2007-04-20  Richard Henderson  <rth@redhat.com>
6674
6675         PR target/31628
6676         * config/i386/i386.c (type_has_variadic_args_p): Look for any
6677         TREE_LIST with a void_type_node value, not void_list_node exactly.
6678
6679 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
6680
6681         * doc/standards.texi: Re-arrange into language-specific
6682         subsections. Add a C++ section, documenting which standards we
6683         support.
6684
6685 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6686
6687         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
6688         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
6689
6690 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
6691
6692         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
6693         ecrti.o and crtbegin.o.
6694         (LIB_DEFAULT_SPEC): Include -lc.
6695         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
6696
6697 2007-04-20  Richard Henderson  <rth@redhat.com>
6698
6699         PR target/28623
6700         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
6701         argument; update all callers.
6702         (get_unaligned_offset): New.
6703         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
6704         get_unaligned_address, just pass on the address directly.
6705         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
6706         the subreg in the helper patterns.
6707         (unaligned_extendqidi_le): Use get_unaligned_offset.
6708         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
6709         (unaligned_extendhidi_be): Likewise.
6710         (unaligned_extendhidi): Tidy.
6711         * config/alpha/alpha-protos.h: Update.
6712
6713 2007-04-20  Richard Henderson  <rth@redhat.com>
6714
6715         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
6716         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
6717         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
6718         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6719         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6720         (CPP_SPEC): Don't include %(cpp_subtarget).
6721         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
6722         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6723         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
6724
6725 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
6726
6727         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
6728         for __builtin_ia32_cmpordss.
6729
6730         PR tree-optimization/31632
6731         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
6732         and arg1 for optimizations of comparison against min/max values.
6733         Fold arg0 to arg1's type for optimizations of comparison against
6734         min+1 and max-1 values.
6735
6736 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
6737
6738         * reload.c (combine_reloads): When trying to use a dying register,
6739         check whether it's uninitialized and don't use if so.
6740
6741 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
6742
6743         * fold-const.c: Remove prototypes for native_encode_expr and
6744         native_interpret_expr.
6745         (native_encode_expr): Make non-static.
6746         (native_interpret_expr): Likewise.
6747         * tree.h: Add prototypes for the above.
6748
6749 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6750
6751         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
6752         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
6753         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
6754         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
6755         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
6756         Add length attributes.
6757
6758 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
6759
6760         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
6761         not that it is 1.
6762
6763         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
6764         __STDC_WANT_DEC_FP__.
6765
6766 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6767
6768         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
6769         for long double compatibility.
6770         * configure: Regenerate.
6771
6772 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
6773
6774         PR rtl-optimization/29841
6775         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
6776         trap instructions.
6777         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
6778         that may cause control flow transfer from being moved.
6779
6780 2007-04-18  Jan Hubicka  <jh@suse.cz>
6781
6782         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
6783         types.
6784
6785 2007-04-18  Eric Christopher  <echristo@apple.com>
6786
6787         * config/rs6000/darwin.md (load_macho_picbase): Use link register
6788         only. Update operands.
6789         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
6790         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
6791         link register to pic register.
6792
6793 2007-04-18  Dirk Mueller  <dmueller@suse.de>
6794
6795         PR diagnostic/31227
6796         * tree-vrp.c (search_for_addr_array): New.
6797         (check_array_bounds): Suppress warning about
6798         address taken of array refs if its not de-referenced.
6799
6800 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6801
6802         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
6803         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
6804
6805         * tree-vectorizer.h (NITERS_KNOWN_P): New.
6806         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
6807         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
6808
6809         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
6810         dump print.
6811         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
6812         print message.
6813         (vect_analyze_scalar_cycles): Fix indentation.
6814         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
6815         (vect_mark_relevant): Include phis in relevance analysis.
6816
6817         * tree-vect-transform.c (vect_transform_loop): Add an assert.
6818
6819 2007-04-18  Anatoly Sokolov <aesok@post.ru>
6820
6821         * config/avr/avr.c (ptrreg_to_str): Replace error() with
6822         output_operand_lossage().
6823
6824 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6825
6826         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
6827         the unused code for reduction without adjust-in-epilog to simplify the
6828         function.
6829
6830 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
6831
6832         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
6833         (S390_TDC_NEGATIVE_ZERO): New constant.
6834         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
6835         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
6836         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
6837         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
6838         (S390_TDC_POSITIVE_INFINITY): New constant.
6839         (S390_TDC_NEGATIVE_INFINITY): New constant.
6840         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
6841         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
6842         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
6843         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
6844         (S390_TDC_INFINITY): New constant.
6845         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
6846         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
6847         optimization for UNSPEC_CCZ_TO_INT.
6848         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
6849         ("*ccz_to_int"): New insn.
6850         ("isinf<mode>2"): New insn.
6851         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
6852         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
6853         (UNSPEC_CCZ_TO_INT): New constant.
6854
6855 2007-04-18  Richard Guenther  <rguenther@suse.de>
6856
6857         PR tree-optimization/19431
6858         PR tree-optimization/21463
6859         * tree-pass.h (pass_phiprop): Declare.
6860         * passes.c (init_optimization_passes): New phiprop pass.
6861         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
6862         (phivn_valid_p): New helper function.
6863         (phiprop_insert_phi): Likewise.
6864         (propagate_with_phi): Likewise.
6865         (tree_ssa_phiprop): New propagator propagating loads
6866         through phi nodes if profitable.
6867
6868 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6869
6870         * tree-vect-analyze.c (process_use): New function.
6871         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
6872         Check phis in all bbs.
6873         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
6874         assert.
6875
6876 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6877
6878         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
6879         we use REG_EQUAL.
6880
6881 2007-04-17  Anatoly Sokolov <aesok@post.ru>
6882
6883         PR target/30483
6884         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
6885         error().
6886
6887 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
6888
6889         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
6890         on "0".
6891         (sse_vmmulv4sf3): Likewise.
6892         (sse2_vmaddv2df3): Likewise.
6893         (sse2_vmmulv2df3): Likewise.
6894
6895 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
6896
6897         PR rtl-optimization/31360
6898         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
6899         (target_reg_cost): New.
6900         (init_set_costs): Initialize target_reg_cost.  Add comments
6901         regarding the rationale of the costs.
6902         (global_cost_for_size): Renamed to...
6903         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
6904         of register pressure.
6905         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
6906         estimate_reg_pressure_cost.  Add number of ivs.
6907         (determine_set_costs): Dump target_reg_cost.
6908         * loop-invariant.c (gain_for_invariant):  Use
6909         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
6910         (best_gain_for_invariant, find_invariants_to_move): Remove
6911         n_inv_uses.
6912         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
6913         (target_reg_cost): Declare.
6914         (global_cost_for_size): Declaration removed.
6915         (estimate_reg_pressure_cost): Declare.
6916
6917 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
6918
6919         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
6920         regnos into even/odd register pairs.
6921         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
6922         TDmode similar to the other floating point modes.
6923         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
6924         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
6925         define_expand's.
6926         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
6927         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
6928         (movdd_hardfloat64): Use TARGET_MFPGPR.
6929
6930 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
6931
6932         * reload1.c (delete_output_reload): Don't count output in n_inherited.
6933
6934         Revert
6935         2005-01-05  Richard Henderson  <rth@redhat.com>
6936         PR rtl-opt/10692
6937         * reload1.c (do_input_reload): Restrict the optimization deleteing
6938         a previous output reload to RELOAD_FOR_INPUT.
6939
6940 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
6941
6942         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
6943         induc_vec_info_type.
6944         (vectorizable_induction): New function declaration.
6945         * tree-vect-transform.c (get_initial_def_for_induction): No need to
6946         check if already vectorized.  Find first place in BB where new stmts
6947         can be inserted.  Takes only one argument.
6948         (vectorizable_induction): New function.
6949         (vect_transform_stmt): Add case for induc_vec_info_type to call
6950         vectorizable_induction.
6951         (vect_transform_loop): Consider phis for vectorization.
6952         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
6953         condition.
6954         (analyze_operations): Call vectorizable_induction when analyzing phis.
6955         Fix comment.
6956         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
6957         (vect_mark_relevant): Include phis in relevance analysis.
6958         (vect_mark_stmts_to_be_vectorize): Likewise.
6959         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
6960
6961 2007-04-16  Lawrence Crowl  <crowl@google.com>
6962
6963         * doc/invoke.texi (Debugging Options): Add documentation for the
6964         -femit-struct-debug options -femit-struct-debug-baseonly,
6965         -femit-struct-debug-reduced, and
6966         -femit-struct-debug-detailed[=...].
6967
6968         * c-opts.c (c_common_handle_option): Add
6969         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
6970         and OPT_femit_struct_debug_detailed_.
6971         * c.opt: Add specifications for
6972         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
6973         and -femit-struct-debug-detailed[=...].
6974         * opts.c (set_struct_debug_option): Parse the
6975         -femit-struct-debug-... options.
6976         * opts.c (matches_main_base, main_input_basename,
6977         main_input_baselength, base_of_path, matches_main_base): Add
6978         variables and functions to compare header base name to compilation
6979         unit base name.
6980         * opts.c (should_emit_struct_debug): Add to determine to emit a
6981         structure based on the option.
6982         (dump_struct_debug) Also disabled function to debug this
6983         function.
6984         * opts.c (handle_options): Save the base name of the
6985         compilation unit.
6986
6987         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
6988         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
6989         This hook indicates if a type is generic.  Set it by default
6990         to "never generic".
6991         * langhooks.h (struct lang_hooks_for_types): Add a new hook
6992         to determine if a struct type is generic or not.
6993         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
6994         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
6995         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
6996         with live C++ hook.
6997
6998         * flags.h (enum debug_info_usage): Add an enumeration to describe
6999         a program's use of a structure type.
7000         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
7001         to indicate the program's usage of the type.  Filter structs based
7002         on the -femit-struct-debug-... specification.
7003         (gen_type_die): Split into two routines, gen_type_die and
7004         gen_type_die_with_usage.  gen_type_die is now a wrapper
7005         that assumes direct usage.
7006         (gen_type_die_with_usage): Replace calls to gen_type_die
7007         with gen_type_die_with_usage adding the program usage of
7008         the referenced type.
7009         (dwarf2out_imported_module_or_decl): Suppress struct debug
7010         information using should_emit_struct_debug when appropriate.
7011
7012 2007-04-16  Ian Lance Taylor  <iant@google.com>
7013
7014         PR tree-optimization/31522
7015         * tree-vrp.c (vr_phi_edge_counts): New static variable.
7016         (vrp_initialize): Allocate vr_phi_edge_counts.
7017         (vrp_visit_phi_node): Don't push to infinity if we saw a new
7018         executable edge.  Drop test for all constants.
7019         (vrp_finalize): Free vrp_phi_edge_counts.
7020
7021         * doc/cpp.texi (Common Predefined Macros): Clarify description of
7022         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
7023
7024         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
7025         predecessors at head rather than tail.
7026
7027 2007-04-16  Matthias Klose  <doko@debian.org>
7028
7029         * config/alpha/linux.h (CPP_SPEC): Define.
7030         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
7031
7032 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
7033
7034         * function.h: Remove sequence_stack extern declaration.
7035
7036 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
7037
7038         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
7039         TARGET_FIDOA.
7040         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
7041         defined.
7042
7043 2007-04-16  Anatoly Sokolov <aesok@post.ru>
7044
7045         * config/avr/avr.c (avr_arch_types): Rearranging  array.
7046         (enum avr_arch): Add.
7047         (avr_mcu_types): Use avr_arch enumeration constants instead of
7048         numbers.
7049         * config/avr/avr.h (LINK_SPEC): Simplify.
7050
7051 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
7052
7053         * config/m68k/m68k.c (m68k_libcall_value,
7054         m68k_function_value): Use macros for register names more.
7055
7056         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
7057         instead.
7058         (M68K_REGNAME): Use A6_REG.
7059         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
7060
7061 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7062
7063         PR middle-end/28071
7064         * sched-int.h (struct deps): Split field 'pending_lists_length' into
7065         'pending_read_list_length' and 'pending_write_list_length'.  Update
7066         comment.
7067         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
7068         to handle two length counters instead of one.  Update all uses.
7069         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
7070         two length counters instead of one.
7071         * sched-rgn.c (propagate_deps): Update to handle two length counters
7072         instead of one.
7073
7074 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
7075
7076         PR target/31582
7077         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
7078         copy of source, pass it to ix86_expand_vector_set and return
7079         it as target.
7080
7081 2007-04-16  David Ung  <davidu@mips.com>
7082             Joseph Myers  <joseph@codesourcery.com>
7083
7084         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
7085         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
7086         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
7087         Add 74K processor information.
7088         * config/mips/mips.md: Include 74k.md.
7089         (cpu): Add 74kc,74kf,74kx.
7090         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
7091         * config/mips/74k.md: New.
7092         * doc/invoke.texi (MIPS Options): Document 74K support.
7093
7094 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
7095
7096         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
7097         vectorizable_* functions.
7098         * tree-vect-transform.c (vectorizable_call): Add check for
7099         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
7100         (vectorizable_store): likewise.
7101         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
7102         Add comments.
7103         (vectorizable_operation, vectorizable_type_demotion): Likewise.
7104         (vectorizable_type_promotion, vectorizable_load): Likewise.
7105         (vectorizable_live_operation, vectorizable_condition): Likewise.
7106         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
7107         STMT_VINFO_LIVE_P.
7108         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
7109
7110 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7111
7112         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
7113         register numbers more.
7114         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
7115         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
7116         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
7117         FUNCTION_VALUE_REGNO_P): Likewise.
7118         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
7119         STATIC_CHAIN_REGNUM): Likewise.
7120         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
7121         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
7122         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
7123         * config/m68k/m68k.md (FP_REG): New.
7124
7125 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7126
7127         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
7128         alignment on fido.
7129
7130 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7131
7132         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
7133         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
7134         comment typos.
7135
7136 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7137
7138         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
7139         cold loops.
7140
7141 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7142
7143         PR c/31520
7144         * c-decl.c (finish_decl): Grab the type of the decl after the call
7145         to store_init_value.
7146
7147 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
7148
7149         * common.opt (fforward-propagate): Fix "Optimization" annotation.
7150
7151 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
7152
7153         PR c++/25874
7154         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
7155         post dominators and cleanup cfg before returning.
7156
7157 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7158
7159         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
7160         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
7161
7162 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
7163
7164         * config.gcc: Recognize fido.
7165         * config/m68k/m68k-devices.def (fidoa): New.
7166         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
7167         __mfido__.
7168         (FL_FIDOA, TARGET_FIDOA): New.
7169         * config/m68k/m68k.opt (mfidoa): New.
7170
7171 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7172
7173         PR middle-end/31322
7174         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
7175         when a personality function is used.
7176
7177 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
7178
7179         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
7180
7181 2007-04-13  Mike Stump  <mrs@apple.com>
7182
7183         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
7184         we can...
7185         * config/darwin.opt (fapple-kext): Make C++ only.
7186         * config/darwin.c (darwin_override_options): Remove code to ensure
7187         -fapple-kext is given for C++ only.
7188
7189 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
7190
7191         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
7192         * config/mips/mips.c (override_options): Call
7193         SUBTARGET_OVERRIDE_OPTIONS, if defined.
7194
7195 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
7196
7197         * config/i386/i386.opt (msvr3-shlib): Removed.
7198
7199         * doc/invoke.texi: Remove -msvr3-shlib.
7200
7201 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
7202
7203         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
7204         with "popcnt" instruction.
7205
7206 2007-04-13  Richard Guenther  <rguenther@suse.de>
7207
7208         PR tree-optimization/21258
7209         * tree-vrp.c (compare_case_labels): New helper.
7210         (find_switch_asserts): New function.
7211         (find_assert_locations): Call it for SWITCH_EXPRs.
7212
7213 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
7214
7215         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
7216         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
7217         check is now implied in X87_FLOAT_MODE_P.
7218         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7219         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7220         (fix_trunc<mode>_i386_fisttp): Ditto.
7221         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7222         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7223         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7224         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7225         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7226         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7227         (unnamed_splitters): Ditto.
7228         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
7229         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
7230         FIRST_SSE_REG for local functions when SSE math is enabled or
7231         for functions with sseregparm attribute.
7232         (standard_80387_constant_p): Return -1 if mode is not
7233         X87_FLOAT_MODE_P.
7234         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
7235         (ix86_expand_compare): Ditto.
7236         (ix86_expand_carry_flag_compare): Ditto.
7237         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
7238         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
7239         DECIMAL_FLOAT_MODE_P.
7240         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
7241         of SCALAR_FLOAT_MODE_P.
7242         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
7243         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
7244         checks before FLOAT_MODE_P.
7245         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
7246         before FLOAT_MODE_P.
7247         [DIV]: Ditto.
7248         [NEG]: Ditto.
7249         [ABS]: Ditto.
7250         [SQRT]: Ditto.
7251         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
7252
7253 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
7254             Charles Wilson  <libtool@cwilson.fastmail.fm>
7255
7256         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
7257         (libgcc.mvars): Don't depend on them.
7258         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
7259         * exec-tool.in: New.
7260
7261 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
7262
7263         * doc/invoke.text (--help): Document --help=common.
7264
7265 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
7266
7267         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
7268
7269 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7270
7271         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
7272         * genemit.c (main): Emit #include "integrate.h".
7273         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
7274         (LOADGP_RTP): New mips_loadgp_style.
7275         * config/mips/mips.h: Include config/vxworks-dummy.h.
7276         (TARGET_RTP_PIC): New macro.
7277         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
7278         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
7279         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
7280         for TARGET_RTP_PIC.
7281         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
7282         -mvxworks-pic when using -mrtp and a PIC option.
7283         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
7284         for RTP PIC.
7285         (mips_symbolic_constant_p, mips_symbolic_address_p)
7286         (mips_symbol_insns): Handle SYMBOL_HALF.
7287         (override_options): Warn about -G and -mrtp being used together.
7288         Initialize mips_lo_relocs[SYMBOL_HALF].
7289         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
7290         (mips_emit_loadgp): Handle LOADGP_RTP.
7291         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
7292         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
7293         (tablejump): Handle function-relative case table entries if
7294         TARGET_RTP_PIC.
7295         * config/mips/predicates.md (symbol_ref_operand): New predicate.
7296
7297 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7298
7299         * config/mips/mips.md (load_call<mode>): Allow any general register.
7300         destination.
7301         (sibcall_value_internal, sibcall_value_multiple_internal)
7302         (call_value_internal, call_value_split, call_value_multiple_internal)
7303         (call_value_multiple_split): Remove constraints from operand 0.
7304
7305 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7306
7307         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
7308         rather than loadgp_noshared.
7309         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
7310         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
7311         gen_loadgp.
7312         * config/mips/mips.md (loadgp): Rename to...
7313         (loadgp_newabi): ...this.
7314         (loadgp_noshared): Rename to...
7315         (loadgp_absolute): ...this.
7316
7317 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7318
7319         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
7320         false for locally-binding symbols.
7321         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
7322
7323 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7324
7325         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
7326         (SYMBOL_GOT_PAGE_OFST): ...this.
7327         (SYMBOL_GOT_GLOBAL): Rename to...
7328         (SYMBOL_GOT_DISP): ...this.
7329         (SYMBOL_GOTOFF_GLOBAL): Rename to...
7330         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
7331         * config/mips/mips.c (mips_global_symbol_p): New function.
7332         (mips_symbol_binds_local_p): Likewise.
7333         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
7334         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
7335         and mips_symbol_binds_local_p.
7336         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
7337         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
7338         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
7339         SYMBOL_GOTOFF_DISP.
7340         (mips_ok_for_lazy_binding_p): New function.
7341         (mips_load_call_address, mips_expand_call): Use it.
7342         (mips_dangerous_for_la25_p): Likewise.
7343         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
7344         (*got_disp<mode>): Use got_disp_operand instead of
7345         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
7346         SYMBOL_GOTOFF_GLOBAL.
7347         (*got_page<mode>): Use got_page_ofst_operand instead of
7348         local_got_operand.
7349         * config/mips/predicates.md (const_call_insn_operand): Use
7350         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
7351         (global_got_operand): Rename to...
7352         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
7353         SYMBOL_GOT_GLOBAL.
7354         (local_got_operand): Rename to...
7355         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
7356         of SYMBOL_GOT_LOCAL.
7357
7358 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7359
7360         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
7361         TARGET_CALL_CLOBBERED_GP.
7362         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7363         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
7364         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
7365         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
7366         of TARGET_ABICALLS && !TARGET_NEWABI.
7367         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7368         * config/mips/mips.c (mips_load_call_address): Check
7369         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7370         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7371         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7372         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
7373         TARGET_ABICALLS && TARGET_NEWABI.
7374         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
7375         TARGET_ABICALLS.
7376         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
7377         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
7378         TARGET_ABICALLS && TARGET_NEWABI.
7379         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
7380         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
7381         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
7382         whether indirect calls must use $25.
7383         (mips_extra_live_on_entry): Check TARGET_GOT instead of
7384         TARGET_ABICALLS.
7385         * config/mips/mips.md (jal_macro): Check flag_pic and
7386         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
7387         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
7388         instead of TARGET_ABICALLS.
7389         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
7390         TARGET_ABICALLS && TARGET_OLDABI.
7391         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7392         (sibcall): In the comment above the define_insn, mention
7393         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
7394         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
7395         instead of TARGET_ABICALLS.
7396
7397 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
7398
7399         * doc/md.texi (Blackfin family constraints): Document PA and PB.
7400         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
7401         (MACFLAGS_MATCH_P): New macro.
7402         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
7403         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
7404         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
7405         the other MACFLAG constants.
7406         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
7407         (flag_machi): Tighten constraints.  Renumber some of the operands.
7408         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
7409         output template.
7410         (flag_machi_parts_acconly): New pattern.
7411         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
7412         used.
7413         (flag_macinit1hi): Tighten constraints.
7414         (flag_mul_macv2hi_parts_acconly): New pattern.
7415
7416         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
7417         Use a more efficient implementation.
7418         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
7419         inline sequences when not optimizing for size.
7420
7421         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
7422         movhi_high2low): Delete, merge functionality into...
7423         (packv2hi): ... this pattern.
7424
7425         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
7426         * config/bfin/bfin.opt (msim): New option.
7427         (mcpu=): New option.
7428         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
7429         (bfin_cpu_t): Typedef of enum bfin_cpu.
7430         (bfin_cpu_type): New declaration.
7431         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
7432         -msim and -mcpu= options.
7433         (LIB_SPEC): Likewise.
7434         * config/bfin/bfin.c (bfin_cpu_type): Define.
7435         (bfin_handle_option): Handle -mcpu= option.
7436         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
7437         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
7438         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
7439
7440 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7441
7442         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
7443         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
7444         (powerpc-wrs-vxworksae): Use ${tm_file}.
7445         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
7446         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
7447         * config/i386/vx-common.h: New file.
7448
7449 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7450
7451         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
7452         of crt0.o%s.
7453
7454 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
7455
7456         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
7457         ldxtr.
7458
7459 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
7460
7461         PR c++/31078
7462         PR c++/31103
7463         * c-common.c (c_build_qualified_type): Set canonical type
7464         appropriately.
7465
7466 2007-04-12  Richard Guenther  <rguenther@suse.de>
7467
7468         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
7469         lower bound and element size if lower bound is not zero
7470         or either of the ARRAY_REF operands is set.
7471
7472 2007-04-12  Richard Guenther  <rguenther@suse.de>
7473
7474         PR tree-optimization/24689
7475         PR tree-optimization/31307
7476         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
7477         indices by value.
7478         * gimplify.c (canonicalize_addr_expr): To be consistent with
7479         gimplify_compound_lval only set operands two and three of
7480         ARRAY_REFs if they are not gimple_min_invariant.  This makes
7481         it never at this place.
7482         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7483
7484 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7485
7486         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
7487         null before emitting a .nsubspa directive.
7488
7489 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7490
7491         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
7492         need_to_partition_p if there are no memory statements in the
7493         function.
7494
7495 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7496
7497         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
7498         (gcd_of_steps_may_divide_p): New function.
7499         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
7500
7501 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7502
7503         * reload.c (find_reloads_toplev, find_reloads_address,
7504         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
7505         not a pointer equality test, to decide if we need to call
7506         push_reg_equiv_alt_mem.
7507
7508 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
7509
7510         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
7511         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
7512         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
7513
7514 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7515
7516         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
7517         vector to be positive.
7518
7519 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7520
7521         PR 30735
7522         PR 31090
7523         * doc/invoke.texi: Document --params max-aliased-vops and
7524         avg-aliased-vops.
7525         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
7526         debug_memory_partitions): Move to tree-flow.h
7527         * params.h (AVG_ALIASED_VOPS): Define.
7528         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
7529         users.
7530         (mp_info_t): Likewise.
7531         (get_mem_sym_stats_for): New.
7532         (set_memory_partition): Move from tree-flow-inline.h.
7533         (mark_non_addressable): Only clear the set of symbols for the
7534         partition if it exists.
7535         (dump_memory_partitions): Move from tree-ssa-operands.c
7536         (debug_memory_partitions): Likewise.
7537         (need_to_partition_p): New.
7538         (dump_mem_ref_stats): New.
7539         (debug_mem_ref_stats): New.
7540         (dump_mem_sym_stats): New.
7541         (debug_mem_sym_stats): New.
7542         (update_mem_sym_stats_from_stmt): New.
7543         (compare_mp_info_entries): New.
7544         (mp_info_cmp): Call it.
7545         (sort_mp_info): Change argument to a list of mem_sym_stats_t
7546         objects.
7547         (get_mpt_for): Move from tree-ssa-operands.c.
7548         (find_partition_for): New.
7549         (create_partition_for): Remove.
7550         (estimate_vop_reduction): New.
7551         (update_reference_counts): New.
7552         (build_mp_info): New.
7553         (compute_memory_partitions): Refactor.
7554         Document new heuristic.
7555         Call build_mp_info, update_reference_counts,
7556         find_partition_for and estimate_vop_reduction.
7557         (compute_may_aliases): Populate virtual operands before
7558         calling debugging dumps.
7559         (delete_mem_sym_stats): New.
7560         (delete_mem_ref_stats): New.
7561         (init_mem_ref_stats): New.
7562         (init_alias_info): Call it.
7563         (maybe_create_global_var): Remove alias_info argument.
7564         Get number of call sites and number of pure/const call sites
7565         from gimple_mem_ref_stats().
7566         (dump_alias_info): Call dump_memory_partitions first.
7567         (dump_points_to_info_for): Show how many times a pointer has
7568         been dereferenced.
7569         * opts.c (decode_options): For -O2 set --param
7570         max-aliased-vops to 500.
7571         For -O3 set --param max-aliased-vops to 1000 and --param
7572         avg-aliased-vops to 3.
7573         * fortran/options.c (gfc_init_options): Remove assignment to
7574         MAX_ALIASED_VOPS.
7575         * tree-flow-inline.h (gimple_mem_ref_stats): New.
7576         * tree-dfa.c (dump_variable): Dump memory reference
7577         statistics.
7578         Dump NO_ALIAS* settings.
7579         (referenced_var_lookup): Tidy.
7580         (mem_sym_stats): New.
7581         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
7582         and ORIG are different SSA names for a memory partition.
7583         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
7584         * tree-flow.h (struct mem_sym_stats_d): Define.
7585         (mem_sym_stats_t): Define.
7586         (struct mem_ref_stats_d): Define.
7587         (struct gimple_df): Add field mem_ref_stats.
7588         (enum noalias_state): Define.
7589         (struct var_ann_d): Add bitfield noalias_state.
7590         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
7591         debug_mem_ref_stats, debug_memory_partitions,
7592         debug_mem_sym_stats): Declare.
7593         * tree-ssa-structalias.c (update_alias_info): Update call
7594         sites, pure/const call sites and asm sites in structure
7595         returned by gimple_mem_ref_stats.
7596         Remove local variable IS_POTENTIAL_DEREF.
7597         Increase NUM_DEREFS if the memory expression is a potential
7598         dereference.
7599         Call update_mem_sym_stats_from_stmt.
7600         If the memory references memory, call
7601         update_mem_sym_stats_from_stmt for all the direct memory
7602         symbol references found.
7603         (intra_create_variable_infos): Set noalias_state field for
7604         pointer arguments according to the value of
7605         flag_argument_noalias.
7606         * tree-ssa-structalias.h (struct alias_info): Remove fields
7607         num_calls_found and num_pure_const_calls_found.
7608         (update_mem_sym_stats_from_stmt): Declare.
7609         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
7610         Set default value to 100.
7611         (PARAM_AVG_ALIASED_VOPS): Define.
7612
7613 2007-04-11  Richard Guenther  <rguenther@suse.de>
7614
7615         PR middle-end/31530
7616         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
7617         a * -b + c as c - a * b if we honor sign dependent rounding.
7618
7619 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7620
7621         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
7622         bfin_expand_strmov.
7623         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
7624         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
7625         variables.
7626         (initialize_trampoline): Don't use old-style function definition.
7627         (bfin_secondary_reload): Mark IN_P argument as unused.
7628
7629 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
7630
7631         PR tree-optimization/31343
7632         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
7633         (build_polynomial_chrec): Return a scalar when the evolution is zero.
7634         * testsuite/gcc.dg/vect/pr31343.c: New.
7635
7636 2007-04-10  Eric Christopher  <echristo@apple.com>
7637
7638         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
7639         * config/i386/i386.md (*cmpfp0): Use.
7640         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7641         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7642         (fix_trunc<mode>_i386_fisttp): Ditto.
7643         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7644         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7645         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7646         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7647         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7648         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7649         (unnamed_splitters): Ditto.
7650         * config/i386/i386.c (output_fix_trunc): Assert that
7651         we're not being passed a TFmode operand.
7652
7653 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
7654
7655         PR tree-optimization/31526
7656         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
7657         n_basic_blocks to find newly added blocks.
7658
7659 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
7660
7661         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
7662         alternative.
7663         (fix_trunc<mode>si_sse): Ditto.
7664         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
7665         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
7666         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
7667         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
7668         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
7669         expander using SSEMODEF mode macro.
7670         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
7671         expander using SSEMODEF mode macro.
7672         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
7673         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
7674         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
7675         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
7676         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
7677         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
7678         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
7679         Macroize insn using X87MODEF mode macro.
7680
7681 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7682
7683         * config/i386/sse.md (sse2_pinsrw): Removed.
7684         (sse2_pextrw): Renamed to ...
7685         (*sse2_pextrw): This.
7686
7687 2007-04-09  Jan Hubicka  <jh@suse.cz>
7688
7689         PR target/27869
7690         * config/i386/sse.md
7691         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
7692         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
7693         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
7694         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
7695
7696 2007-04-09  Jan Hubicka  <jh@suse.cz>
7697
7698         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
7699         multiple fields of union.
7700
7701 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
7702
7703         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
7704         (create_preheaders): Check that loops are available.
7705         (fix_loop_structure): Clean up, improve comments.
7706         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
7707         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
7708         state flags.
7709         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
7710         * predict.c (tree_estimate_probability): Do not call
7711         calculate_dominance_info.  Call create_preheaders.
7712         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
7713         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
7714         flags.
7715         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
7716         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
7717         * tree-cfg.c (tree_split_edge): Make an assert more precise.
7718         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
7719         arguments.
7720
7721 2007-04-08  Jan Hubicka  <jh@suse.cz>
7722
7723         * tree.h (maybe_fold_offset_to_component_ref): Declare.
7724         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
7725         * fold-const.c (fold_unary): Use it.
7726
7727 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7728
7729         * varasm.c (assemble_variable): Remove call to
7730         lang_hooks.decls.prepare_assemble_variable.
7731         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
7732         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
7733         * langhooks.h (lang_hooks_for_decls): Remove
7734         prepare_assemble_variable.
7735
7736 2007-04-08  Mike Stump  <mrs@apple.com>
7737
7738         * config/i386/i386.c: Use inc/dec on Core2.
7739
7740 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
7741
7742         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
7743         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7744         lhd_tree_inlining_end_inlining): Remove.
7745         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
7746         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
7747         end_inlining hooks.
7748         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
7749         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7750         lhd_tree_inlining_end_inlining): Remove prototypes.
7751         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
7752         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
7753         LANG_HOOKS_TREE_INLINING_START_INLINING,
7754         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
7755
7756         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
7757         not set it.
7758
7759 2007-04-08  Anatoly Sokolov <aesok@post.ru>
7760
7761         PR target/29932
7762         * config/avr/predicates.md (io_address_operand): Delete predicate.
7763         (low_io_address_operand): Don't use 'mode' argument.
7764         (higth_io_address_operand): Rename ...
7765         (high_io_address_operand): ... to this. Don't use 'mode' argument.
7766         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
7767         for above change.
7768
7769 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
7770
7771         Revert change removing staticp.
7772
7773 2007-04-07  Anatoly Sokolov <aesok@post.ru>
7774
7775         PR target/30289
7776         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
7777         earlyclobber.
7778
7779 2007-04-07  Bruce Korb  <bkorb@gnu.org>
7780
7781         * c.opt: Add -Wformat-contains-nul.
7782         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
7783           -Wformat setting.
7784         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
7785         the NUL byte warning.
7786
7787 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
7788
7789         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
7790
7791 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7792
7793         * tree.c (staticp): No longer use staticp langhook.
7794         * langhooks.c (lhd_staticp): Removed.
7795         * langhooks.h (struct lang_hooks): Remove staticp.
7796         * c-common.c (c_staticp): Remove.
7797         * c-common.h (c_staticp): Ditto.
7798         * langhooks-defs.h (lhd_staticp): Ditto.
7799         (LHD_HOOKS_STATICP): Ditto
7800         * tree.h (gcc_assert_lowered): New macro.
7801
7802 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
7803
7804         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
7805         argument "reliable".
7806         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
7807         Add argument "reliable".  Propagate it through calls.
7808         (infer_loop_bounds_from_undefined):  Derive number of iterations
7809         estimates from references in blocks that do not dominate loop latch.
7810         (gcov_type_to_double_int): New function.
7811         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
7812         and expected_loop_iterations_unbounded.
7813         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
7814         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
7815         * tree-data-ref.c (estimated_loop_iterations): Export.
7816         (get_references_in_stmt): Fix -- do not return addresses of local
7817         objects.
7818         * cfgloop.h (expected_loop_iterations_unbounded,
7819         estimated_loop_iterations): Declare.
7820
7821 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
7822
7823         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7824
7825 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7826
7827         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
7828         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
7829         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
7830         Use output_387_reg_move().
7831         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
7832         expander using X87MODEF12 mode macro.
7833         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
7834         choosing register preferences.  Use output_387_reg_move().
7835         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
7836         instead of "x".  Use output_387_reg_move().
7837         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
7838         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
7839         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
7840         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
7841         Use output_387_reg_move().
7842         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
7843         mode macro.
7844         (*truncxf?f_i387 splitter): Ditto.
7845
7846 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7847
7848         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
7849         LANG_HOOKS_SAFE_FROM_P.
7850         * expr.c (safe_from_p): Remove langhook call.
7851         * langhooks.h (lang_hooks): Remove safe_from_p.
7852         (lhd_safe_from_p): Remove prototype.
7853         * langhooks.c (lhd_safe_from_p): Remove.
7854
7855 2007-04-06  Jan Hubicka  <jh@suse.cz>
7856
7857         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
7858         functions.
7859
7860 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7861
7862         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
7863         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
7864         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
7865         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
7866         alternative.
7867         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
7868         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
7869
7870 2007-04-05  Richard Henderson  <rth@redhat.com>
7871
7872         * config/alpha/alpha.c (print_operand) [+]: Remove.
7873         (alpha_end_function): Print nop if call at end of function.
7874         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
7875         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
7876         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
7877         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
7878         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
7879         the call pattern. Update peepholes to match.
7880
7881 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
7882
7883         * doc/extend.texi (Other Builtins): Add decimal float variants
7884         of signbit.
7885         * builtins.def: Ditto.
7886         * builtins.c (expand_builtin): Ditto.
7887
7888 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
7889             H.J. Lu  <hongjiu.lu@intel.com>
7890
7891         PR target/31478
7892         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
7893         of V8HImode when calling ix86_binary_operator_ok.
7894         (sse2_pmaddwd): Call ix86_binary_operator_ok.
7895         (sdot_prodv8hi): Operands 1 and 2 must be register.
7896
7897 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7898
7899         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
7900         initialize align to silence bogus warning.
7901
7902 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7903
7904         PR middle-end/22156
7905         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
7906         all_no_warning.
7907         (struct sra_walk_fns): Remove use_all parameter from use.
7908         (sra_hash_tree): Handle BIT_FIELD_REFs.
7909         (sra_elt_hash): Don't hash bitfld blocks.
7910         (sra_elt_eq): Skip them in parent compares as well.  Handle
7911         BIT_FIELD_REFs.
7912         (sra_walk_expr): Don't maintain or pass down use_all_p.
7913         (scan_use): Remove use_all parameter.
7914         (scalarize_use): Likewise.  Re-expand assignment to
7915         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
7916         output, and re-scalarize after output.  Don't mark anything
7917         for no warning.
7918         (scalarize_ldst): Adjust.
7919         (scalarize_walk_gimple_modify_statement): Likewise.
7920         (build_element_name_1): Handle BIT_FIELD_REFs.
7921         (instantiate_element): Don't warn for any element whose parent
7922         is used as a whole.
7923         (instantiate_missing_elements_1): Return the sra_elt.
7924         (canon_type_for_field): New.
7925         (try_instantiate_multiple_fields): New.
7926         (instantiate_missing_elemnts): Use them.
7927         (mark_no_warning): Removed.
7928         (generate_one_element_ref): Handle BIT_FIELD_REFs.
7929         (REPLDUP, sra_build_elt_assignment): New.
7930         (generate_copy_inout): Use them.
7931         (generate_element_copy): Likewise.  Handle bitfld differences.
7932         (generate_element_zero): Don't recurse for blocks.  Use
7933         sra_build_elt_assignment.
7934         (generate_one_element_int): Take elt instead of var.  Use
7935         sra_build_elt_assignment.
7936         (generate_element_init_1): Adjust.
7937         (scalarize_use, scalarize_copy): Use REPLDUP.
7938         (scalarize_ldst): Move assert before dereference.
7939         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
7940
7941 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7942
7943         * regmove.c: Fix unused variable warnings due to previous commit.
7944
7945 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7946
7947         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
7948         (regmove_bb_head): Remove.
7949         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
7950         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
7951         problems with fixup_match_1.
7952         Don't initialize/free regmove_bb_head.
7953
7954         (reg_is_remote_constant_p): If an insn is in the same basic block
7955         but not before INSN, consider it remote, too.
7956
7957 2007-04-05  Anatoly Sokolov <aesok@post.ru>
7958
7959         PR target/25448
7960         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
7961         DECL_ASSEMBLER_NAME, not the DECL_NAME.
7962
7963 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
7964
7965         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
7966         (CONDITIONAL_REGISTER_USAGE): Likewise.
7967
7968 2007-04-04  Richard Henderson  <rth@redhat.com>
7969
7970         * config/alpha/lib1funcs.asm: Remove unused file.
7971
7972 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7973
7974         PR other/31356
7975         * opts.c (print_specific_help): Fix --help=<language>
7976         header line.
7977         (common_handle_option): Support --help=common.
7978
7979 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7980
7981         PR other/31353
7982         * gcc.c (main): Do not run the linker if
7983         print_subprocess_help indicates that it shouldn't be
7984         run.
7985
7986 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7987
7988         PR doc/31355
7989         * doc/invoke.texi (--help=): Document <languages> value, fix
7990         formatting in tables of values.
7991
7992 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
7993
7994         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
7995         dllimport attribute of virtual methods.
7996
7997 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
7998
7999         * config/score/crti.asm: Change _bss_start to __bss_start.
8000         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
8001         (OUTGOING_REG_PARM_STACK_SPACE) update.
8002         * config/score/score.opt: add options to make backend support
8003         score5, score5u, score7 and score7d.
8004         * config/score/score.md: Likewise.
8005         * config/score/misc.md: Likewise.
8006         * config/score/mac.md: Likewise.
8007         * doc/invoke.texi: Likewise.
8008         * doc/md.texi: update constraints define.
8009
8010 2007-04-03  Richard Henderson  <rth@redhat.com>
8011
8012         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
8013         an appropriate type, use the mode instead.
8014
8015 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
8016
8017         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
8018         Set the default --with-arch setting to mips2.
8019         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
8020         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
8021         (MULTILIB_OSDIRNAMES): Delete.
8022         (MULTILIB_DIRNAMES): Define.
8023         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
8024         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
8025         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
8026         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
8027         VXWORKS_OS_CPP_BUILTINS.
8028         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
8029         (MIPS_DEBUGGING_INFO): Undefine.
8030         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
8031
8032 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
8033
8034         PR middle-end/30704
8035         * fold-const.c (native_encode_real): Encode real.c provided longs
8036         as a series of 32-bit native integers.
8037         (native_interpret_real): Interpret buffer as a series of 32-bit
8038         native integers.
8039
8040 2007-04-03  Richard Guenther  <rguenther@suse.de>
8041
8042         * genpreds.c (write_insn_constraint_len): Write function
8043         optimized for CONSTRAINT_LEN implementation.
8044         (write_tm_preds_h): Output insn_constraint_len inline and
8045         use it for CONSTRAINT_LEN.
8046         (write_insn_preds_c): Don't output insn_constraint_len.
8047         * doc/md.texi (define_register_constraint): Document multi-letter
8048         constraints shall have the same length if they start with the same
8049         letter.
8050
8051 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
8052
8053         PR target/31175
8054         * config/i386/i386.md (isinf<mode>2): Expand only when
8055         TARGET_C99_FUNCTIONS is set.
8056
8057 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
8058
8059         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
8060         (x86_64-*-linux*): Ditto.
8061         * config/i386/i386.opt (mpc): New option.
8062         * config/i386/i386.c (overrride_options): Handle
8063         ix87_precision_string.
8064         * config/i386/crtprec.c: New file.
8065         * config/i386/t-crtpc: Ditto.
8066         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
8067         and -mpc80 options.
8068         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
8069         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
8070         crtprec32.o, crtprec64.o and crtprec80.o.
8071
8072         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
8073         and -mpc80 options.
8074         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
8075
8076 2007-04-02  Eric Christopher  <echristo@apple.com>
8077
8078         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
8079         limitations on darwin.
8080
8081 2007-04-02  Anatoly Sokolov <aesok@post.ru>
8082
8083         PR target/31137
8084         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
8085
8086 2007-04-02  Dave Korn  <dave.korn@artimi.com>
8087
8088         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
8089
8090 2007-04-02  Dave Korn  <dave.korn@artimi.com>
8091
8092         * libgcc2.h (exception_descriptor): Don't forward-declare.
8093         (__get_eh_table_language, __get_eh_table_version): Delete
8094         prototypes of long-dead functions.
8095
8096 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
8097
8098         * ebitmap.h: New file
8099         * ebitmap.c: New file
8100         * Makefile.in (ebitmap.o): New target.
8101
8102 2007-04-01  Jan Hubicka  <jh@suse.cz>
8103
8104         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
8105         before very first instruction.
8106
8107 2007-04-01  Jan Hubicka  <jh@suse.cz>
8108
8109         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
8110         waring on 64bit hosts.
8111         * bitmap.h: Fix typo in bitmap_head_def.
8112
8113 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
8114
8115         PR rtl-optimization/31391
8116         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
8117         into a DELETED_LABEL note, and the label is in an empty basic
8118         block, update BB_END as well as BB_HEAD.
8119
8120 2007-04-01  Richard Henderson  <rth@redhat.com>
8121
8122         PR tree-optimization/31169
8123         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
8124         to varying if the range is outside [0,  prec-1].
8125
8126 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
8127
8128         PR target/31388
8129         * config/mips/mips.md (load_const_gp): New insn.
8130         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
8131         the MIPS16 GP pseudo register if no_new_pseudos.
8132         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
8133
8134 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8135
8136         PR target/31364
8137         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
8138         secureplt.
8139         (call_value): Likewise.
8140
8141 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
8142             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8143
8144         PR 14737
8145         * doc/invoke.texi: (optimization options): Reword description
8146         of -ffast-math. Document its primary purpose.
8147
8148 2007-03-31  Richard Guenther  <rguenther@suse.de>
8149
8150         * omp-low.c (splay-tree.h): Include.
8151         (lookup_decl): Replace splay-tree usage by pointer-map.
8152         (maybe_lookup_decl): Likewise.
8153         (new_omp_context): Likewise.
8154         (delete_omp_context): Likewise.
8155         * gimplify.c (splay-tree.h): Include.
8156         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
8157         pointer-map.
8158         (remap_ssa_name): Likewise.
8159         (remap_decl): Likewise.
8160         (remap_type_1): Likewise.
8161         (remap_type): Likewise.
8162         (copy_body_r): Likewise.
8163         (expand_call_inline): Likewise.
8164         (clone_body): Likewise.
8165         (copy_tree_r): Likewise.
8166         (remap_save_expr): Likewise.
8167         (unsave_r): Likewise.
8168         (unsave_expr_now): Likewise.
8169         (tree_function_versioning): Likewise.
8170         (build_duplicate_type): Likewise.
8171         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
8172         (struct copy_body_data): Replace splay-tree by pointer-map.
8173         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
8174         not $(SPLAY_TREE_H).
8175         (gimplify.o): Depend on $(SPLAY_TREE_H).
8176         (omp-low.p): Likewise.
8177
8178 2007-03-31  Anatoly Sokolov <aesok@post.ru>
8179
8180         * config/avr/predicates.md (even_register_operand,
8181         odd_register_operand): New predicates.
8182         * config/avr/avr.md (movw peephole2): New.
8183         (movw_r peephole2): New.
8184
8185 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
8186
8187         * tree.h (get_signed_or_unsigned_type): New.
8188         * fold-const.c (operand_equal_for_comparison_p): Use
8189         get_signed_or_unsigned_type instead of
8190         lang_hooks.types.signed_or_unsigned_type.
8191         * expr.c (store_expr): Ditto.
8192         * langhooks.c (get_signed_or_unsigned_type): New.
8193         (lhd_signed_or_unsigned_type): New.
8194         * langhooks.h (lhd_signed_or_unsigned_type): New.
8195         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
8196
8197 2007-03-30  Richard Henderson  <rth@redhat.com>
8198
8199         * tree-ssa-loop-ivopts.c: Include target.h.
8200         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
8201         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
8202         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
8203         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
8204
8205 2007-03-30  Richard Henderson  <rth@redhat.com>
8206             Kai Tietz  <kai.tietz@onevision.com>
8207
8208         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
8209         default for 64-bit.
8210         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
8211         (TARGET_64BIT_MS_ABI): New.
8212         (DBX_REGISTER_NUMBER): Handle 64-bit.
8213         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
8214         (LONG_TYPE_SIZE): Force to 32.
8215         (REG_PARM_STACK_SPACE): New.
8216         (OUTGOING_REG_PARM_STACK_SPACE): New.
8217         (REGPARM_MAX, SSE_REGPARM_MAX): New.
8218         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
8219         (STACK_BOUNDARY): Use 128 for 64-bit.
8220         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
8221         Add 64-bit implementation.
8222         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
8223         argument unused.
8224         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
8225         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
8226         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
8227         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
8228         (ix86_handle_cconv_attribute): Don't warn when ignoring if
8229         TARGET_64BIT_MS_ABI.
8230         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
8231         (ix86_pass_by_reference): Likewise.
8232         (ix86_function_value_regno_p): Likewise.
8233         (ix86_build_builtin_va_list): Likewise.
8234         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
8235         (function_arg_advance_ms_64): New.
8236         (function_arg_advance): Call it.
8237         (function_arg_ms_64): New.
8238         (function_arg): Call it.
8239         (function_value_ms_64): New.
8240         (ix86_function_value_1): Call it.
8241         (return_in_memory_ms_64): New.
8242         (ix86_return_in_memory): Call it.
8243         (setup_incoming_varargs_ms_64): New.
8244         (ix86_setup_incoming_varargs): Call it.
8245         (ix86_expand_prologue): Handle 64-bit stack probing.
8246         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
8247         (output_pic_addr_const): Likewise.
8248         (x86_this_parameter): Likewise.
8249         (x86_output_mi_thunk): Likewise.
8250         (x86_function_profiler): Likewise.
8251         (TARGET_STRICT_ARGUMENT_NAMING): New.
8252         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
8253         (TARGET_64BIT_MS_ABI): New.
8254         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
8255         * config/i386/i386.md (allocate_stack_worker): Remove.
8256         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
8257         describe the clobber of eax without a match_scratch.
8258         (allocate_stack_worker_postreload): Remove.
8259         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
8260         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
8261         (allocate_stack_worker_rex64_postreload): Remove.
8262         (allocate_stack): Handle 64-bit.
8263         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
8264         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
8265         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
8266         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
8267         (STANDARD_STARTFILE_PREFIX_1): Likewise.
8268         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
8269         * config.build (x86_64-*-mingw*): New host.
8270         * config.host (x86_64-*-mingw*): New host.
8271         * config.gcc (x86_64-*-mingw*): New target.
8272         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
8273
8274 2007-03-30  Richard Henderson  <rth@redhat.com>
8275             Kai Tietz  <kai.tietz@onevision.com>
8276
8277         * c-pragma.c (struct def_pragma_macro_value): New.
8278         (struct def_pragma_macro): New.
8279         (pushed_macro_table): New.
8280         (dpm_hash, dpm_eq): New.
8281         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
8282         (init_pragma): Install them.
8283         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
8284
8285 2007-03-30  Anatoly Sokolov <aesok@post.ru>
8286
8287         * config/avr/avr.c (avr_override_options): Clear
8288         'flag_delete_null_pointer_checks'.
8289
8290 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
8291
8292         PR c++/26099
8293         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
8294         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
8295         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
8296         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
8297         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
8298         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
8299         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
8300         C++ extensions.
8301         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
8302
8303 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
8304
8305         * regmove.c: Move all of pass_stack_adjustments from here...
8306         * combine-stack-adj.c: ...to this new file.
8307         * Makefile.in: Add rules for combine-stack-adj.o.
8308
8309 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
8310
8311         PR tree-optimization/31383
8312         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
8313         to have the same length.
8314
8315 2007-03-30  Jan Hubicka  <jh@suse.cz>
8316
8317         PR middle-end/30700
8318         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
8319         availablility; add more sanity checking; ask varpool only about
8320         VAR_DECL.
8321
8322 2007-03-29  Richard Henderson  <rth@redhat.com>
8323
8324         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
8325         to decide, but __SIZEOF_LONG_LONG__.
8326
8327 2007-03-29  Richard Henderson  <rth@redhat.com>
8328
8329         * emutls.c (struct __emutls_array): New.
8330         (emutls_destroy): Use it instead of casting element 0 from void*.
8331         (__emutls_get_address): Likewise.
8332
8333 2007-03-29  Richard Henderson  <rth@redhat.com>
8334
8335         * varasm.c (initializer_constant_valid_p): Don't deny
8336         DECL_DLLIMPORT_P on functions.
8337
8338         * config/i386/cygming.h: Remove function declarations.
8339         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
8340         (ASM_OUTPUT_LABELREF): Remove.
8341         (COMMON_ASM_OP): Remove.
8342         (ASM_OUTPUT_COMMON): Remove.
8343         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
8344         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
8345         (ASM_DECLARE_FUNCTION_NAME): Likewise.
8346         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
8347         Rename from TARGET_ENCODE_SECTION_INFO.
8348         * config/i386/netware.h: Likewise.
8349         * config/i386/i386-protos.h: Update.
8350         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
8351         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
8352         (legitimate_constant_p): Reject dllimports.
8353         (dllimport_map, get_dllimport_decl): New.
8354         (legitimize_dllimport_symbol): New.
8355         (legitimize_address, ix86_expand_move): Use it.
8356         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
8357         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
8358         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
8359         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
8360         * config/i386/predicates.md (constant_call_address_operand): Only
8361         accept symbols; reject dllimport_p symbols.
8362         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
8363         i386_pe_maybe_record_exported_symbol.
8364         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
8365         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
8366         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
8367         trust the setting of DECL_DLLIMPORT_P.
8368         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
8369         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
8370         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
8371         tidy the argument scanning loop.
8372         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
8373         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
8374         (i386_pe_strip_name_encoding): Remove.
8375         (i386_pe_binds_local_p): New.
8376         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
8377         (i386_pe_output_labelref): Remove.
8378         (i386_pe_asm_output_aligned_decl_common): New.
8379         (i386_pe_maybe_record_exported_symbol): Rename from
8380         i386_pe_record_exported_symbol; check for dllexported symbols.
8381
8382 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
8383
8384         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
8385         add comment explaining why vsnprintf cannot be used.
8386
8387 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
8388
8389         PR tree-optimization/30666
8390         * tree.c (build_complex_type): When creating type names for DWARF2
8391         debug info, create TYPE_DECLs for TYPE_NAME instead of
8392         IDENTIFIER_NODEs.
8393         (build_common_tree_nodes_2): Use build_complex_type when building
8394         predefined complex types, to preserve canonical types.
8395
8396 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
8397
8398         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
8399         (noce_get_alt_condition): Look at it to determine whether to
8400         reverse the condition or not.
8401         (noce_get_condition): Substitute the truth for lies.
8402         (noce_find_if_block): Set the then_else_reversed field.
8403
8404 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
8405
8406         * config/fr30/fr30.md (movdi): Do not accept immediates as the
8407         destination of this insn.
8408         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
8409         than calling gen_rtx_SET directly.  Use r0 to hold the value of
8410         'address + 4' rather than a stack based temporary which can be
8411         mis-optimized away.
8412
8413 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8414
8415         * config/s390/s390.c (s390_secondary_input_reload_class,
8416         s390_secondary_output_reload_class): Functions removed.
8417         (s390_secondary_reload): New function.
8418         (TARGET_SECONDARY_RELOAD): Target macro defined.
8419         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
8420         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
8421         * config/s390/s390.md ("reload_outti", "reload_outdi",
8422         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
8423         "reload_out<mode>"): Expanders removed.
8424         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
8425         "reload<mode>_nonoffmem_out"): Expanders added.
8426
8427 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8428
8429         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
8430         SRC->DEST replacement failed anyway.
8431
8432 2007-03-28  Mike Stump  <mrs@apple.com>
8433
8434         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
8435         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
8436         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
8437
8438 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
8439
8440         * config.gcc: Accept barcelona as a variant of amdfam10.
8441         * config/i386/i386.c (override_options): Likewise.
8442         * doc/invoke.texi: Likewise.
8443
8444 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
8445
8446         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
8447         offsets for BIT_FIELD_REF and COMPONENT_REF.
8448
8449 2007-03-28  Richard Guenther  <rguenther@suse.de>
8450
8451         * tree.c (is_global_var): Move ...
8452         * tree-flow-inline.h (is_global_var): ... here.
8453         * tree.h (is_global_var): Remove declaration.
8454
8455 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
8456
8457         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
8458         option.
8459         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
8460         * config/i386/i386.c (ix86_tune_features): Initialize new
8461         tuning option.
8462         * config/i386/predicates.md (promotable_binary_operator): Use
8463         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
8464
8465 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
8466
8467         PR target/31380
8468         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
8469
8470 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
8471
8472         * config/fr30/fr30.md (movsi_internal): Change destination
8473         constraint from m to V and add m to the end.
8474
8475 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8476
8477         * config/sh/sh.md (movsi_i): Fix type attribute.
8478
8479 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8480
8481         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
8482         (movsf_ie): Likewise.
8483
8484 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8485
8486         * config.gcc: Add sh4-300 to multilib.
8487         * config/sh/t-mlib-sh4-300: New file.
8488
8489 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
8490
8491         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
8492         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
8493         fix_trunc<mode>di2.
8494         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
8495         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
8496         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
8497         "fixuns_trunctddi2"): Whitespace fix.
8498
8499 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
8500
8501         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
8502         the definition of struct sh_args.
8503         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
8504         CALL_COOKIE_INT_REG_GET): Likewise.
8505
8506 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
8507
8508         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
8509         transformations are applied successfully.
8510
8511 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
8512
8513         * tree.c (tree_contains_struct): Permit 512 tree codes.
8514         * tree.h (tree_contains_struct): Ditto.
8515         (MAX_TREE_CODES): Ditto.
8516         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
8517         SPARE member to store remaining padding bits.
8518
8519 2007-03-27  Anatoly Sokolov <aesok@post.ru>
8520
8521         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
8522         architecture.
8523
8524 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
8525
8526         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
8527         * configure: Regenerate.
8528
8529         * configure: Regenerate using the correct version of autoconf.
8530
8531 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
8532
8533         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
8534         pointer regs.
8535         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
8536         regs to "__SP_L__" and "__SP_H__".
8537
8538 2007-03-27  Richard Guenther  <rguenther@suse.de>
8539
8540         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
8541         computations with it with a HOST_WIDE_INT variable.
8542
8543 2007-03-26  Mike Stump  <mrs@apple.com>
8544
8545         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
8546         objective-c-header, objective-c++-header and objc++-cpp-output
8547         support.
8548         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
8549
8550 2007-03-26  Richard Henderson  <rth@redhat.com>
8551
8552         PR target/31361
8553         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
8554         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
8555         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
8556         IX86_BUILTIN_PSRLQ128): New.
8557         (ix86_init_mmx_sse_builtins): Add them.
8558         (ix86_expand_builtin): Expand them.
8559         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
8560         operand 2 be TImode.
8561         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
8562         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
8563         _mm_srli_epi64): Mark __B const.
8564         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
8565         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
8566         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
8567         new two-vector shift builtins.
8568
8569 2007-03-26  Ian Lance Taylor  <iant@google.com>
8570
8571         PR tree-optimization/31345
8572         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
8573         [+INF, +INF(OVF)] into VARYING.
8574
8575 2007-03-26  Zack Weinberg  <zackw@panix.com>
8576
8577         * gengtype-parse.c: New file.
8578         * gengtype-yacc.y: Delete.
8579         * gengtype-lex.l: Don't include gengtype-yacc.h.
8580         Define YY_DECL and yyterminate appropriately for recursive
8581         descent parser.  yylval is now a string out-parameter to yylex.
8582         (HWS, EOID): New shorthand.
8583         (IWORD): Add a couple more types.
8584         (yylex): Add a setup stanza.  Remove the complex rules for
8585         detecting GTY'ed types and typedefs; replace with simple
8586         keyword detectors.  Adjust everything for the changed
8587         definition of yylval.  Ignore all pp-directives, not just #define.
8588         (yyerror): Delete.
8589         (parse_file): Rename yybegin; do not call yyparse.
8590         (yyend): New.
8591         * gengtype.c (xasprintf): Export again.
8592         (this_file): New.  Use everywhere __FILE__ was being used.
8593         (get_lang_bitmap): Special case types defined in gengtype.c.
8594         (do_typedef, new_structure): Suppress definition of certain types.
8595         (new_structure): Improve diagnostics of duplicate definitions.
8596         Make sure location_s is associated with input.h.
8597         (nreverse_pairs, define_location_structures): New functions.
8598         (main): Improve tagging of kludge types.  Remove old kludges
8599         for input.h types; use define_location_structures.
8600         * gengtype.h: Update prototypes.  Define token codes here.
8601         * Makefile.in: Remove all references to gengtype-yacc.
8602         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
8603         and gengtype.
8604         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
8605         add GTY((skip)) to the field that's only conditionally there.
8606         * doc/install.texi: Document that Bison is no longer required
8607         unless building treelang.
8608
8609         * gengtype.c: Don't include gtyp-gen.h.
8610         (srcdir): Declare here.
8611         (base_files, lang_dir_names): Allocate dynamically.
8612         (gt_files, num_gt_files, num_lang_dirs): New globals.
8613         (measure_input_list, read_input_line, read_input_list)
8614         (set_lang_bitmap): New functions.
8615         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
8616         simplify, relying on read_input_list to set up the bitmaps.
8617         (main): Arguments are no longer unused.  Check for correct number
8618         of command line arguments, set srcdir and srcdir_len, then call
8619         read_input_list, before doing anything else.  No need to worry
8620         about duplicates in main loop.
8621         * configure.ac: Simplify the calculation of all_gtfiles.
8622         Put language tags in there.  Don't set or substitute
8623         all_gtfiles_files_langs or all_gtfiles_files_frags.
8624         * Makefile.in: Revamp the way gengtype is invoked, now that it
8625         takes a file on its command line with a much simpler format.
8626         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
8627         (GTFILES): Remove duplicates and C source files.
8628         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
8629         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
8630         * configure: Regenerate.
8631
8632         * gengtype.h: Remove all type definitions to gengtype.c; leave
8633         only definitions of options_p, type_p, and pair_p as opaque
8634         pointers.  Update prototypes.
8635         * gengtype.c: Many type definitions moved here from gengtype.h.
8636         Consolidate type definitions at the top of the file.
8637         (xvasprintf): Delete.
8638         (xasprintf): Make static.
8639         (create_nested_pointer_option): Add 'next' parameter.
8640         (create_field_all, create_field_at): New functions.
8641         (create_field): Now a thin wrapper around create_field_all.
8642         (create_optional_field): Rename create_optional_field_ and add
8643         line argument.  Original name is now a macro which supplies
8644         __LINE__.
8645         (oprintf): Use vsnprintf directly.
8646         (close_output_files): Use fatal rather than perror/exit.
8647         (note_def_vec, note_def_vec_alloc): Use create_field_at.
8648         (main): Set progname.  Don't use exit.
8649         * gengtype-yacc.y (struct_fields): Use create_field_at.
8650         (option, optionseqopt): Delete.
8651         (optionseq): Consolidate productions from option here so we
8652         can use the first argument to create_option.
8653
8654         * gengtype-lex.l: Distinguish unions from structures in the
8655         token type.  Don't call find_structure; return the tag as a string.
8656         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
8657         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
8658         Reorganize typedef_struct production accordingly.
8659         Use create_nested_ptr_option.
8660         * gengtype.c (create_nested_ptr_option): New function.
8661         * gengtype.h: Declare it.
8662
8663         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
8664         (string_type): Don't declare.
8665         (do_scalar_typedef): Declare.
8666         (create_scalar_type): Update prototype.
8667         * gengtype.c (string_type): Make static.
8668         (scalar_nonchar, scalar_char): New.
8669         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
8670         (resolve_typedef): Use scalar_nonchar for error recovery.
8671         (create_scalar_type): Remove name_len field.  Return scalar_char
8672         or scalar_nonchar as appropriate.
8673         (adjust_field_type): Look at scalar_is_char boolean to decide whether
8674         to use string_type.
8675         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
8676         whenever possible.
8677         (main): Initialize scalar_char and scalar_nonchar before calling
8678         gen_rtx_next.
8679         * gengtype-lex.l: Adjust for removal of second argument to
8680         create_scalar_type.  Use yylval.s instead of yylval.t when
8681         returning SCALAR.
8682         * gengtype-yacc.y: Type of SCALAR is string.  Call
8683         create_scalar_type from type:SCALAR rule.  Adjust for removal of
8684         second argument to create_scalar_type.
8685
8686         * vec.h: Remove all #if IN_GENGTYPE blocks.
8687         Add comment saying that changes may require adjustments to gengtype.
8688         * gengtype.c: Don't include coretypes.h or tm.h.
8689         Add comment to inclusion of errors.h.
8690         (note_def_vec, note_def_vec_alloc): New functions.
8691         * gengtype.h: Declare new functions.
8692         * gengtype-lex.l: Don't include coretypes.h.
8693         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
8694         Delete.
8695         (update_lineno): Remove unnecessary prototype.
8696         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
8697         (VEC rule): Just return VEC_TOKEN.
8698         * gengtype-yacc.y (VEC_TOKEN): New token type.
8699         (type): Add a production for VEC(a,b).
8700         * Makefile.in: Update dependencies.
8701
8702         * gengtype-lex.l: Remove rules for parsing pointer-to-function
8703         typedefs that use the old PARAMS macro.
8704
8705         * gengtype-lex.l: Remove all rules and states relating to yacc
8706         input files.
8707         * gengtype-yacc.y: Similarly.
8708         * gengtype.c (note_yacc_type): Delete function.
8709         * gengtype.h: Update prototypes.
8710
8711 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
8712
8713         * tree-pretty-print.c (dump_generic_node): Report precision of
8714         unnamed integer types.
8715
8716 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
8717
8718         * ifcvt.c (noce_try_store_flag_constants): Don't check
8719         no_new_pseudos here.
8720         (noce_try_store_flag_constants): Don't check no_new_pseudos.
8721         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
8722         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
8723         noce_try_sign_mask): Likewise.
8724         (if_convert): Check no_new_pseudos here.
8725
8726         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
8727         Remove prototypes.
8728         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
8729         (noce_get_condition): Handle new then_else_reversed argument.
8730         (noce_init_if_info): Remove, fold into noce_find_if_block.
8731         (noce_process_if_block): Take a struct noce_if_info as the
8732         argument.  Don't set up one based on ce_if_info.  Update pointer
8733         references accordingly.
8734         (cond_move_process_if_block): Likewise.
8735         (process_if_block): Removed.
8736         (find_if_block): Removed.  Move functionality two new functions,
8737         noce_find_if_block and cond_exec_find_if_block.
8738         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
8739         blocks and the symmetric IF-ELSE-JOIN case.
8740         (cond_exec_find_if_block): Also new function mostly based on old
8741         find_if_block and process_if_block.
8742         (find_if_header): Replace find_if_block call with separately
8743         guarded calls to noce_find_if_block and cond_exec_find_if_block.
8744         (find_cond_trap): Update noce_get_condition call.
8745         (dead_or_predicable): Likewise.
8746
8747 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
8748
8749         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
8750         Remove.
8751         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
8752         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
8753         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
8754         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
8755         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
8756         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
8757         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
8758         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
8759         __builtin_ia32_psrad128 builtins.
8760
8761 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
8762
8763         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
8764         * config/i386/constraints.md
8765         (define_constraint "I"): Use IN_RANGE macro.
8766         (define_constraint "J"): Ditto.
8767         (define_constraint "K"): Ditto.
8768         (define_constraint "M"): Ditto.
8769         (define_constraint "N"): Ditto.
8770         (define_constraint "O"): Ditto.
8771         * config/i386/predicates.md
8772         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
8773         (define_predicate "const_0_to_3_operand"): Ditto.
8774         (define_predicate "const_0_to_7_operand"): Ditto.
8775         (define_predicate "const_0_to_15_operand"): Ditto.
8776         (define_predicate "const_0_to_63_operand"): Ditto.
8777         (define_predicate "const_0_to_255_operand"): Ditto.
8778         (define_predicate "const_1_to_31_operand"): Ditto.
8779         (define_predicate "const_2_to_3_operand"): Ditto.
8780         (define_predicate "const_4_to_7_operand"): Ditto.
8781
8782 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8783
8784         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
8785         in SImode for save_world.
8786         * config/rs6000/altivec.md (save_world, restore_world): Convert to
8787         LR hard reg.
8788
8789 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
8790
8791         PR tree-optimization/30784
8792         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
8793         BIT_FIELD_REF.
8794
8795 2007-03-25  Revital Eres  <eres@il.ibm.com>
8796
8797         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
8798           Fold movement_possibility function into it.
8799
8800 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8801
8802         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
8803         (load_macho_picbase_{si,di}): Convert to LR hard reg.
8804         (call_indirect_nonlocal_darwin64): Same.
8805         (call_nonlocal_darwin64): Same.
8806         (call_value_indirect_nonlocal_darwin64): Same.
8807         (call_value_nonlocal_darwin64): Same.
8808         (sibcall_nonlocal_darwin64): Same.
8809         (sibcall_value_nonlocal_darwin64): Same.
8810         (sibcall_symbolic_64): Same.
8811         (sibcall_value_symbolic_64): Same.
8812         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
8813         LR pseudo.
8814         (rs6000_emit_load_toc_table): Same.
8815         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
8816         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
8817         (mull_call): Same.
8818         (divss_call): Same.
8819         (divus_call): Same.
8820         (quoss_call): Same.
8821         (quous_call): Same.
8822         (load_toc_v4_pic_si): Same
8823         (load_toc_v4_PIC_1): Same.
8824         (load_toc_v4_PIC_1b): Same.
8825         (call_indirect_aix{32,64}): Same.
8826         (call_value_indirect_aix{32,64}): Same.
8827         (call): Same.
8828         (call_value): Same.
8829         (call_local{32,64}): Same.
8830         (call_value_local{32,64}): Same.
8831         (call_indirect_nonlocal_aix{32,64}): Same.
8832         (call_nonlocal_aix{32,64}): Same.
8833         (call_value_indirect_nonlocal_aix{32,64}): Same.
8834         (call_value_nonlocal_aix{32,64}): Same.
8835         (call_indirect_nonlocal_sysv<mode>): Same.
8836         (call_nonlocal_sysv<mode>): Same.
8837         (call_value_indirect_nonlocal_sysv<mode>): Same.
8838         (call_value_nonlocal_sysv<mode>): Same.
8839         (sibcall): Same.
8840         (sibcall_local{32,64}): Same.
8841         (sibcall_value_local{32,64}): Same.
8842         (sibcall_nonlocal_aix{32,64}): Same.
8843         (sibcall_value_nonlocal_aix{32,64}): Same.
8844         (sibcall_nonlocal_sysv<mode>): Same.
8845         (sibcall_value): Same.
8846         (sibcall_value_nonlocal_sysv<mode>): Same.
8847
8848 2007-03-24  Paul Brook  <paul@codesourcery.com>
8849
8850         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
8851         * config/arm/linux-eabi.h: Remove legacy syscall hack.
8852
8853 2007-03-24  Richard Henderson  <rth@redhat.com>
8854
8855         * config/ia64/constraints.md: New file.
8856         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
8857         satisfies_constraint_?.
8858         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
8859         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
8860         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
8861         ia64_output_mi_thunk): Likewise.
8862         (ia64_const_ok_for_letter_p): Remove.
8863         (ia64_const_double_ok_for_letter_p): Remove.
8864         (ia64_extra_constraint): Remove.
8865         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
8866         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
8867         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
8868         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
8869         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
8870         EXTRA_MEMORY_CONSTRAINT): Remove.
8871         * config/ia64/ia64.md: Include constriants.md.  Replace
8872         CONST_OK_FOR_? with satisfies_constraint_?.
8873
8874 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
8875             H.J. Lu  <hongjiu.lu@intel.com>
8876
8877         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
8878         DPD or BID name.
8879         (name macros): Use DPD_BID_NAME to convert names properly.
8880
8881         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
8882         decimal floating point format.
8883         (init_floating_libfuncs): Change decimal functions so that they
8884         have a "bid_" prefix if the decimal system uses the BID format,
8885         and "dpd_" prefix if the decimal system uses the DPD format.
8886         (init_interclass_conv_libfuncs): Ditto.
8887         (init_intraclass_conv_libfuncs): Ditto.
8888
8889         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8890         using the BID format.
8891
8892         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8893         whether we are using the BID decimal format.
8894         * configure: Regenerate.
8895
8896         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8897         the compiler has decimal floating point enabled.  Define
8898         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8899         instead of DPD.
8900
8901         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8902         using the BID format.
8903
8904         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8905         whether we are using the BID decimal format.
8906         * configure: Regenerate.
8907
8908         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8909         the compiler has decimal floating point enabled.  Define
8910         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8911         instead of DPD.
8912
8913         * doc/install.texi (--enable-decimal-float): Document BID and DPD
8914         options, and that it is enabled for i386/x86_64 systems.
8915
8916         * Makefile.in (enable_decimal_float): New.
8917         (DECNUMFMT): New.
8918         (DECNUMINC): Add  -I$(DECNUMFMT).
8919         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
8920         to $(DECNUMFMT) from $(DECNUM).
8921
8922         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
8923         Substitute enable_decimal_float.
8924         * configure: Regenerated.
8925
8926         PR other/30529
8927         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
8928         unsigned long.
8929
8930         * configure.ac: Enable decimal float for x86_64-*-linux*.
8931         * configure: Regenerated.
8932
8933         PR other/30530
8934         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
8935         decimal128ClearSign to flip and clear the sign bit in decimal128.
8936         (decimal_real_maxval): Set decimal128SetSign to set the sign
8937         bit in decimal128.
8938
8939 2007-03-23  Ian Lance Taylor  <iant@google.com>
8940
8941         * fold-const.c (fold_binary): Correct warning for X - c >= X.
8942
8943 2007-03-23  Ian Lance Taylor  <iant@google.com>
8944
8945         * tree-dump.c (dump_files): Correct comment.
8946
8947 2007-03-23  Ian Lance Taylor  <iant@google.com>
8948
8949         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
8950
8951 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
8952
8953         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
8954         in cfglayout mode.  Don't go into and out of cfglayout mode.
8955         Link the blocks in the order of the constructed traces.
8956         (rest_of_handle_tracer): Adjust call to tracer.
8957         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
8958         Don't go into cfglayout mode.
8959         (rtl_loop_done): Don't go out of cfglayout mode.
8960         * cfglayout.c (relink_block_chain): New function, split out from...
8961         (fixup_reorder_chain): ...here.  Remove redundant checking.
8962         (cfg_layout_finalize): Don't clear the header, footer, and aux
8963         fields here, move the code to do so to relink_block_chain.  Likewise
8964         for free_original_copy_tables.
8965         * rtl.h (tracer): Update prototype.
8966         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
8967         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
8968         mode.  Use relink_block_chain to serialize the CFG according to the
8969         new basic block order.  Move targetm.cannot_modify_jumps_p check from
8970         here...
8971         (gate_handle_reorder_blocks): ...to here.
8972         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
8973         from here...
8974         (gate_duplicate_computed_gotos): ...to here.
8975         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
8976         something always changes when going into and out of cfglayout mode.
8977         Perform an expensive cfg cleanup while going into cfglayout mode.
8978         Always update liveness information on HAVE_conditional_execution
8979         targets.  Reserialize the basic blocks and go out of cfglayout mode.
8980         * reg-stack.c: Include cfglayout.h.
8981         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
8982         the call to reorder_basic_blocks.
8983         * basic-block.h (reorder_basic_blocks): Update prototype.
8984         (relink_block_chain): New prototype.
8985         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
8986
8987 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
8988
8989         * config/mips/mips.md (type, hazard, *movdi_32bit,
8990         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
8991         *movhi_internal, *movqi_internal, *movsf_hardfloat,
8992         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
8993         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
8994         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
8995         applicable.
8996         (movcc): Change first xfer to multi.
8997         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
8998         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
8999         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
9000         config/mips/generic.md: Change reservations using "xfer" to use
9001         "mfc,mtc".
9002         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
9003         using match_operand.
9004         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
9005         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
9006         examining mode.
9007         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
9008
9009 2007-03-22  Richard Henderson  <rth@redhat.com>
9010
9011         * config/i386/i386.c: Remove unnecessary function declarations.
9012         Move targetm definition, and all related macros, to the end of
9013         the file.  Resort some functions to put definitions before uses.
9014         (ix86_attribute_table): Make static.  Move to end of file.
9015         (ix86_gimplify_va_arg): Make static.
9016
9017 2007-03-22  Richard Henderson  <rth@redhat.com>
9018
9019         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
9020         don't increase local_regparm with force_align_arg_pointer check.
9021         (ix86_function_sseregparm): Assert 32-bit.
9022         (type_has_variadic_args_p): New.
9023         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
9024         type_has_variadic_args_p.
9025         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
9026         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
9027         use memset instead.  Do maybe_vaarg check first; skip attribute
9028         tests if true; skip attribute tests for 64-bit.
9029         (construct_container): Remove TARGET_DEBUG_ARG.
9030         (function_arg_advance_32, function_arg_advance_64): Split out ...
9031         (function_arg_advance): ... from here.
9032         (function_arg_32, function_arg_64): Split out ...
9033         (function_arg): ... from here.
9034         (ix86_pass_by_reference): Tidy.
9035         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
9036         (function_value_32): New, from parts of ix86_function_value
9037         and ix86_value_regno.
9038         (function_value_64): New, from parts of ix86_function_value
9039         and ix86_libcall_value.
9040         (ix86_function_value_1): New.
9041         (ix86_function_value, ix86_libcall_value): Use it.
9042         (return_in_memory_32, return_in_memory_64): Split out ...
9043         (ix86_return_in_memory): ... from here.
9044         (ix86_struct_value_rtx): Skip for 64-bit.
9045         (ix86_libcall_value, ix86_value_regno): Remove.
9046         (setup_incoming_varargs_64): Split out ...
9047         (ix86_setup_incoming_varargs): ... from here.
9048         (ix86_va_start): Remove TARGET_DEBUG_ARG.
9049         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
9050         * config/i386/i386-protos.h (ix86_function_value): Remove.
9051         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
9052
9053 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9054
9055         PR other/23572
9056         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
9057         infinities not supported, otherwise emit warning if -Woverflow. On
9058         underflow, emit warning if -Woverflow.
9059         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
9060         and 0 otherwise.
9061         * real.h (real_from_string): Update declaration
9062
9063 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
9064             Richard Henderson  <rth@redhat.com>
9065
9066         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
9067         * calls.c (compute_argument_block_size, expand_call,
9068         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
9069         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
9070         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
9071         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
9072         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
9073         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
9074         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
9075         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
9076         Set to 1.
9077
9078 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
9079
9080         * c-incpath.c (add_sysroot_to_chain): New.
9081         (merge_include_chains): Add sysroot argument.  Call
9082         add_sysroot_to_chain if sysrooted.
9083         (register_include_chains): Update call to merge_include_chains.
9084         * doc/cppopts.texi: Document use of '=' in include directory
9085         arguments.
9086
9087 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
9088
9089         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
9090         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
9091         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
9092         insn pattern using X87MODEF12 mode macro.
9093
9094 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
9095
9096         * regmove.c (regmove_optimize): Use reg_mentioned_p
9097         instead of reg_overlap_mentioned_p for DST.
9098
9099 2007-03-21  Mike Stump  <mrs@apple.com>
9100
9101         * c.opt: Fixup for Objective-C/C++.
9102
9103 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
9104
9105         * explow.c (convert_memory_address): Fold memory reference when
9106         POINTERS_EXTEND_UNSIGNED < 0
9107
9108 2007-03-21  Richard Henderson  <rth@redhat.com>
9109
9110         PR target/31245
9111         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
9112         * config/i386/mmintrin.h (__m64): Likewise.
9113         * config/i386/xmmintrin.h (__m128): Likewise.
9114
9115 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9116
9117         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
9118         (VXWORKS_OS_CPP_BUILTINS): Define.
9119         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
9120         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
9121
9122 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9123
9124         * rtl.h (constant_pool_reference_p): Delete.
9125         (find_constant_src): Declare.
9126         * rtlanal.c (find_constant_src): New function.
9127         * simplify-rtx.c (constant_pool_reference_p): Delete.
9128         * config/i386/i386.md: Use find_constant_src instead of
9129         constant_pool_reference_p/avoid_constant_pool_reference pairs.
9130
9131 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9132
9133         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
9134         * c-cppbuiltin.c (c_cpp_builtins): Define them.
9135
9136 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
9137
9138         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
9139         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
9140         (arm_elf_asm_constructor): Use it.
9141         (arm_elf_asm_destructor): New function.
9142
9143 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
9144
9145         * jump.c (mark_jump_label): Treat SEQUENCE specially.
9146
9147 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
9148
9149         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
9150
9151 2007-03-19  Andrew Haley  <aph@redhat.com>
9152
9153         PR tree-optimization/31264
9154         * tree-vrp.c (register_edge_assert_for_1): Don't look though
9155         VIEW_CONVERT_EXPRs.
9156
9157 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
9158
9159         PR rtl-optimization/30907
9160         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
9161         (fwprop_init): Always call loop_optimizer_initialize.
9162         (fwprop_done): Always call loop_optimizer_finalize.
9163         (fwprop): We always have loop info now.
9164         (gate_fwprop_addr): Remove.
9165         (pass_fwprop_addr): Use gate_fwprop as gate.
9166
9167         PR rtl-optimization/30841
9168         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
9169         df_chain_alloc): Call df_reorganize_refs unconditionally.
9170         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
9171         refs_organized to refs_organized_size.
9172         (df_ref_create_structure): Use refs_organized_size instead of
9173         bitmap_size if refs had been organized, and keep refs_organized_size
9174         up-to-date.
9175         * df.h (struct df_ref_info): Change refs_organized to
9176         refs_organized_size.
9177         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
9178         bitmap_size.
9179
9180 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
9181
9182         * except.c (output_function_exception_table): Do not reference the
9183         EH personality routine for functions that do not require an
9184         exception table.
9185
9186 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
9187
9188         PR c/30762
9189         * c-typeck.c (convert_for_assignment): Call comptypes for
9190         RECORD_TYPE or UNION_TYPE.
9191
9192         PR inline-asm/30505
9193         * reload1.c (reload): Do invalid ASM checking after
9194         cleanup_subreg_operands.
9195
9196 2007-03-19  Jeff Law  <law@redhat.com>
9197
9198         * tree-cfg.c (find_taken_edge): Tighten conditions for
9199         optimizing computed gotos.
9200
9201 2007-03-19  Michael Matz  <matz@suse.de>
9202
9203         * builtins.c (expand_builtin_sync_operation,
9204         expand_builtin_compare_and_swap,
9205         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
9206         correctly.
9207
9208         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
9209         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
9210         for operand 3.
9211
9212 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9213
9214         * doc/tm.texi: Add brackets around the return type of
9215         TARGET_SECONDARY_RELOAD.
9216
9217 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9218         Richard Guenther  <rguenther@suse.de>
9219
9220         PR tree-optimization/31254
9221         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
9222         Use handled_component_p () where appropriate.  Continue
9223         propagating into the rhs if we propagated into an INDIRECT_REF
9224         on the lhs.
9225
9226 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9227
9228         * config/s390/s390.md (op_type attribute): RRR instruction type added.
9229         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
9230         (xde, xdee): Mode attributes adjusted to support DFP modes.
9231         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
9232         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
9233         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
9234         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
9235         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
9236         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
9237         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
9238         numbers.
9239         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
9240         "movsf"): Insn definitions removed.
9241         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
9242         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
9243         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
9244         definitions added.
9245         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
9246         "reload_in<mode>", "reload_out<mode>"): Expander added.
9247         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
9248         Expander removed.
9249
9250 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9251
9252         * config/s390/s390.md: Only non-functional changes.  Renamed
9253         FPR mode macro to BFP all over the file.
9254
9255 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9256
9257         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
9258         (op_type attribute): RRF instruction type added.
9259         (fT0): New mode attribute.
9260         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
9261         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
9262         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
9263         no secondary memory is needed when moving DFmode values between GPRs
9264         and FPRs.
9265
9266 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9267
9268         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
9269         inverted and documentation adjusted.
9270         ("mhard-dfp", "msoft-dfp"): New options.
9271         * config/s390/s390.c (s390_handle_arch_option): New architecture
9272         switch: z9-ec.
9273         (override_options): Sanity checks for the new options added.
9274         * config.gcc: New architecture switch: z9-ec.
9275         * config/s390/s390.h (processor_flags): PF_DFP added.
9276         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
9277         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
9278         when the bit is NOT set so remove it from the defaults.
9279
9280 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9281
9282         * genemit.c (main): Print include statement for dfp.h.
9283         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
9284         is not available.
9285
9286 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
9287
9288         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
9289
9290 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
9291
9292         PR target/31022
9293         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
9294         instead of PATTERN.
9295
9296 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9297
9298         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
9299         attr_length_call, output_call, output_indirect_call): Cleanup
9300         formatting of targetm calls.
9301
9302 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
9303
9304         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
9305
9306 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9307
9308         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
9309         reservation, bypass and anti-bypass descriptions for these instructions.
9310         Update move patterns.
9311         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
9312         TYPE_FPSTORE.
9313
9314 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
9315
9316         * tree-vect-transform.c (get_initial_def_for_induction): Replace
9317         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
9318         (get_initial_def_for_reduction): Likewise.
9319
9320 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
9321
9322         Fix PR tree-optimization/29922
9323         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
9324         (get_representative): Removed.
9325         (value_dies_in_block_x): Update for rvuse removal.
9326         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
9327         (compute_antic_aux): Handle when PHI nodes appear in
9328         non-single-successors.
9329         (dump_bitmap_of_names): Removed.
9330         (compute_antic_safe): Renamed and removed rvuse calculation.
9331         Calculate only antic safe.
9332         (insert_into_preds_of_block): Remove assert.
9333         (execute_pre): Update for renamed functions.
9334         (defer_or_phi_translate_block): New function.
9335
9336 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9337
9338         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
9339         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
9340         typos.
9341         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
9342         Follow spelling conventions.
9343
9344         * tree-data-ref.h: Remove the prototype for analyze_array.
9345
9346 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
9347
9348         PR tree-optimization/31041
9349         * tree-vect-transform.c (get_initial_def_for_induction): Call
9350         force_gimple_operand.
9351
9352 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
9353
9354         * ipa-type-escape.c (look_for_casts) : Revert code to use
9355         handled_component_p due to ada test a-numaux.adb.
9356
9357 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9358
9359         * final.c (final_scan_insn): Alter the condition of a
9360         conditional trap if we have nonstandard CC.
9361
9362 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9363
9364         * configure.ac: Remove excess quoting from asm line 0 test.
9365         * configure: Rebuilt.
9366
9367 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9368
9369         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
9370         * c-common.c (convert_and_check): Move warning logic to...
9371         (warnings_for_convert_and_check): ...here. Define.
9372         * c-common.h (warnings_for_convert_and_check): Declare.
9373
9374 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9375
9376         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
9377         (output_call): Likewise.
9378
9379 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9380
9381         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
9382
9383 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9384
9385         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
9386
9387 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
9388
9389         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
9390         opteron, athlon-64 and athlon-fx processor_alias_table entries.
9391
9392 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
9393
9394         PR tree-optimization/31183
9395         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
9396         Use double_int instead of unsigned int for representing access_strides.
9397         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
9398
9399 2007-03-16  Richard Guenther  <rguenther@suse.de>
9400
9401         PR tree-optimization/31146
9402         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
9403         to allow recursion of forward_propagate_addr_expr.
9404         (forward_propagate_addr_into_variable_array_index): Likewise.
9405         (forward_propagate_addr_expr): Likewise.
9406         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9407         (forward_propagate_addr_expr_1): Recurse on simple copies
9408         instead of propagating into them.  Do so for useless conversions
9409         as well.
9410         (forward_propagate_addr_expr): Clean up unused statements after
9411         recursion.
9412
9413 2007-03-16  Richard Guenther  <rguenther@suse.de>
9414
9415         * builtins.c (expand_builtin_cexpi): Use the right argument
9416         for the expansion via cexp.
9417
9418 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9419
9420         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
9421         * configure: Rebuilt.
9422
9423 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9424
9425         PR debug/29906
9426         * dwarf2out.c (force_type_die): Adjust comment.
9427         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
9428
9429 2007-03-15  DJ Delorie  <dj@redhat.com>
9430
9431         * config/frv/predicates.md (minmax_operator): Don't check operands
9432         here.
9433
9434 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9435
9436         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
9437         Update constant estimates of number of iterations.
9438         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
9439         argument renamed to "realistic".
9440         (compute_estimated_nb_iterations): Removed.
9441         (record_niter_bound): New function.
9442         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
9443         call record_nonwrapping_iv with upper = false.
9444         (infer_loop_bounds_from_signedness): Pass upper argument to
9445         record_nonwrapping_iv.
9446         (estimate_numbers_of_iterations_loop): Do not call
9447         compute_estimated_nb_iterations.  Record estimate based on profile
9448         information.  Initialize the constant estimates of number of
9449         iterations.
9450         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
9451         estimates.
9452         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
9453         number of iterations is too small.
9454         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
9455         (EST_NOT_AVAILABLE): Removed.
9456         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
9457         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
9458         fields.
9459
9460 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9461
9462         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
9463         Handle NE_EXPR guards.
9464
9465 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9466
9467         PR c++/24924
9468         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
9469         Set also -pedantic-errors by default for the  preprocessor unless
9470         -fpermissive is given.
9471
9472 2007-03-15  Richard Guenther  <rguenther@suse.de>
9473
9474         PR middle-end/29719
9475         PR middle-end/31161
9476         * builtins.c (expand_builtin_cexpi): As a fallback if we
9477         don't have builtins for sincos or cexp create a function
9478         declaration for cexp and expand to a call to that.
9479         (expand_builtin_int_roundingfn): Always fall
9480         back to floor/ceil and its variants even if they may be
9481         not available.
9482
9483 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
9484
9485         PR middle-end/31159
9486         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
9487         jump tables, move the call to delete_dead_jumptables from here...
9488         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
9489         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
9490         don't allow merging of blocks that try_redirect_by_replacing_jump
9491         also does not handle when not optimizing.
9492
9493 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9494             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
9495
9496         * config/i386/i386.md (x86_sahf_1): Correctly handle
9497         HAVE_AS_IX86_SAHF.
9498
9499 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9500
9501         PR target/31167
9502         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
9503         x86_64_general_operand as operand[2] predicate.  Remove "iF"
9504         from operand constraints and use "e" constraint instead.
9505         (*subti3_1, *subti3_1 splitter): Ditto.
9506         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
9507         operand[1] predicate.
9508
9509 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
9510
9511         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
9512         arrays, multiply the access strides by the size of the sub-array.
9513         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
9514
9515 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9516
9517         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
9518         the configured assembler supports the sahf mnemonic.
9519         * configure: Regenerate.
9520         * config.in: Regenerate.
9521
9522         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
9523         emit "sahf" or ".byte\t0x9e" as asm template.
9524
9525 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
9526
9527         PR 31018
9528         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
9529         option to replace hard coded TARGET_xxx in md file.
9530         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
9531         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9532         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
9533         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
9534         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
9535         (X86_TUNE_NOT_VECTORMODE): Ditto.
9536         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
9537         (TUNE_AVOID_VECTOR_DECODE): Ditto.
9538         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9539         (TUNE_SLOW_IMUL_IMM8): Ditto.
9540         (TUNE_MOVE_M1_VIA_OR): Ditto.
9541         (TUNE_NOT_UNPAIRABLE): Ditto.
9542         (TUNE_NOT_VECTORMODE): Ditto.
9543
9544         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
9545         options.
9546
9547         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
9548         tuning options instead of hard coded TARGET_xxx.
9549         (fix ssemode peephole2's): Ditto.
9550         (imul peephole2's): Ditto.
9551         (movsi_or): Ditto.
9552         (movdi_or_rex64): Ditto.
9553         (move peephole2): Ditto.
9554         (not peephole2's): Ditto.
9555
9556 2007-03-14  Dirk Mueller  <dmueller@suse.de>
9557
9558         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
9559         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
9560         * c-parser.c (c_parser_if_body): Always add an empty statement in case
9561         of empty body.
9562         * c-parser.c (c_parser_do_statement): Warn about empty body in
9563         do/while statement.
9564         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
9565         * doc/invoke.texi (-Wempty-body): Update documentation.
9566
9567 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9568
9569         PR c/21438
9570         * c-common.h (warn_for_div_by_zero): Declare.
9571         * c-common.c (warn_for_div_by_zero): Define.
9572         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
9573         warning.
9574
9575 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9576
9577         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
9578         to PREFIX and STANDARD_PREFIX.
9579
9580 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9581             Phil Edwards  <phil@codesourcery.com>
9582
9583         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
9584         (__gthread_once_t): Remove busy field for RTPs.
9585         (__GTHREAD_ONCE_INIT): Update accordingly.
9586
9587 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9588
9589         * doc/invoke.texi: Document VxWorks options.
9590
9591 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9592
9593         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
9594
9595 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
9596
9597         PR tree-optimization/30590
9598         * tree-nrv.c (tree_nrv): Check for the partial update of the
9599         return value.
9600
9601 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9602
9603         * flags.h (flag_random_seed): Remove declaration, in favor of...
9604         * toplev.h (get_random_seed, set_random_seed): ... these.
9605         * tree.c (get_file_function_name): Use the former.
9606         * opts.c (common_handle_option): Use the latter.
9607         * toplev.c
9608
9609 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
9610
9611         PR middle-end/31127
9612         * cse.c (cse_find_path): Do not bail out if a basic block that
9613         we already visited now becomes part of a path that starts at a
9614         different basic block.  Just disallow this, to make sure we
9615         visit each basic block at most once.
9616
9617 2007-03-13  Jan Hubicka  <jh@suse.cz>
9618
9619         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
9620         when profile esitmate is present, calls with very low frequency are
9621         cold.
9622
9623 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
9624
9625         PR tree-optimization/30730
9626         PR tree-optimization/26900
9627         * tree-ssa-loop-niter.c: Include gmp.h.
9628         (bounds): New type.
9629         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
9630         split_to_var_and_offset, determine_value_range,
9631         bound_difference_of_offsetted_base, refine_bounds_using_guard,
9632         bound_difference, bounds_add, bounds_negate,
9633         number_of_iterations_ne_max, dump_affine_iv): New functions.
9634         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
9635         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
9636         difference of initial and final value of control iv to validate
9637         results.
9638         (number_of_iterations_cond): Add loop parameter.  Determine bounds
9639         on the difference of the extremes of the control iv.  Add dumps.
9640         (expand_simple_operations): Handle phi nodes.
9641         (simplify_using_initial_conditions): Do not record used conditions.
9642         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
9643         Do not set additional_info.
9644         (implies_nonnegative_p, implies_ge_p): Removed.
9645         (derive_constant_upper_bound): Do not use parameter `additional'.
9646         (record_estimate): Parameter `additional' removed.  Parameter
9647         `i_bound' added.  Do not call derive_constant_upper_bound.
9648         (record_nonwrapping_iv): Use derive_constant_upper_bound to
9649         bound the number of iterations estimate.
9650         (estimate_numbers_of_iterations_loop): Pass the estimate from
9651         the number of iterations analysis to record_estimate.
9652         * tree.h (multiple_of_p): Declare.
9653         * tree-scalar-evolution.c (expression_expensive_p): Removed.
9654         (scev_const_prop): Do not check expression_expensive_p.
9655         * fold-const.c (multiple_of_p): Exported.
9656         * double-int.c (double_int_mask): Exported.
9657         * double-int.h (double_int_mask): Declare.
9658         * tree-flow.h (struct tree_niter_desc): Removed additional_info
9659         field.  Added max field.
9660
9661 2007-03-13  David Taylor  <taylor@candd.org>
9662
9663         PR driver/12448:
9664         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
9665         default -MQ.
9666
9667 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9668
9669         PR target/31123
9670         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
9671         two unamed patterns.
9672
9673 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
9674
9675         * config/i386/i386.opt (mcx16, msahf): New options.
9676         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
9677         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
9678
9679         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
9680         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
9681         Output -mcx16 and -msahf options when corresponding bit is set.
9682
9683         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
9684         and -msahf options.
9685
9686 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9687
9688         * configure.ac: Test for assembler tolerance to # 0 "".
9689         * configure, config.in: Rebuilt.
9690         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
9691
9692 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
9693
9694         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
9695
9696         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
9697         (handle_syscall): Handle direct system calls.
9698         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
9699
9700 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9701
9702         * doc/invoke.texi: Fix cpp.info cross-reference.
9703         * doc/passes.texi: Fix gcc.info cross-reference.
9704
9705 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
9706
9707         PR tree-optimization/30835
9708         * lambda-code.c (can_convert_to_perfect_nest): Check whether
9709         bb_for_stmt is not NULL before accessing it.
9710
9711 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
9712
9713         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
9714         some multilibs.
9715
9716 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9717
9718         PR 30635
9719         * doc/install.texi: Document --enable-stage1-languages
9720
9721 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
9722
9723         * tree-pass.h (pass_into_cfg_layout_mode,
9724         pass_outof_cfg_layout_mode): Declare.
9725         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
9726         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
9727         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
9728         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
9729
9730 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
9731
9732         * c-decl.c (warn_variable_length_array): New function.
9733         Refactored from grokdeclarator to handle warn_vla
9734         and handle unnamed array case.
9735         (grokdeclarator): Refactored VLA warning case.
9736         * c.opt (Wvla): New flag.
9737         * doc/invoke.texi (Wvla): New warning.
9738
9739 2007-03-12  Richard Henderson  <rth@redhat.com>
9740
9741         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
9742         (TARGET_SECTION_TYPE_FLAGS): New.
9743
9744 2007-03-12  Richard Henderson  <rth@redhat.com>
9745
9746         * config/darwin.c (machopic_reloc_rw_mask): New.
9747         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
9748         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
9749
9750 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
9751
9752         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
9753         * cppdefault.h (cpp_PREFIX): Document.
9754         (cpp_PREFIX_len): Likewise.
9755         (cpp_EXEC_PREFIX): New variable.
9756         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
9757         * c-incpath.c (add_standard_paths): Correct logic for relocating
9758         paths within prefix.
9759
9760 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
9761
9762         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
9763         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
9764         mode macro.
9765         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
9766         fix_truncdfdi_sse using SSEMODEF mode macro.
9767         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
9768         fix_truncdfsi_sse using SSEMODEF mode macro.
9769         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
9770         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
9771
9772 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
9773
9774         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
9775         elfos.h to tm_file.
9776
9777 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
9778
9779         * tree.h : Add multiple_of_p declaration.
9780         * fold-const.c (multiple_of_p): Make multiple_of_p public.
9781         * ipa-type-escape.c (results_of_malloc): Redundant.
9782         (visited_stmts): New. Visited stmt for walk_use_def_chains.
9783         (cast_type): Extended with new members.
9784         (check_cast): Returns cast_type.
9785         (cast): New structure for data of walk_use_def_chains.
9786         (is_malloc_result, is_cast_from_non_pointer_1,
9787         is_cast_from_non_pointer,
9788         is_array_access_through_pointer_and_index): New functions.
9789         (look_for_casts): Returns cast types.
9790         (check_call): Returns void.
9791         (okay_pointer_operation): Use support of pointer plus index,
9792         pointer plus constant and allow all multiplications.
9793
9794 2007-03-11  Richard Guenther  <rguenther@suse.de>
9795
9796         PR tree-optimization/31115
9797         * tree-vrp.c (extract_range_from_binary_expr): Make sure
9798         the shift count is positive and non-anti-range for RSHIFT_EXPR.
9799         A shift count of zero is not special as with *_DIV_EXPR.
9800         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
9801         direction.
9802
9803 2007-03-11  Ian Lance Taylor  <iant@google.com>
9804
9805         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
9806         the *_DIV_EXPR codes correctly with overflow infinities.
9807
9808 2007-03-11  Ira Rosen  <irar@il.ibm.com>
9809
9810         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
9811         indicate success/failure of the analysis. Add negation to subtrahend
9812         in case of subtraction. Fail if both operands contain constants.
9813         (create_data_ref): Fail if analyze_offset fails.
9814
9815 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
9816
9817         * config/i386/i386.md (frndintxf2): Rename to ...
9818         (rintxf2): ... this. Remove expander having same name.
9819         (rintsf2, rintdf2): Implement using SSEMODEF macro.
9820         (roundsf2, rounddf2): Ditto.
9821         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
9822         (lround<mode>di2, lround<mode>si2): Ditto.
9823
9824 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
9825
9826         * lower-subreg.c: Include except.h.
9827         (decompose_multiword_subregs): Verify that the only control flow
9828         insns we can split are loads to multi-words pseudos.
9829         Handle breaking such blocks after splitting, instead of calling
9830         find_many_sub_basic_blocks.
9831
9832         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
9833         on the new basic block.  Add a lengthy comment explaining why we
9834         thought this was necessary.
9835         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
9836
9837 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
9838
9839         PR c++/30924
9840         * tree.c (walk_type_fields): Recurse into the element type of
9841         ARRAY_TYPEs if there is a pointer set.
9842
9843 2007-03-10  Dirk Mueller  <dmueller@suse.de>
9844
9845         * c-common.c (warn_logical_operator): Fix condition.
9846
9847 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
9848
9849         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
9850         quotation mark.
9851         * config/darwin.c (machopic_select_section): Remove superfluous
9852         argument in call to categorize_decl_for_section.  Remove unused
9853         variable shlib.
9854
9855 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
9856
9857         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
9858         defined.
9859         * configure: Regenerate.
9860
9861 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
9862
9863         PR target/31101
9864         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
9865         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
9866         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
9867         Add LABEL_NUSES to emitted label.
9868         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
9869         branch probability value to emitted jump insn.
9870         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
9871         Do not check life information and do not re-arrange input operands
9872         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
9873
9874 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9875
9876         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
9877         the change of decode_asm_operands.
9878
9879 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9880
9881         * mode-switching.c (create_pre_exit): Skip blockage insn.
9882
9883 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
9884
9885         * tree-pass.h (TODO_update_smt_usage): Remove.
9886         Update all users.
9887         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
9888         argument SOME.
9889         Update all users.
9890
9891 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9892
9893         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
9894         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
9895         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
9896         SOM target.
9897
9898 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
9899
9900         * gcc.c: Document %{, in big comment at top.
9901         (input_suffix_matches): Remove special handling for .s and
9902         .S.
9903         (input_spec_matches): New.
9904         (handle_braces): Handle %{,.
9905         (validate_switches): ',' indicates a value which is not a switch.
9906         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
9907         to detect assembler input.
9908         * config/i386/sol2.h (CPP_SPEC): Likewise.
9909         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
9910         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
9911         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
9912         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
9913         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
9914         -m64 causes deployment target to default to 10.5.
9915         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9916
9917 2007-03-09  Richard Henderson  <rth@redhat.com>
9918
9919         PR target/26090
9920         * target.h (targetm.asm.out.reloc_rw_mask): New.
9921         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
9922         (TARGET_ASM_OUT): Use it.
9923         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
9924         * varasm.c (categorize_decl_for_section): Remove shlib argument;
9925         use the new reloc_rw_mask target hook instead.
9926         (default_section_type_flags_1): Merge into...
9927         (default_section_type_flags): ... here.
9928         (decl_readonly_section_1): Merge into...
9929         (decl_readonly_section): ... here.
9930         (default_elf_select_section_1): Merge into...
9931         (default_elf_select_section): ... here.
9932         (default_unique_section_1): Merge into...
9933         (default_unique_section): ... here.
9934         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
9935         (default_select_rtx_section): Use it.
9936         (default_elf_select_rtx_section): Likewise.
9937         * output.h: Update to match.
9938         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
9939         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
9940         (TARGET_ASM_RELOC_RW_MASK): New.
9941         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
9942         to categorize_decl_for_section.
9943         (x86_64_elf_unique_section): Likewise.
9944         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
9945         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
9946         (TARGET_ASM_RELOC_RW_MASK): New.
9947         * config/ia64/ia64.c (ia64_rwreloc_select_section,
9948         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
9949         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
9950         (TARGET_RWRELOC): Remove.
9951         (ia64_section_type_flags): Adjust call to default_section_type_flags.
9952         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9953         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
9954         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
9955         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
9956         (rs6000_xcoff_select_section): Use decl_readonly_section.
9957         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
9958         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9959         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
9960         (TARGET_SECTION_TYPE_FLAGS): Remove.
9961         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
9962
9963 2007-03-09  Roger Sayle  <roger@eyesopen.com>
9964
9965         * fold-const.c (fold_comparison): Remove compile-time evaluation of
9966         complex constant equality/inequality comparisons for here.
9967         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
9968         known at compile-time or can be simplified to a scalar comparison.
9969         (fold_relational_const): Move compile-time evaluation of complex
9970         constant equality/inequality comparisons to here.
9971
9972 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9973
9974         PR rtl-optimization/30643
9975         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
9976         dest_addr_elt.
9977         (fold_rtx): Recurse, like before 2006-11-03.
9978
9979 2007-03-09  DJ Delorie  <dj@redhat.com>
9980
9981         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
9982         m32c-pragma.o.
9983
9984 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
9985
9986         PR tree-optimization/30375
9987         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
9988         LHS of statements is not the same.
9989         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
9990
9991 2007-03-09  Chao-ying Fu  <fu@mips.com>
9992
9993         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
9994         REV 2.
9995         * doc/invoke.texi (-mdspr2): Document new option.
9996         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
9997         New unspec for DSP REV 2.
9998         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
9999         these instructions are extended in DSP REV 2.
10000         (mips-dspr2.md): Include.
10001         * config/mips/mips.opt (mdspr2): New option.
10002         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
10003         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
10004         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
10005         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
10006         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
10007         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
10008         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
10009         and 2 builtins.
10010         (bdesc_map): Add one field of unsupported_target_flags.
10011         (bdesc_arrays):  Update entries to have extra fields.  Add
10012         dsp_32only_bdesc.
10013         (mips_init_builtins): Initialize new function types.
10014         Check unsupported_target_fileds to filter out builtins.
10015         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
10016         TARGET_DSPR2.
10017         (ASM_SPEC): Pass mdspr2 to the assembler.
10018         * config/mips/mips-dspr2.md: New file.
10019
10020 2007-03-09  Sa Liu  <saliu@de.ibm.com>
10021
10022         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
10023
10024 2007-03-09  Ian Lance Taylor  <iant@google.com>
10025
10026         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
10027         argument) like -Wstrict-overflow=2.
10028         * doc/invoke.texi (Warning Options): Update documentation.
10029
10030 2007-03-09  Dirk Mueller  <dmueller@suse.de>
10031
10032         PR c++/17946
10033         * doc/invoke.texi (-Wlogical-op): Document.
10034         * common.opt (-Wlogical-op): New.
10035         * c-common.h (warn_logical_operator): Declare.
10036         * c-common.c (warn_logical_operator): Define.
10037         * c-typeck.c (parser_build_binary_op): Call
10038         warn_logical_operator.
10039
10040 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10041
10042         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
10043         * final.c (final_scan_insn): Test for non-"" file name.
10044
10045 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
10046
10047         * doc/loop.texi: Document the Omega linear constraints solver.
10048         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
10049         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
10050         omega-hash-table-size, omega-max-keys, and
10051         omega-eliminate-redundant-constraints.
10052         * tree-pass.h (pass_check_data_deps): Declared.
10053         * omega.c: New.
10054         * omega.h: New.
10055         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
10056         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
10057         pass_check_data_deps): New.
10058         * tree-data-ref.c (init_data_ref): Remove declaration.
10059         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
10060         (analyze_array): Renamed init_array_ref, move up initializations.
10061         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
10062         Removed arguments that are set to NULL.
10063         (analyze_indirect_ref): Correct indentation, correct call to
10064         init_pointer_ref.
10065         (object_analysis): Call init_array_ref instead of analyze_array.
10066         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
10067         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
10068         of DR_ACCESS_FNS_ADDR.
10069         (init_omega_eq_with_af, omega_extract_distance_vectors,
10070         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
10071         ddr_consistent_p): New.
10072         (compute_affine_dependence): Check consistency of ddrs when
10073         flag_check_data_deps is passed.
10074         (analyze_all_data_dependences): Uncomment.
10075         (tree_check_data_deps): New.
10076         * tree-data-ref.h: Include omega.h.
10077         (DR_ACCESS_FNS_ADDR): Removed.
10078         (data_dependence_relation): Add inner_loop.
10079         (DDR_INNER_LOOP): New.
10080         * common.opt (fcheck-data-deps): New.
10081         * tree-flow.h (tree_check_data_deps): Declare.
10082         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
10083         (OBJS-common): Depend on omega.o.
10084         (omega.o): Define.
10085         * passes.c (pass_check_data_deps): Scheduled.
10086         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
10087         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
10088         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
10089         PARAM_VECT_MAX_VERSION_CHECKS,
10090         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
10091
10092 2007-03-09  Richard Guenther  <rguenther@suse.de>
10093
10094         PR tree-optimization/30904
10095         PR middle-end/31058
10096         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
10097         the same way as *_DIV_EXPR.
10098
10099 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10100
10101         * recog.c (decode_asm_operands): No mixed declarations and code.
10102
10103 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10104
10105         * rtl.def (ASM_INPUT): Add location.
10106         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
10107         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
10108         (decode_asm_operands): Add loc operand.
10109         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
10110         * stmt.c (expand_asm): Rename to...
10111         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
10112         gen_rtx_ASM_INPUT_loc.
10113         (expand_asm_expr): Adjust.
10114         * recog.c (decode_asm_operands): Add loc operand.
10115         (check_asm_operands, extract_insn): Adjust.
10116         * reload1.c (maybe_fix_stack_asms): Likewise.
10117         * final.c (asm_insn_count): Likewise.
10118         (final_scan_insn): Output # line before and after asm.
10119
10120 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
10121
10122         * tree-ssa-structalias.c (variable_info): Remove
10123         finished_solution.
10124         (new_var_info): Ditto.
10125         (shared_bitmap_info_t): New structure.
10126         (shared_bitmap_table): New variable.
10127         (shared_bitmap_hash): New function.
10128         (shared_bitmap_eq): Ditto
10129         (shared_bitmap_lookup): Ditto.
10130         (shared_bitmap_add): Ditto.
10131         (merge_smts_into): Change to take bitmap directly.
10132         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
10133         (init_alias_vars): Init shared bitmap hashtable.
10134         (delete_points_to_sets): Delete shared bitmap hashtable.
10135         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
10136         is_aliased removal as a change that was still necessary was
10137         deleted.
10138
10139 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
10140
10141         * config/i386/i386.h (override_options): Conditionally disable
10142         x86_sahf for 64bit targets only.
10143
10144 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10145
10146         PR C/31072
10147         * c-decl.c (merge_decls): Don't call make_var_volatile.
10148         * varasm.c (make_var_volatile): Remove.
10149         * output.h (make_var_volatile): Remove.
10150
10151 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
10152
10153         PR tree-optimization/31085
10154         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
10155
10156 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10157
10158         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
10159         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
10160         ATTR_CONST_NOTHROW_LIST.
10161
10162         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
10163         FIX_TRUNC_EXPR.
10164
10165 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
10166
10167         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
10168
10169 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
10170
10171         PR 31013
10172         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
10173         is declared.
10174         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
10175         passed, use shared libgcc.
10176
10177 2007-03-08  Roger Sayle  <roger@eyesopen.com>
10178
10179         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
10180         instead of calling build2 with a GIMPLE_MODIFY_STMT.
10181         (honor_protect_cleanup_actions, lower_try_finally_switch):
10182         Likewise.
10183         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
10184         ifc_temp_var): Likewise.
10185         * tree-inline.c (setup_one_parameter): Likewise.
10186         * tree-mudflap.c (mf_decl_cache_locals,
10187         mf_build_check_statement_for): Likewise.
10188         * tree-nested.c (init_tmp_var, save_tmp_var,
10189         finalize_nesting_tree_1): Likewise.
10190         * tree-outof-ssa.c (insert_copy_on_edge,
10191         insert_backedge_copies): Likewise.
10192         * tree-profile.c (tree_gen_edge_profiler,
10193         tree_gen_ic_profiler): Likewise.
10194         * tree-scalar-evolution.c (scev_const_prop): Likewise.
10195         * tree-sra.c (sra_build_assignment): Likewise.
10196         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
10197         * tree-ssa-math-opts.c (insert_reciprocals,
10198         execute_cse_sincos_1): Likewise.
10199         * tree-tailcall.c (adjust_accumulator_values,
10200         adjust_return_value): Likewise.
10201         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
10202         * tree-vect-transform.c (vect_create_data_ref_ptr,
10203         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
10204         vect_create_epilog_for_reduction, vectorizable_reduction,
10205         vectorizable_call, vectorizable_conversion,
10206         vectorizable_assignment, vectorizable_operation,
10207         vectorizable_type_demotion, vect_gen_widened_results_half,
10208         vect_permute_store_chain, vectorizable_store,
10209         vect_setup_realignment, vect_permute_load_chain,
10210         vectorizable_load, vectorizable_condition,
10211         vect_create_cond_for_align_checks): Likewise.
10212         * tree-vrp.c (build_assert_expr_for): Likewise.
10213
10214 2007-03-08  Ian Lance Taylor  <iant@google.com>
10215
10216         * tree-vrp.c: Include "intl.h".
10217         (usable_range_p): New static function.
10218         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
10219         overflowed values, juts set *strict_overflow_p.
10220         (compare_values): Only return -2 if one of the operands is not a
10221         constant.
10222         (compare_ranges): Call usable_range_p.
10223         (compare_range_with_value): Likewise.
10224         (vrp_evaluate_conditional_warnv): Rename from
10225         vrp_evaluate_conditional.  Make static.  Change all callers.
10226         (vrp_evaluate_conditional): New function.
10227         (simplify_div_or_mod_using_ranges): Issue warning about reliance
10228         on signed overflow.
10229         (simplify_abs_using_ranges): Likewise.
10230         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
10231         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
10232         within_stmt parameter.
10233         * tree-ssa-propagate.c (fold_predicate_in): Update call to
10234         vrp_evaluate_conditional.
10235         * tree-ssa-threadedge.c
10236         (record_temporary_equivalences_from_stmts_at_dest): Change
10237         simplify parameter to take a second tree parameter.
10238         (simplify_control_stmt_condition): Likewise.
10239         (thread_across_edge): Likewise.
10240         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10241         (thread_across_edge): Likewise.
10242         * Makefile.in (tree-vrp.o): Depend upon intl.h.
10243
10244 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
10245
10246         * config/i386/i386.h (TARGET_SAHF): New define.
10247         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
10248         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
10249         (x86_sahf): New global variable.
10250         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
10251         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
10252         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
10253         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
10254         for 64-bit.
10255         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
10256         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
10257         when expanding fcomi/sahf based tests.
10258         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
10259         expanding sahf based alternative. Emit sahf based sequence when
10260         optimizing for code size.
10261         * config/i386/i386.md (x86_sahf_1): Do not disable for
10262         TARGET_64BIT, enable for TARGET_SAHF.
10263
10264 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
10265
10266         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
10267         spurious whitespace from error message.
10268
10269 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
10270
10271         PR c++/30852
10272         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
10273
10274 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
10275
10276         * c-decl.c (grokdeclarator): Disable warnings for anonymous
10277         bitfields.
10278         * tree-sra.c (instantiate_element): Propagate disabled warnings
10279         from the element itself to the created variable.
10280
10281 2007-03-07  Richard Henderson  <rth@redhat.com>
10282
10283         PR target/30848
10284         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
10285         silently fix up the stack in the case of a missing register.
10286
10287 2007-03-07  Paul Brook  <paul@codesourcery.com>
10288
10289         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
10290
10291 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
10292
10293         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
10294         New.
10295         (phase1_vrs): Use them.
10296         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
10297         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
10298         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
10299         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
10300         __gnu_Unwind_Restore_WMMXC if required.
10301         (_Unwind_VRS_Pop): Implement iWMMXt support.
10302         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
10303         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
10304         gnu_Unwind_Save_WMMXC): Define.
10305
10306 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
10307
10308         * config/vxworks.h (vxworks_override_options): Declare.
10309         (VXWORKS_OVERRIDE_OPTIONS): Use it.
10310         * config/vxworks.c: Include target.h and toplev.h.
10311         (vxworks_override_options): New function.
10312         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
10313
10314 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
10315
10316         * config/s390/s390.c (override_options): Don't emit an error when
10317         -mstack-size is used without providing -mstack-guard.
10318         (s390_emit_prologue): Choose stack_guard value automatically if not
10319         provided via command line.
10320         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
10321
10322 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
10323
10324         * config/i386/i386.c (output_set_got): Add a GOT initialization
10325         sequence for VxWorks PIC.
10326         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
10327         around labels as well as symbols.  Use gotoff_operand instead
10328         of local_symbolic_operand.
10329         (legitimize_pic_address): Use gotoff_operand instead of
10330         local_symbolic_operand.  Use @GOT accesses for labels as
10331         well as symbols.
10332         (ix86_output_addr_diff_elt): Use PC-relative rather than
10333         GP-relative offsets for VxWorks PIC.
10334         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
10335         no_new_pseudos.  Check whether the returned register is op0.
10336         * config/i386/i386.md (tablejump): Use PC-relative rather than
10337         GP-relative offsets for VxWorks PIC.
10338         * config/i386/predicates.md (gotoff_operand): New predicate.
10339
10340 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10341
10342         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
10343         before defining.
10344         * config/vxworks-dummy.h: New file.
10345         * config/i386/i386.h: Include it.
10346
10347 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
10348
10349         * dwarf2out.c (is_inlined_entry_point): New
10350         (add_high_low_attributes): Emit DW_AT_entry_pc along with
10351         DW_AT_ranges if the first subblock is the entry point.
10352
10353 2007-03-06  David Daney  <ddaney@avtrex.com>
10354
10355         * doc/install.texi (mips-*-*): Change recommended binutils
10356         version.
10357
10358 2007-03-06  Anatoly Sokolov <aesok@post.ru>
10359
10360         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
10361         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
10362         devices.
10363         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10364         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10365
10366 2007-03-06  Jan Hubicka  <jh@suse.cz>
10367
10368         * errors.h (warning, error, fatal, internal_error): Mark as cold.
10369         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
10370         are hot.
10371         (probably_cold_bb_p): Cold functions are cold.
10372         (probably_never_executed_bb_p): Cold functions are cold.
10373         (tree_bb_level_predictions): Predict calls to cold functions as not
10374         taken.
10375         (compute_function_frequency): Check hot/cold attributes.
10376         * function.h (function_frequency): Update comments.
10377         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
10378         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
10379         (c_common_att): Add cold and hot.
10380
10381         * doc/extend.texi (hot,cold attributes): Document.
10382
10383 2007-03-06  Andrew Haley  <aph@redhat.com>
10384
10385         * function.c (expand_function_end): Move blockage to just after we
10386         emit the label for the naked return from the function.
10387
10388 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10389
10390         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
10391         before redefining.
10392
10393 2007-03-06  Jan Hubicka  <jh@suse.cz>
10394
10395         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
10396         loaded for constant large models.  Non-large 64bit PIC can do.
10397         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
10398         * cmodel.h: Add LARGE PIC.
10399         * i386.md (UNSPEC_PLTOFF): New.
10400         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
10401         needed.
10402         (*call_1_rex64): Disable for large models.
10403         (*call_1_rex64_large): New.
10404         (*call_value_1_rex64): Disable for large models.
10405         (*call_value_1_rex64_large): New.
10406         (set_rip_rex4): New.
10407         (set_got_offset_rex64): New.
10408         * predicates.md (constant_call_address_operand): For large model
10409         constant calls are not possible.
10410         * i386-protos.h (construct_plt_address): Declare.
10411         * i386.c (override_options): Accept large models.
10412         (ix86_expand_prologue): Expand large PIC GOT pointer load.
10413         (legitimate_constant_p): Add new UNSPECs.
10414         (legitimate_pic_operand_p): Likewise.
10415         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
10416         (legitimize_pic_address): Do easy RIP relative way for TLS only for
10417         non-large model.
10418         (output_pic_addr_const): Add PLTOFF.
10419         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
10420         (ix86_expand_move): Legitimize pic address when in PIC mode.
10421         (construct_plt_address): New function.
10422         (ix86_expand_call): Offload the address to register and use GOT pointer
10423         for large model.
10424         * invoke.texi (mcmodel=large): Update documentation.
10425
10426 2007-03-06  Richard Henderson  <rth@redhat.com>
10427
10428         * config/i386/i386.c (x86_use_leave, x86_push_memory,
10429         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
10430         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
10431         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
10432         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
10433         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
10434         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
10435         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
10436         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
10437         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
10438         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10439         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
10440         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10441         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10442         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
10443         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
10444         x86_schedule, x86_use_bt, x86_pad_returns,
10445         x86_use_xchgb): Merge into ...
10446         (ix86_tune_features): ... here.  New array.
10447         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10448         x86_bswap): Merge into ...
10449         (ix86_arch_features): ... here.  New array.
10450         (x86_3dnow_a): Remove.
10451         (x86_accumulate_outgoing_args): Make static.
10452         (x86_arch_always_fancy_math_387): Make static.
10453         (ix86_tune_mask, ix86_arch_mask): Move ...
10454         (override_options): ... to local variables here.  Apply the
10455         appropriate mask to each element of ix86_arch_features and
10456         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
10457         as were done in the old macros.
10458         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
10459         * config/i386/i386.h (x86_use_leave, x86_push_memory,
10460         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
10461         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
10462         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
10463         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
10464         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
10465         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
10466         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
10467         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
10468         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
10469         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10470         x86_accumulate_outgoing_args, x86_prologue_using_move,
10471         x86_epilogue_using_move, x86_decompose_lea,
10472         x86_arch_always_fancy_math_387, x86_shift1,
10473         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10474         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10475         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
10476         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10477         x86_use_incdec, x86_pad_returns, x86_bswap,
10478         x86_partial_flag_reg_stall): Remove.
10479         (enum ix86_tune_indices): New.
10480         (ix86_tune_features): New.
10481         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
10482         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
10483         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
10484         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
10485         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
10486         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
10487         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
10488         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
10489         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
10490         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
10491         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
10492         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
10493         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
10494         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
10495         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
10496         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
10497         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
10498         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
10499         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
10500         TARGET_EXT_80387_CONSTANTS): Use it.
10501         (enum ix86_arch_indices): New.
10502         (ix86_arch_features): New.
10503         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
10504         TARGET_BSWAP): Use it.
10505         (ix86_tune_mask, ix86_arch_mask): Remove.
10506
10507 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
10508
10509         PR bootstrap/31020
10510         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
10511         Define using $${sysroot_headers_suffix}.
10512         * configure: Regenerate.
10513         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
10514         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
10515         defined.
10516         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
10517         * gcc.c (print_sysroot_headers_suffix): New.
10518         (option_map): Include --print-sysroot-headers-suffix.
10519         (display_help): Mention -print-sysroot-headers-suffix.
10520         (process_command): Handle -print-sysroot-headers-suffix.
10521         (do_spec_1): Append multilib directory to include-fixed path if
10522         sysroot suffixes in use.
10523         (main): Handle -print-sysroot-headers-suffix.
10524         * Makefile.in (start.encap): Don't depend on xlimits.h
10525         (xlimits.h): Remove.
10526         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
10527         limits.h for each multilib in fixinc_list.
10528         (fixinc_list, s-fixinc_list): New.
10529         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
10530         generate them for each multilib in fixinc_list.
10531         (stmp-fixproto): Use include-fixed.  Run fixproto for each
10532         multilib in fixinc_list.
10533         (mostlyclean): Don't remove xlimits.h.
10534         (clean): Remove include-fixed.
10535         (real-install-headers-tar, real-install-headers-cpio,
10536         real-install-headers-cp): Don't copy include, only include-fixed.
10537         (install-mkheaders): Depend on fixinc_list.  Don't depend on
10538         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
10539         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
10540         SYSTEM_HEADER_DIR setting in mkheaders.conf.
10541
10542 2007-03-06  Jan Hubicka  <jh@suse.cz>
10543
10544         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
10545         NANs easilly.
10546
10547 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10548
10549         * configure.ac: Allow tm_file to contain build-directory files.
10550         * configure: Regenerate.
10551         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
10552         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
10553         * config/m68k/print-sysroot-suffix.sh: New file.
10554
10555 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10556
10557         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
10558         of pic_offset_table_rtx if reload_completed.
10559         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
10560         PIC_OFFSET_TABLE_REGNUM.
10561         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
10562         return true.
10563         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
10564         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
10565
10566 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10567
10568         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10569         functions that call eh_return.
10570
10571 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10572
10573         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10574         functions that need a constant pool.
10575
10576 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10577
10578         PR target/28181
10579         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
10580         (m68k_preferred_reload_class): Likewise.
10581         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
10582         (SECONDARY_RELOAD_CLASS): Define.
10583         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
10584         (LIMIT_RELOAD_CLASS): Delete.
10585         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
10586         registers from storing bytes.
10587         (m68k_secondary_reload_class): New function.
10588         (m68k_preferred_reload_class): Likewise.
10589
10590 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10591
10592         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
10593         leaf functions.
10594         (m68k_expand_prologue): Likewise.
10595
10596 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10597
10598         * config/m68k/m68k-protos.h (output_sibcall): Declare.
10599         (mips_expand_epilogue): Add a bool parameter.
10600         (m68k_legitimize_sibcall_address): Declare.
10601         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
10602         (m68k_expand_epilogue): Add a parameter to select between sibling
10603         and normal epilogues.  Only generate a return for the latter.
10604         (m68k_ok_for_sibcall_p): New function.
10605         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
10606         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
10607         (sibcall_value, *sibcall_value): Likewise.
10608         (*call, *call_value): Require !SIBLING_CALL_P.
10609         (epilogue): Update call to m68k_expand_epilogue.
10610         (sibcall_epilogue): New pattern.
10611         * config/m68k/predicates.md (const_call_operand): Say that this
10612         predicate applies to sibling calls too.
10613         (sibcall_operand): New predicate.
10614
10615 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10616
10617         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
10618         alternatives as movsi_cf.
10619         (movsf_cf_hard): Add commentary.
10620
10621 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
10622             Richard Sandiford  <richard@codesourcery.com>
10623
10624         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
10625         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
10626         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
10627         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
10628         as being live on exit from an interrupt function.
10629         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
10630         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
10631         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
10632         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
10633         (m68k_interrupt_function_p): Globalize.
10634         (m68k_compute_frame_layout): Remove reverse mask code.
10635         (m68k_emit_movem, m68k_set_frame_related): New functions.
10636         (m68k_output_function_prologue): Delete in favor of...
10637         (m68k_expand_prologue): ...this new function.
10638         (m68k_output_function_epilogue): Delete in favor of...
10639         (m68k_expand_epilogue): ...this new function.
10640         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
10641         functions.
10642         (print_operand): Handle %?.
10643         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
10644         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
10645         (prologue, epilogue): New patterns.
10646         (return): Turn into a define_expand.
10647         (*return): New pattern, derived from old "return" pattern.  Use rte
10648         rather than rts for interrupt functions.  Only use rtd if the pop
10649         count is nonzero.
10650         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
10651         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
10652         (link, *link, unlink, *unlink, load_got): Likewise.
10653
10654 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10655
10656         PR target/23482
10657         PR target/17114
10658         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
10659         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
10660         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
10661         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
10662         and m68k_matches_u_p.
10663         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
10664         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
10665         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
10666         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
10667         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
10668         (REG_STRICT_P): New macro.
10669         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
10670         PCREL_GENERAL_OPERAND_OK.
10671         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
10672         m68k_legitimate_base_reg_p.
10673         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
10674         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
10675         (PIC_CASE_VECTOR_ADDRESS): Update comment.
10676         * config/m68k/m68k.c (m68k_address): New structure.
10677         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
10678         (m68k_decompose_index, m68k_legitimate_constant_address_p)
10679         (m68k_jump_table_ref_p, m68k_decompose_address)
10680         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
10681         (m68k_matches_u_p): New functions.
10682         (print_operand_address): Rewrite to use m68k_decompose_index.
10683
10684 2007-03-05  David Taylor  <dtaylor@emc.com>
10685
10686         * gcc.c: Correct copyright date in --version output.
10687
10688 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10689
10690         * pa.md: In unamed move patterns, disparge copies between general
10691         and floating point registers using '?' modifier.  Don't include 'f'
10692         constraint for register preferences in DImode, SImode, HImode and
10693         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
10694         Remove constraints for copies between general and floating registers
10695         in soft-float DFmode pattern.
10696         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
10697         floating register.
10698         (movsf): Likewise.
10699
10700 2007-03-05  Mike Stump  <mrs@apple.com>
10701
10702         * c-common.c (targetcm): Add.
10703         * c-opts.c (c_common_handle_option): Handle language specific
10704         target options.
10705         * opts.c (handle_option): Verify language for target options, if
10706         any are given.
10707         * opth-gen.awk: Add CL_LANG_ALL.
10708         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
10709         (TARGETCM_INITIALIZER): Add.
10710         * target.h (struct gcc_targetcm): Add.
10711         (targetcm): Add.
10712         * targhooks.c (default_handle_c_option): Add.
10713         * targhooks.h (default_handle_c_option): Add.
10714         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
10715
10716         * config/darwin.opt (iframework): Add.
10717         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
10718         * config/darwin-c.c (handle_c_option): Add.
10719         (TARGET_HANDLE_C_OPTION): Add.
10720         (targetcm): Add.
10721         * doc/invoke.texi (Darwin Options): Add -iframework.
10722
10723 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10724
10725         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
10726         conversion.
10727
10728 2007-03-05  Ian Lance Taylor  <iant@google.com>
10729
10730         * c.opt (fgnu89-inline): New option.
10731         * c-opts.c (c_common_post_options): Set default value for
10732         flag_gnu89_inline.
10733         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
10734         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
10735         inline functions.
10736         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
10737         (grokdeclarator, start_function): Likewise.
10738         * c-cppbuiltin.c (c_cpp_builtins): Define either
10739         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
10740         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
10741         (C Dialect Options): Document -fgnu89-inline.
10742         * doc/extend.texi (Function Attributes): Explain what the
10743         gnu_inline attribute does.
10744         * doc/cpp.texi (Common Predefined Macros): Document
10745         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
10746
10747 2007-03-05  Ian Lance Taylor  <iant@google.com>
10748
10749         PR tree-optimization/31034
10750         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
10751         half-range if the other side is an overflow infinity.
10752
10753 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
10754
10755         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
10756         (bfin*-linux-uclibc*): New configuration.
10757         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
10758         defining.
10759         * config/bfin/linux.h: New file.
10760         * config/bfin/libgcc-bfin.ver: New file.
10761         * config/bfin/t-bfin-uclinux: New file.
10762         * config/bfin/t-bfin-linux: New file.
10763         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
10764         (TARGET_OS_CPP_BUILTINS): New macro.
10765
10766 2007-03-05  Richard Guenther  <rguenther@suse.de>
10767
10768         * fold-const.c (fold_binary): Remove duplicate folding
10769         of comparison of non-null ADDR_EXPR against null.
10770
10771 2007-03-05  Richard Guenther  <rguenther@suse.de>
10772             Dorit Nuzman  <dorit@il.ibm.com>
10773
10774         PR tree-optimization/26420
10775         * tree-vectorizer.c (vectorize_loops): Bail out early if there
10776         are no loops in the function.  Only print the number of
10777         vectorized loops if it is greater than zero or we are supposed
10778         to print information about unvectorized loops.
10779
10780 2007-03-05  Revital Eres  <eres@il.ibm.com>
10781
10782         * gcc.dg/var-expand1.c: New test.
10783         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
10784         when an accumulator is expanded.
10785
10786 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10787
10788         PR other/30465
10789         * c-common.c (convert_and_check): Don't give warnings for
10790         conversion if 'expr' already overflowed.
10791
10792 2007-03-04  Roger Sayle  <roger@eyesopen.com>
10793
10794         PR middle-end/30744
10795         * fold-const.c (fold_comparison): Enforce type consistency when
10796         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
10797
10798 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
10799
10800         * tree-ssa-address.c (create_mem_ref): Do not put an expression
10801         containing a cast to the base of TARGET_MEM_REF.
10802
10803 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
10804
10805         * tree.c (tree_contains_struct_check_failed): Remove spurious
10806         whitespace from error message.
10807
10808 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
10809
10810         PR target/30406
10811         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
10812         instead of precision.
10813
10814 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
10815             Nathan Sidwell  <nathan@codesourcery.com>
10816
10817         * emit-rtl.c (find_auto_inc): New.
10818         (try_split): recreate REG_INC notes,
10819         Use regular for loops rather than whiles.
10820
10821 2007-03-03  Andreas Schwab  <schwab@suse.de>
10822
10823         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
10824         * configure: Regenerate.
10825
10826 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10827
10828         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
10829         flag_rounding_math, not flag_unsafe_math_optimizations.
10830
10831         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
10832         fold_build2.
10833         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
10834         alpha_fold_vector_minmax): Likewise.
10835         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10836         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
10837
10838 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10839
10840         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
10841         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
10842         if the lhs has side-effects.
10843         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
10844
10845 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10846
10847         * config/i386/i386.h (TUNEMASK): Remove define.
10848         (ARCHMASK): Remove define.
10849         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
10850          Use ix86_arch_mask variable instead of ARCHMASK.
10851         * config/i386/i386.c (override_options): Ditto.
10852         (standard_80387_constant_p): Ditto.
10853
10854 2007-03-02  Ian Lance Taylor  <iant@google.com>
10855
10856         Used signed infinities in VRP.
10857         * tree-vrp.c (uses_overflow_infinity): New static function.
10858         (supports_overflow_infinity): New static function.
10859         (make_overflow_infinity): New static function.
10860         (negative_overflow_infinity): New static function.
10861         (positive_overflow_infinity): New static function.
10862         (is_negative_overflow_infinity): New static function.
10863         (is_positive_overflow_infinity): New static function.
10864         (is_overflow_infinity): New static function.
10865         (overflow_infinity_range_p): New static function.
10866         (compare_values_warnv): New function split out of compare_values.
10867         (compare_value): Call it.
10868         (set_value_range_to_nonnegative): Add overflow_infinity
10869         parameter.  Change caller.
10870         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
10871         Change callers.
10872         (vrp_expr_computes_nonzero): Likewise.
10873         (compare_ranges, compare_range_with_value): Likewise.
10874         (compare_name_with_value, compare_names): Likewise.
10875         (vrp_evaluate_conditional): Likewise.
10876         (set_value_range): Handle infinity
10877         (vrp_operand_equal_p, operand_less_p): Likewise.
10878         (extract_range_from_assert): Likewise.
10879         (vrp_int_const_binop): Likewise.
10880         (extract_range_from_binary_expr): Likewise.
10881         (extract_range_from_unary_expr): Likewise.
10882         (extract_range_from_comparison): Likewise.
10883         (extract_range_from_expr): Likewise.
10884         (dump_value_range): Likewise.
10885         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
10886         (test_for_singularity): Likewise.
10887         (vrp_int_const_binop): Remove inline qualifier.
10888         (adjust_range_with_scev): Add comment.
10889         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10890
10891 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
10892
10893         * tree-ssa-structalias.c (could_have_pointers): Tidy.
10894         (get_constraint_for): Likewise.
10895         (do_structure_copy): Likewise.
10896         (find_func_aliases): Fix references to MODIFY_EXPR.
10897         (intra_create_variable_infos): Tidy.
10898         * tree-ssa-operands.c (add_virtual_operand): Add argument
10899         IS_CALL_SITE.
10900         When adding members of alias sets, if IS_CALL_SITE is true and
10901         the symbol is not call-clobbered, skip it.
10902         Adjust all callers.
10903
10904 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10905
10906         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
10907         entry by means of emit_insn_at_entry.
10908
10909 2007-03-02  Richard Henderson  <rth@redhat.com>
10910
10911         * expr.h (promoted_input_arg): Remove decl.
10912         * function.c (promoted_input_arg): Merge into ...
10913         * combine.c (setup_incoming_promotions): ... only caller.
10914         Rearrange to avoid double loop.
10915
10916 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10917             Peter Bergner  <bergner@vnet.ibm.com>
10918             Janis Johnson  <janis187@us.ibm.com>
10919
10920         * config/rs6000/dfp.md: New file.
10921         * config/rs6000/rs6000.md: Include dfp.md.
10922         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
10923         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
10924         and TDmode decimal float modes in FP registers.
10925         (num_insns_constant): Likewise.
10926         (rs6000_legitimate_offset_address_p): Likewise.
10927         (rs6000_legitimize_address): Likewise.
10928         (rs6000_legitimize_reload_address): Likewise.
10929         (rs6000_legitimate_address): Likewise.
10930         (rs6000_emit_move): Likewise.
10931         (function_arg_boundary): Likewise.
10932         (function_arg_advance): Likewise.
10933         (rs6000_darwin64_record_arg_recurse): Likewise.
10934         (function_arg): Likewise.
10935         (rs6000_gimplify_va_arg): Likewise.
10936         (rs6000_split_multireg_move): Likewise.
10937         (rs6000_output_function_epilogue): Likewise.
10938         (rs6000_output_function_epilogue): Likewise.
10939         (rs6000_register_move_cost): Likewise.
10940         (rs6000_function_value): Likewise.
10941         (rs6000_libcall_value): Likewise.
10942
10943 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10944
10945         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
10946
10947 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10948
10949         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
10950         Use $MULTIDIR to choose between the kernel and RTP headers,
10951         and use $WIND_BASE and $WIND_USR to locate them.
10952
10953 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10954
10955         * config/i386/i386.c (override_options): Put initialization of
10956         ix86_tune_mask and ix86_arch_mask to the correct place.
10957
10958 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10959             Michael Meissner  <michael.meissner@amd.com>
10960
10961         PR target/31019
10962         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
10963         (ARCHMASK): Define.
10964         (TARGET_CMOVE): Use ARCHMASK.
10965         (TARGET_CMPXCHG): Ditto.
10966         (TARGET_CMPXCHG8B): Ditto.
10967         (TARGET_XADD): Ditto.
10968         (TARGET_BSWAP): Ditto.
10969         * config/i386/i386.c (ix86_tune_mask): New global variable.
10970         (ix86_arch_mask): Ditto.
10971         (override_options): Initialize ix86_tune_mask and
10972         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
10973         target_flags.
10974
10975 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10976
10977         PR 30992
10978         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
10979
10980 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
10981
10982         * target.h (init_dwarf_reg_sizes_extra): New target hook.
10983         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
10984         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
10985         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
10986         hook.
10987         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
10988         rs6000_init_dwarf_reg_sizes_extra): New.
10989         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
10990         SPE register high parts.
10991
10992 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
10993
10994         * Makefile.in: Add install-pdf target as
10995         copied from automake v1.10 rules.
10996         * configure.ac: Add install-pdf to target list.
10997         * configure: Regenerate.
10998
10999 2007-03-01  Paul Brook  <paul@codesourcery.com>
11000
11001         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
11002         modes to LDRD for DImode.
11003         (output_move_double): Fixup out of range ldrd/strd.
11004         (vfp_secondary_reload_class): Rename...
11005         (coproc_secondary_reload_class): ... to this.  Add wb argument.
11006         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
11007         coproc_secondary_reload_class for CLASS_IWMMXT.
11008         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
11009         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
11010
11011 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
11012
11013         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
11014         factor by the estimated number of iterations.
11015         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
11016         prefetch latency.
11017
11018         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
11019         decode_caches_intel, detect_caches_intel): New functions.
11020         (host_detect_local_cpu): Use detect_caches_amd and
11021         detect_caches_intel.
11022
11023 2007-03-01  Richard Henderson  <rth@redhat.com>
11024
11025         * expr.c (emit_move_complex_push): Export.
11026         (emit_move_complex_parts): Split out from ...
11027         (emit_move_complex): ... here.
11028         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
11029         * config/i386/i386.md (movcdi): New.
11030
11031 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
11032
11033         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
11034         size of mode1 to check for tieable modes in MMX case.
11035
11036 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
11037
11038         * Makefile.in (rtlanal.o): Depend on tree.h.
11039         * rtl.h (offset_within_section_p, split_const): Declare.
11040         * rtlanal.c: Include tree.h.
11041         (offset_within_block_p): New function, taken from
11042         mips_offset_within_object_p.
11043         (split_const): New function, taken from mips_split_const.
11044         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
11045         Declare.
11046         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
11047         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
11048         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
11049         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
11050         (m68k_illegitimate_symbolic_constant_p): New function.
11051         * config/m68k/m68k.md (movsi): Remove misleading predicates.
11052         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
11053         symbolic constant that might be outside the symbol's section,
11054         move the symbol first and then add the offset.
11055         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
11056         Override.
11057         * config/mips/mips.c (mips_split_const): Delete.
11058         (mips_offset_within_object_p): Delete.
11059         (mips_symbolic_constant_p): Use offset_within_section_p and
11060         split_const instead of mips_offset_within_object_p and
11061         mips_split_const.
11062         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
11063         (mips_legitimize_const_move, print_operand_reloc)
11064         (mips_dangerous_for_la25_p): Use split_const instead of
11065         mips_split_const.
11066
11067 2007-02-28  Eric Christopher  <echristo@apple.com>
11068
11069         * Makefile.in (install-include-dir): Don't rm -rf include.
11070
11071 2007-02-28  Richard Guenther  <rguenther@suse.de>
11072
11073         PR middle-end/30364
11074         * fold-const.c (fold_binary): Do not associate expressions
11075         with more than one variable for integer types that do not wrap.
11076
11077 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
11078
11079         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
11080         Delete, and replace with...
11081         (fold_builtin_call_array): This.  Update callers to use it.
11082         * fold-const.c (fold_build_call_list): Delete, and replace with...
11083         (fold_build_call_array): This.
11084         (fold_build_call_list_initializer): Delete, and replace with...
11085         (fold_build_call_array_initializer): This.
11086         * tree.h: Update declarations to reflect above changes.
11087
11088         * c-typeck.c (build_function_call): Store converted arguments
11089         in a stack-allocated array instead of building a list.
11090         (convert_arguments): Store arguments in the array passed in as an
11091         argument, and return the actual number of arguments.
11092         * c-format.c: (check_function_format): Pass arguments in an
11093         array instead of a list.
11094         * c-common.c (check_function_nonnull): Likewise.
11095         (check_function_sentinel): Likewise.
11096         (check_function_arguments): Likewise.
11097         * c-common.h: Update declarations to reflect above changes.
11098
11099 2007-02-28  Jan Hubicka  <jh@suse.cz>
11100
11101         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
11102         PRED_NEGATIVE_RETURN): Update outcomes.
11103
11104 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
11105
11106         * calls.c (emit_library_call_value_1): Handle partial registers
11107         correctly when building up CALL_INSN_FUNCTION_USAGE.
11108
11109 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11110
11111         * pa/predicates.md (move_src_operand): Allow zero for mode.
11112         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
11113         move pattern.
11114
11115 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
11116
11117         PR target/30970
11118         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
11119         *movv2df_internal): Enable pattern only for valid operand
11120         combinations.
11121         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
11122         tie only 128bit modes. For MMX registers, tie only 64bit modes.
11123
11124 2007-02-27  Mike Stump  <mrs@apple.com>
11125
11126         * config/darwin-crt3.c: Avoid compilation when compiling for a
11127         kext multilib.
11128
11129 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
11130
11131         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
11132         FIXED_INCLUDE_DIR.
11133         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
11134         for fixed headers and limits.h.
11135         (install-include-dir, install-headers-tar, install-headers-cpio,
11136         install-headers-cp, real-install-headers-tar,
11137         real-install-headers-cpio, real-install-headers-cp): Handle
11138         include-fixed as well as include.
11139         (install-mkheaders): Don't install files that go only in include
11140         not include-fixed.
11141         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
11142         from GCC_INCLUDE_DIR.
11143         * gcc.c (process_command): Remove special -BstageN/ handling.
11144         (do_spec_1): Add include-fixed directories.
11145
11146 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11147
11148         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
11149         _smulsi3_highpart.
11150         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
11151         New functions.
11152         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
11153         patterns.
11154
11155 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
11156
11157         * c-common.c (get_priority): Add check for
11158         SUPPORTS_INIT_PRIORITY.
11159
11160 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11161
11162         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
11163
11164         * config/bfin/bfin.c: Include "cfglayout.h".
11165         (MAX_LSETUP_DISTANCE): New macro.
11166         (struct loop_info): New members incoming, incoming_src and
11167         incoming_dest.  Delete member predecessor.
11168         (length_for_loop): New function.
11169         (bfin_optimize_loop): Handle more different loop structures.
11170         (bfin_discover_loop): Rework detection of predecessor blocks by
11171         examining incoming edges.
11172         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
11173         bfin_reorg_loops.
11174         (bfin_reorder_loops): New function.
11175         (bfin_reorg_loops): Use these three new functions.
11176
11177         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
11178         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
11179         (CONSTRAINT_LEN): Add entry for 'q'.
11180         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
11181         Add 'q' constraints.
11182         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
11183         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
11184
11185         * config/bfin/bfin.md (add_with_carry): New pattern.
11186         (s_or_u, su_optab, su_modifier): New code macros/attrs.
11187         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
11188         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
11189         support unsigned multiplies too.  Removed incorrect commutativity from
11190         operand 1 constraint where appropriate.
11191         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
11192         patterns.
11193         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
11194         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
11195         New patterns.
11196         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
11197         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
11198         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
11199         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
11200         usmulhisi_hh_huh): New patterns.
11201
11202         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
11203         lshifthi3): Fix output template to use half reg for operand 2.
11204
11205         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
11206         instead of R2.
11207
11208         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
11209
11210 2007-02-27  Andreas Schwab  <schwab@suse.de>
11211
11212         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
11213
11214 2007-02-27  Jan Hubicka  <jh@suse.cz>
11215
11216         * predict.c (last_basic_block_p): Remove.
11217         (tree_estimate_probability): Update return heuristic for commonized
11218         return blocks.
11219
11220 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
11221
11222         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
11223
11224 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
11225
11226         * doc/include/gcc-common.texi (versionsubtitle): New macro.
11227         * doc/cpp.texi: Standardize title page.
11228         * doc/cppinternals.texi: Likewise.
11229         * doc/gcc.texi: Standardize title page, remove version number
11230         from copyright page.
11231         * doc/gccint.texi: Likewise.
11232         * doc/install.texi: Standardize title page, add table of
11233         contents.
11234
11235 2007-02-26  Jan Hubicka  <jh@suse.cz>
11236
11237         * predict.def: Set outcomes according to more recent results.
11238         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
11239         Remove dead predictors.
11240         * predict.c (return_prediction): Fix pasto.
11241
11242 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11243
11244         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
11245         change; avoid a memory leak when returning early.
11246
11247 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
11248
11249         * c-decl.c (static_ctors): Move to c-common.c.
11250         (static_dtors): Likewise.
11251         (finish_function): Use c_record_cdtor_fn.
11252         (build_cdtor): Move to c-common.c.
11253         (c_write_global_declarations): Use c_build_cdtor_fns.
11254         * c-common.h (static_ctors): Declare.
11255         (static_dtors): Likewise.
11256         (c_record_cdtor_fn): Likewise.
11257         (c_build_cdtor_fns): Likewise.
11258         * c-common.c (static_ctors): New variable.
11259         (static_dtors): Likewise.
11260         (c_record_cdtor_fn): New function.
11261         (build_cdtor): Move from c-decl.c
11262         (c_build_cdtor_fns): New function.
11263
11264         * output.h (assemble_addr_to_section): Declare.
11265         (get_cdtor_priority_section): Likewise.
11266         * varasm.c (assemble_addr_to_section): New function.
11267         (get_cdtor_priority_section): Likewise.
11268         (default_named_section_asm_out_destructor): Use them.
11269         (destor_dtor_section_asm_out_destructor): Likewise.
11270         (default_named_section_asm_out_constructor): Likewise.
11271         (default_ctor_section_asm_out_constructor): Likewise.
11272         * config.gcc (*-*-vxworks*): Include vxworks.o.
11273         * config/t-vxworks (vxworks.o): New target.
11274         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
11275         (TARGET_ASM_CONSTRUCTOR): Define.
11276         (TARGET_ASM_DESTRUCTOR): Likewise.
11277         (vxworks_asm_out_constructor): Declare.
11278         (vxworks_asm_out_destructor): Likewise.
11279
11280         * c-common.c (get_priority): Check that we have not just an
11281         INTEGER_CST, but an integer constant with integeral type.
11282
11283 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
11284
11285         PR tree-optimization/30938
11286         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
11287         use &dt[nargs-1] instead of &dt[nargs] in the call to
11288         vect_is_simple_use().
11289
11290 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
11291
11292         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
11293         from register elimination as PRE_MODIFY / POST_MODIFY increments.
11294         Do not attempt to handle MEM inside auto-inc expressions.
11295         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
11296         of a register modified by an auto-inc expression.  However, do handle
11297         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
11298         (elimination_effects): Prohibit elimination of a register modified
11299         by an auto-inc expression.  Disable register elimination rules whose
11300         target register is modified by an auto-inc expression with variable
11301         increment.
11302
11303 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
11304
11305         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
11306         off-by-one error.
11307         (array_at_struct_end_p): New function.
11308         (idx_infer_loop_bounds): Use it.
11309         (estimate_numbers_of_iterations_loop): Export.
11310         * predict.c (predict_loops): Use estimated_loop_iterations_int.
11311         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
11312         (tree_estimate_probability): Call record_loop_exits.
11313         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
11314         (estimated_loop_iterations, estimated_loop_iterations_int,
11315         estimated_loop_iterations_tree): New functions.
11316         (analyze_siv_subscript_cst_affine,
11317         compute_overlap_steps_for_affine_1_2,
11318         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
11319         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
11320         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
11321         (PRED_LOOP_ITERATIONS_GUESSED): New.
11322         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
11323         * cfgloop.h (estimate_numbers_of_iterations_loop,
11324         estimated_loop_iterations_int): Declare.
11325
11326 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
11327
11328         * doc/extend.texi: Document optional priority argument to
11329         constructors and destructors.
11330         * tree.c (init_priority_for_decl): Adjust GTY markers.
11331         (init_ttree): Use priority-info hash functions for
11332         init_priority_for_decl.
11333         (tree_map_eq): Rename to ...
11334         (tree_map_base_eq): ... this.
11335         (tree_map_marked_p): Rename to ...
11336         (tree_map_base_marked_p): ... this.
11337         (tree_map_base_hash): New function.
11338         (decl_init_priority_lookup): Rework.
11339         (decl_fini_priority_lookup): New function.
11340         (decl_priority_info): New function.
11341         (decl_init_priority_insert): Use it.
11342         (decl_fini_priority_insert): Likewise.
11343         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
11344         hierarchy.
11345         (decl_restrict_base_insert): Likewise.
11346         (decl_debug_expr_insert): Likewise.
11347         (decl_value_expr_lookup): Likewise.
11348         (decl_value_expr_insert): Likewise.
11349         * tree.h (priority_type): New type.
11350         (decl_init_priority_lookup): Use priority_type.
11351         (decl_fini_priority_lookup): New function.
11352         (decl_init_priority_insert): Use priority_type.
11353         (decl_fini_priority_insert): New function.
11354         (DECL_HAS_INIT_PRIORITY): Tweak comments.
11355         (DECL_INIT_PRIORITY): Likewise.
11356         (SET_DECL_INIT_PRIORITY): Add comment.
11357         (DECL_FINI_PRIORITY): New macro.
11358         (SET_DECL_FINI_PRIORITY): Likewise.
11359         (DEFAULT_INIT_PRIORITY): Document.
11360         (MAX_INIT_PRIORITY): Likewise.
11361         (MAX_RESERVED_INIT_PRIORITY): Likewise.
11362         (tree_map_base): New type.
11363         (tree_map_base_eq): New function.
11364         (tree_map_base_hash): Likewise.
11365         (tree_map_base_marked_p): Likewise.
11366         (tree_map): Inherit from tree_map_base.
11367         (tree_map_eq): Make it a macro.
11368         (tree_map_marked_p): Likewise.
11369         (tree_int_map): Inherit from tree_map_base.
11370         (tree_int_map_eq): Make it a macro.
11371         (tree_int_map_hash): Likewise.
11372         (tree_int_map_marked_p): Likewise.
11373         (tree_priority_map): New type.
11374         (tree_priority_map_eq): New macro.
11375         (tree_priority_map_hash): Likewise.
11376         (tree_priority_map_marked_p): Likewise.
11377         * varasm.c (emults_decl): Adjust for refactoring of tree_map
11378         hierarchy.
11379         (emutls_common_1): Likewise.
11380         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
11381         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
11382         of tree_map hierarchy.
11383         * tree-cfg.c (move_stmt_r): Likewise.
11384         (new_label_mapper): Likewise.
11385         * c-tree.h (c_expand_body): Move to ...
11386         * c-common.h (c_expand_body): ... here.
11387         * c-decl.c (c_expand_body): Move to ...
11388         * c-common.c (c_expand_body): ... here.
11389         (c_common_attribute_table): Allow 1 argument for the constructor
11390         and destructor attributes.
11391         (get_priority): New function.
11392         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
11393         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
11394
11395 2007-02-24  Jan Hubicka  <jh@suse.cz>
11396
11397         PR middle-end/30509
11398         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
11399
11400 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11401             Jan Hubicka  <jh@suse.cz>
11402
11403         PR target/30778
11404         * i386.c (counter_mode): New function.
11405         (expand_set_or_movmem_via_loop): Use it.
11406         (expand_movmem_epilogue): Likewise; fix pasto.
11407         (ix86_expand_movmem): Do emit guard even for constant counts.
11408         (ix86_expand_setmem): Likewise.
11409
11410 2007-02-25  Nick Clifton  <nickc@redhat.com>
11411
11412         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
11413         (JUMP_TABLES_IN_TEXT_SECTION): Define.
11414
11415 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11416
11417         PR target/30770
11418         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
11419         count argument with 0x10, not with 0x16.
11420         (expand_setmem_epilogue): Ditto.
11421
11422 2007-02-24  Mike Stump  <mrs@apple.com>
11423
11424         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
11425         symbols.
11426
11427 2007-02-24  Richard Guenther  <rguenther@suse.de>
11428
11429         PR middle-end/30951
11430         * fold-const.c (fold_binary): Fold x +- CST op x for
11431         EQ_EXPR and NE_EXPR.
11432
11433 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11434
11435         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
11436
11437 2007-02-24  Jan Hubicka  <jh@suse.cz>
11438
11439         * cgraphunit.c (decide_is_function_needed): Honor
11440         -fkeep-inline-functions.
11441
11442 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11443
11444         * builtins.c (fold_builtin_modf): New.
11445         (fold_builtin_2): Use it.
11446
11447 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11448
11449         * loop-iv.c (implies_p): Detect additional cases where A implies B.
11450         (determine_max_iter): Take additional LOOP arg; all callers changed.
11451         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
11452         one using simplifications.
11453         (simplify_using_initial_values): Return if the expression becomes
11454         invalid due to altered regs.
11455
11456 2007-02-23  DJ Delorie  <dj@redhat.com>
11457
11458         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
11459
11460 2007-02-23  Mike Stump  <mrs@apple.com>
11461
11462         * tlink.c (scan_linker_output): Parse linker messages from
11463         darwin9's linker better.
11464
11465 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
11466
11467         PR debug/29614
11468         * varpool.c (varpool_assemble_pending_decls):  Set
11469         varpool_last_needed_node to null.
11470
11471 2007-02-23  DJ Delorie  <dj@redhat.com>
11472
11473         * config/i386/i386.c (ix86_data_alignment): Don't specify an
11474         alignment bigger than the object file can handle.
11475
11476 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
11477
11478         PR target/30825
11479         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
11480         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
11481         (*movsf_1): Penalize MMX moves.
11482
11483 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
11484
11485         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
11486         2^32-1 or more times unless flag_unsafe_loop_optimizations.
11487
11488         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
11489
11490 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11491
11492         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
11493         (fold_builtin_1): Use them.
11494         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11495         BUILT_IN_SIGNIFICAND.
11496
11497 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
11498
11499         * config/i386/i386.c (bdesc_1arg): Initialize
11500         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
11501         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
11502         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
11503         and IX86_BUILTIN_MOVSLDUP.
11504
11505 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
11506
11507         PR rtl-optimization/30841
11508         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
11509
11510 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11511
11512         * builtins.c (fold_builtin_frexp): New.
11513         (fold_builtin_2): Use it.
11514
11515 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
11516
11517         * doc/invoke.texi (Spec Files): Document getenv spec function.
11518
11519         * gcc.c (getenv_spec_function): New function.
11520         (static_spec_functions): Add it.
11521         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
11522         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
11523         header files.
11524
11525 2007-02-22  Michael Matz  <matz@suse.de
11526
11527         PR c++/29433
11528         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
11529         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
11530
11531 2007-02-22  Ian Lance Taylor  <iant@google.com>
11532
11533         PR debug/30898
11534         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
11535         (mem_loc_descriptor): Call it.
11536
11537 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
11538             Ira Rosen  <irar@il.ibm.com>
11539
11540         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
11541
11542 2007-02-22  Ira Rosen  <irar@il.ibm.com>
11543
11544         PR tree-optimization/30843
11545         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
11546         stores only after all the group is vectorized.
11547
11548 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
11549
11550         PR tree-optimization/30858
11551         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
11552         in the reduction cycle have a single use in the loop.
11553         * tree-vectorizer.h (relevant): Add documentation.
11554
11555 2007-02-20  Mike Stump  <mrs@apple.com>
11556
11557         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
11558         * configure: Regenerate.
11559
11560 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11561
11562         Change the defaults of some parameters and options.
11563         * config/spu/spu-protos.h (spu_optimization_options): Declare.
11564         * config/spu/spu.c (spu_optimization_options): Add.
11565         (spu_override_options): Change params in spu_optimization_options.
11566         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
11567
11568         Register 127 is only 16 byte aligned when used as a frame pointer.
11569         * config/spu/spu-protos.h (spu_init_expanders): Declare.
11570         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
11571         HARD_FRAME_POINTER_REGNUM.
11572         (spu_legitimate_address):  Use regno_aligned_for_reload.
11573         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
11574         aligned when frame_pointer_needed is true.
11575         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
11576         to 8 bits.
11577         * config/spu/spu.h (INIT_EXPANDERS): Define.
11578
11579         Make sure shift and rotate instructions have valid immediate operands.
11580         * config/spu/predicates.md (spu_shift_operand): Remove.
11581         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
11582         * config/spu/constraints.md (W, O): Extend range.
11583         * config/spu/spu.md (umask, nmask): Define.
11584         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
11585         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
11586         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
11587         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
11588         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
11589         (lshr<mode>3_reg):  Fix rtl description.
11590
11591         Make sure mulhisi immediate operands are valid.
11592         * config/spu/predicates.md (imm_K_operand): Add.
11593         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
11594
11595         Generate constants using fsmbi and andi.
11596         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
11597         (print_operand, spu_split_immediate, classify_immediate,
11598         fsmbi_const_p): Handle IC_FSMBI2.
11599
11600         Correctly handle a CONST_VECTOR containing symbols.
11601         * config/spu/spu.c (print_operand): Handle HIGH correctly.
11602         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
11603         (immediate_load_p): Allow symbols that use 2 instructions to create.
11604         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
11605         with symbols when flag_pic is set.
11606         (const_vector_immediate_p): New.
11607         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
11608         accept a CONST_VECTOR with symbols.
11609         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
11610         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
11611         correctly.
11612         * config/spu/spu.md (high, low): Delete.
11613         (low_<mode>): Define.
11614
11615         Remove INTRmode and INTR_REGNUM, which didn't work.
11616         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
11617         of INTR_REGNUM.
11618         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
11619         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
11620         peephole2 pattern): Don't use INTR or 131.
11621         (movintrcc): Delete.
11622         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
11623         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
11624         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
11625         (UNSPEC_SET_INTR): Add.
11626         * config/spu/spu-modes.def (INTR): Remove.
11627
11628         More accurate warnings about run-time relocations.
11629         * config/spu/spu.c (reloc_diagnostic): Test in_section.
11630
11631         Correctly warn about immediate arguments to specific intrinsics.
11632         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
11633         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
11634         the instruction predicate.
11635
11636         Fix tree check errors with latest update.
11637         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
11638         CALL_EXPR_ARG.
11639         (spu_expand_builtin): Use CALL_EXPR_FN.
11640
11641         Add missing specific intrinsics.
11642         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
11643         si_bislede.
11644         * config/spu/spu_internals.h: Ditto.
11645
11646         Fix incorrect operand modifiers.
11647         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
11648         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
11649
11650         Optimize one case of zero_extend of a vec_select.
11651         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
11652
11653         Accept any immediate for hbr.
11654         * config/spu/spu.md (hbr):  Change s constraints to i.
11655
11656 2007-02-21  Paul Brook  <paul@codesourcery.com>
11657
11658         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
11659         condexec_count when skipping USE and CLOBBER.
11660
11661 2007-02-21  Nick Clifton  <nickc@redhat.com>
11662
11663         * common.opt (Warray-bounds): Add Warning attribute.
11664         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
11665         Likewise.
11666         (fsized-zeroes): Add Optimization attribute.
11667         (fsplit-wide-types, ftree-scev-cprop): Likewise.
11668         * c.opt (Wc++0x-compat): Add Warning attribute.
11669
11670 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
11671
11672         PR middle-end/30761
11673         * reload1.c (eliminate_regs_in_insn): In the single_set special
11674         case, attempt to re-recognize the insn before falling back to
11675         having reload fix it up.
11676
11677 2007-02-20  Eric Christopher  <echristo@gmail.com>
11678
11679         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
11680         Rewrite accordingly.
11681         (frv_read_iacc_argument): Ditto.
11682         (frv_expand_set_builtin): Take a call instead of arglist, update for
11683         above changes.
11684         (frv_expand_unop_builtin): Ditto.
11685         (frv_expand_binop_builtin): Ditto.
11686         (frv_expand_cut_builtin): Ditto.
11687         (frv_expand_binopimm_builtin): Ditto.
11688         (frv_expand_voidbinop_builtin): Ditto.
11689         (frv_expand_int_void2arg): Ditto.
11690         (frv_expand_prefetches): Ditto.
11691         (frv_expand_voidtriop_builtin): Ditto.
11692         (frv_expand_voidaccop_builtin): Ditto.
11693         (frv_expand_load_builtin): Ditto.
11694         (frv_expand_store_builtin): Ditto.
11695         (frv_expand_mdpackh_builtin): Ditto.
11696         (frv_expand_mclracc_builtin): Ditto.
11697         (frv_expand_mrdacc_builtin): Ditto.
11698         (frv_expand_mwtacc_builtin): Ditto.
11699         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
11700         calls for above.
11701
11702 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
11703
11704         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
11705         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
11706         cmpb instruction.
11707         (HAVE_GAS_DFP): Check for assembler support of decimal floating
11708         point instructions.
11709         * configure: Regenerate.
11710         * config.in: Regenerate.
11711         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
11712         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
11713         masks to power6 and power6x and to POWERPC_MASKS.
11714         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
11715         _ARCH_PWR6.
11716         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
11717         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
11718         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
11719         Access PROTOTYPE as variable, not mask.
11720
11721 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11722
11723         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
11724         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
11725         * combine.c (adjust_for_new_dest): Use it.
11726         * postreload.c (reload_combine): Likewise.
11727
11728 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11729
11730         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
11731         notes on an insn with multiple sets, even if single_set returns
11732         non-NULL for that insn.
11733
11734 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11735
11736         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
11737         scalbn and scalbln.
11738
11739 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
11740
11741         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
11742         if user didn't pass it.
11743         * config/i386/darwin.h (CC1_SPEC): Likewise.
11744         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
11745         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
11746         -mmacosx-version-min.
11747
11748 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11749             Uros Bizjak  <ubizjak@gmail.com>
11750
11751         * optabs.h (enum optab_index): Add new OTI_scalb.
11752         (scalb_optab): Define corresponding macro.
11753         * optabs.c (init_optabs): Initialize scalb_optab.
11754         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
11755         patterns.
11756         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
11757         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
11758         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
11759         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
11760         flag_unsafe_math_optimizations is set.
11761
11762         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
11763         to implement scalbf, scalb and scalbl built-ins as inline x87
11764         intrinsics.
11765
11766 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11767             DJ Delorie <dj@redhat.com>
11768
11769         PR other/30824
11770         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
11771         (diagnostic_report_diagnostic): ... here, and turn them into real
11772         errors. If warnings are inhibited, no need to do anything.
11773
11774 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
11775
11776         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
11777         better code generation.
11778
11779 2007-02-20  Ben Elliston  <bje@au.ibm.com>
11780
11781         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
11782
11783 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
11784
11785         * config/alpha/alpha.c, config/alpha/alpha.md,
11786         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
11787         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
11788         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
11789         config/arm/lib1funcs.asm: Follow spelling conventions.
11790
11791         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
11792         config/fr30/fr30.md, config/i386/i386.h,
11793         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11794         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
11795         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
11796         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
11797         config/rs6000/altivec.md, config/rs6000/rs6000.c,
11798         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
11799         config/sparc/sparc.c, config/sparc/sparc.h,
11800         config/sparc/sparc.md, config/spu/constraints.md,
11801         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
11802         conventions.
11803
11804 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
11805
11806         PR target/29943
11807         * varasm.c (use_blocks_for_decl_p): Return false for decls with
11808         alias attribute.
11809
11810 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11811
11812         * doc/invoke.texi (-ftree-lrs): Remove.
11813
11814 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
11815
11816         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
11817         NULL.
11818
11819 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
11820
11821         * config/ia64/ia64.c (ia64_expand_builtin): Use the
11822         new CALL_EXPR_FN macro for retrieving the function
11823         declaration of the input expression.
11824
11825 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11826
11827         * c.opt (Waddress): New.
11828         * common.opt (Walways-true): Delete.
11829         (Wstring-literal-comparison): Delete.
11830         * doc/invoke.texi (Warning Options): Delete -Walways-true and
11831         -Wstring-literal-comparison. Add -Waddress.
11832         (Waddress): New.
11833         (Walways-true): Delete.
11834         (Wstring-literal-comparison): Delete.
11835         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
11836         consistently instead of -Walways-true in example.
11837         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
11838         * c-typeck.c (parser_build_binary_op): Replace
11839         -Wstring-literal-comparison and -Walways-true with -Waddress.
11840         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
11841         with -Waddress.
11842
11843 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11844
11845         * tree-cfg.c (dump_function_to_file): Be prepared for functions
11846         without DECL_STRUCT_FUNCTION initialized.
11847
11848 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11849
11850         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
11851         due to calls to functions taking pointers as parameters.
11852
11853 2007-02-19  Richard Henderson  <rth@redhat.com>
11854
11855         PR debug/29558
11856         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
11857         in memory.
11858
11859 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11860
11861         * config/s390/s390.c (s390_call_saved_register_used,
11862         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
11863         accessed to the new scheme.
11864
11865 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11866
11867         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
11868         (cris_print_index, cris_print_operand, cris_print_operand_address)
11869         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
11870         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
11871         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
11872         GET_CODE () == xxx.
11873         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
11874         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
11875         GO_IF_LEGITIMATE_ADDRESS): Ditto.
11876         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
11877         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
11878         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
11879         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
11880         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
11881         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
11882         (uminsi3, call, call_value): Ditto.
11883         (define_split: indir_to_reg_split, unnamed): Ditto.
11884
11885 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
11886
11887         PR tree-optimization/30975
11888         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
11889         wrong assert.
11890
11891 2007-02-18  Eric Christopher  <echristo@gmail.com>
11892
11893         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
11894         Remove use of arglist.
11895         (mips_expand_builtin): Remove use of arglist, pass in expr.
11896         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
11897         (mips_expand_builtin_movtf): Ditto.
11898         (mips_expand_builtin_compare): Ditto.
11899
11900 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11901
11902         * tree-sra.c (sra_build_assignment): Replace assertion
11903         checking with a comment explaining why it can't be done.
11904
11905 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11906
11907         PR middle-end/30833
11908         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
11909         during CALL_EXPR representation conversion.
11910         * tree-ssa-propagate.c (set_rhs): Likewise.
11911
11912 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11913
11914         * tree-sra.c (sra_build_assignment): Disable assertion checking
11915         for now.
11916
11917 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11918
11919         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
11920         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11921         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
11922         Likewise.
11923         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
11924         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
11925         gimplify_init_ctor_eval_range, gimple_push_cleanup,
11926         gimplify_omp_for, gimplify_omp_atomic_pipeline,
11927         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
11928         force_gimple_operand): Likewise.
11929         * ipa-cp.c (constant_val_insert): Likewise.
11930         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
11931         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
11932         perfect_nestify): Likewise.
11933         * langhooks.c (lhd_omp_assignment): Likewise.
11934         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
11935         lower_copyprivate_clauses, lower_send_clauses,
11936         lower_send_shared_vars, expand_parallel_call,
11937         expand_omp_for_generic, expand_omp_for_static_nochunk,
11938         expand_omp_for_static_chunk, expand_omp_sections,
11939         lower_omp_single_copy, lower_omp_for_lastprivate,
11940         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
11941         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
11942         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
11943         Likewise.
11944
11945 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11946
11947         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
11948         config/sh/sh.md: Follow spelling conventions.
11949
11950         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
11951         config/frv/predicates.md: Follow spelling conventions.
11952
11953         * config/m68k/linux-unwind.h: Fix a comment typo.
11954         * target.h: Follow spelling conventions.
11955
11956 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11957
11958         PR rtl-optimization/28173
11959         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
11960         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
11961         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
11962         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
11963         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
11964
11965 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11966
11967         * builtins.c (fold_builtin_load_exponent): New.
11968         (fold_builtin_2): Use it.
11969
11970 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
11971
11972         PR rtl-optimization/30773
11973         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
11974         if we fail to attach a REG_EQUIV note.
11975
11976 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
11977             Roger Sayle  <roger@eyesopen.com>
11978
11979         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
11980
11981 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11982
11983         * calls.c (initialize_argument_information): Pass original EXP
11984         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
11985         code to split complex arguments here, as part of initializing the
11986         ARGS array.
11987         (expand_call): Remove code that builds a list of arguments and
11988         inserts implicit arguments into it.  Instead, just count how many
11989         implicit arguments there will be so we can determine the size of
11990         the ARGS array, and let initialize_argument_information do the work.
11991         (split_complex_values): Delete unused function.
11992
11993 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11994
11995         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
11996
11997 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11998
11999         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
12000         for arg pointer based indexed addressing.
12001
12002 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
12003
12004         * config/ia64/ia64.h, config/ia64/ia64.md,
12005         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
12006         spelling conventions.
12007
12008 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
12009
12010         * config/m68k/m68k.c (split_di): New.
12011         * config/m68k/m68k-protos.h: Declare split_di.
12012         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
12013           Improve predicate handling and split constant shifts.
12014
12015 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
12016
12017         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
12018         parameter for register bitfield operations, general predicates
12019         cleanup
12020
12021 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
12022
12023         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
12024         * config/m68k/linux-unwind.h: New file.
12025
12026 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
12027
12028         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
12029         config/i386/athlon.md, config/ia64/ia64.md,
12030         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
12031         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
12032         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
12033         tree-ssa-loop-niter.c, tree-vect-analyze.c,
12034         tree-vect-transform.c: Fix comment typos.
12035
12036 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
12037
12038         * sched-deps.c (find_insn_list): Remove.
12039         * sched-int.h: Remove the prototype for find_insn_list.
12040
12041 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
12042
12043         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
12044         to linker.
12045         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
12046         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
12047         darwin_rs6000_override_options.
12048         (C_COMMON_OVERRIDE_OPTIONS): Expect
12049         darwin_macosx_version_min to be non-NULL always.
12050         (TARGET_C99_FUNCTIONS): Likewise.
12051         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
12052         (DARWIN_MINVERSION_SPEC): New.
12053         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
12054         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
12055         to cc1*.
12056         (DARWIN_MINVERSION_SPEC): New.
12057         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
12058         value.
12059         * config/darwin-c.c (darwin_cpp_builtins): Expect
12060         darwin_macosx_version_min to be non-NULL always.
12061
12062         * config/rs6000/rs6000.c: Clean up trailing whitespace.
12063
12064 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
12065
12066         * config/i386/i386.h (x86_use_xchgb): New.
12067         (TARGET_USE_XCHGB): New macro.
12068         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
12069         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
12070         Split after reload into bswaphi for shifts of 8.
12071         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
12072         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
12073         or when optimizing for size.
12074
12075 2007-02-16  Richard Guenther  <rguenther@suse.de>
12076             Christian Bruel  <christian.bruel@st.com>
12077
12078         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
12079         DECLs but prefer SSA_NAMEs over DECLs.
12080
12081 2007-02-16  Richard Guenther  <rguenther@suse.de>
12082
12083         * tree-flow-inline.h (single_imm_use_p): Remove.
12084         (zero_imm_uses_p): Likewise.
12085         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
12086         instead of single_imm_use_p.
12087         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
12088         zero_imm_uses_p.
12089
12090 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12091
12092         PR other/27843
12093         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
12094         nested double- and backquotes.
12095
12096 2007-02-15  Roger Sayle  <roger@eyesopen.com>
12097
12098         PR middle-end/30391
12099         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
12100         should be unreachable.
12101         (build2_stat): Allow construction of MODIFY_EXPR at any time.
12102         For the time being redirect GIMPLE_MODIFY_STMT to the new
12103         (renamed) build_gimple_modify_stmt_stat.
12104         (build2_gimple_stat): Rename to...
12105         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
12106         Always build a GIMPLE_MODIFY_STMT node.
12107         * tree.h (build2_gimple, build2_gimple_stat): Delete.
12108         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
12109         declarations.
12110
12111         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
12112         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
12113         * tree-complex.c (set_component_ssa_name, expand_complex_move,
12114         expand_complex_div_wide): Likewise.
12115         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
12116         * tree-ssa-loop-im.c (schedule_sm): Likewise.
12117         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
12118         * tree-ssa-loop-manip.c (create_iv): Likewise.
12119         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
12120         abs_replacement): Likewise.
12121         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
12122         realify_fake_stores): Likewise.
12123
12124         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
12125         node rather than a GIMPLE_MODIFY_STMT node.
12126         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
12127         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
12128         Likewise.
12129         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
12130         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
12131         GIMPLE_MODIFY_STMT.
12132
12133 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12134
12135         PR middle-end/30433
12136         * fold-const.c (fold_comparison): Add back the
12137         folding of constant complex comparisions.
12138
12139 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12140
12141         PR middle-end/30729
12142         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
12143         effects unknown to this function, return early.
12144
12145 2007-02-15  Ian Lance Taylor  <iant@google.com>
12146
12147         * lower-subreg.c (move_eh_region_note): New static function.
12148         (resolve_simple_move): Call it.
12149         (decompose_multiword_subregs): Track blocks for which we resolve a
12150         simple move which is also a control flow insn.  Pass them to
12151         find_many_sub_basic_blocks.
12152         (pass_lower_subreg): Add TODO_verify_flow.
12153         (pass_lower_subreg2): Likewise.
12154
12155 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12156             Brooks Moses  <brooks.moses@codesourcery.com>
12157             Lee Millward  <lee.millward@codesourcery.com>
12158
12159         * tree.h (enum tree_code_class): Add tcc_vl_exp.
12160         (VL_EXP_CLASS_P): New.
12161         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
12162         TREE_CODE_LENGTH.
12163         (TREE_OPERAND_CHECK_CODE): Likewise.
12164         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
12165         (TREE_RTL_OPERAND_CHECK): Likewise.
12166         (tree_operand_check_failed): Make second parameter the whole tree
12167         instead of its code.  Fixed callers.
12168         (VL_EXP_CHECK): New.
12169         (TREE_OPERAND_LENGTH): New.
12170         (VL_EXP_OPERAND_LENGTH): New.
12171         (CALL_EXPR_FN): New.
12172         (CALL_EXPR_STATIC_CHAIN): New.
12173         (CALL_EXPR_ARGS): New.
12174         (CALL_EXPR_ARG): New.
12175         (call_expr_nargs): New.
12176         (CALL_EXPR_ARGP): New.
12177         (build_nt_call_list): Declare.
12178         (build_vl_exp_stat): Declare.
12179         (build_vl_exp): New.
12180         (build_call_list): Declare.
12181         (build_call_nary): Declare.
12182         (build_call_valist): Declare.
12183         (build_call_array): Declare.
12184         (call_expr_arg): Declare.
12185         (call_expr_argp): Declare.
12186         (call_expr_arglist): Declare.
12187         (fold_build_call_list): Declare.
12188         (fold_build_call_list_initializer): Declare.
12189         (fold_call_expr): Declare to replace fold_builtin.
12190         (fold_builtin_fputs): Update to agree with modified definition.
12191         (fold_builtin_strcpy): Likewise.
12192         (fold_builtin_strncpy): Likewise.
12193         (fold_builtin_memory_chk): Likewise.
12194         (fold_builtin_stxcpy_chk): Likewise.
12195         (fold_builtin_strncpy_chk): Likewise.
12196         (fold_builtin_next_arg): Likewise.
12197         (fold_build_call_expr): Declare.
12198         (fold_builtin_call_list): Declare.
12199         (fold_builtin_call_valist): Declare.
12200         (build_call_expr): Declare.
12201         (validate_arglist): Update to agree with modified definition.
12202         (tree_operand_length): New.
12203         (call_expr_arg_iterator): New.
12204         (init_call_expr_arg_iterator): New.
12205         (next_call_expr_arg): New.
12206         (first_call_expr_arg): New.
12207         (more_call_expr_args_p): New.
12208         (FOR_EACH_CALL_EXPR_ARG): New.
12209
12210         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
12211         and tcc_gimple_stmt.
12212         (tree_code_size): Update documentation.  Use sizeof (tree) rather
12213         than sizeof (char *).
12214         (tree_size): Likewise.  Add case for tcc_vl_exp.
12215         (tree_node_structure): Add case for tcc_vl_exp.
12216         (contains_placeholder_p): Likewise.
12217         (substitute_in_expr): Likewise.
12218         (substitute_placeholder_in_expr): Likewise.
12219         (stabilize_reference_1): Likewise.
12220         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
12221         to diagnose breakage of this interface for constructing CALL_EXPRs.
12222         (build_nt): Add similar assertion here.
12223         (build_nt_call_list): New.
12224         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
12225         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
12226         TREE_CODE_LENGTH.
12227         (get_callee_fndecl): Use new CALL_EXPR accessors.
12228         (tree_operand_check_failed): Change parameters to pass entire node
12229         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
12230         (process_call_operands): New.
12231         (build_vl_exp_stat): New.
12232         (build_call_list): New.
12233         (build_call_nary): New.
12234         (build_call_valist): New.
12235         (build_call_array): New.
12236         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12237         (call_expr_arglist): New.
12238
12239         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
12240         tcc_vl_exp instead of a fixed-size tcc_expression.
12241
12242         * doc/c-tree.texi (CALL_EXPR): Document new representation and
12243         accessors for CALL_EXPRs.
12244         (AGGR_INIT_EXPR): Likewise.
12245
12246 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12247             Brooks Moses  <brooks.moses@codesourcery.com>
12248             Lee Millward  <lee.millward@codesourcery.com>
12249
12250         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
12251         (expand_builtin_nonlocal_goto): Change parameter to be entire
12252         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
12253         (expand_builtin_prefetch): Likewise.
12254         (expand_builtin_classify_type): Likewise.
12255         (mathfn_built_in): Return NULL_TREE instead of 0.
12256         (expand_errno_check): Use new CALL_EXPR accessors.
12257         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
12258         Return NULL_RTX instead of 0.
12259         (expand_builtin_mathfn_2): Likewise.
12260         (expand_builtin_mathfn_3): Likewise.
12261         (expand_builtin_interclass_mathfn): Likewise.
12262         (expand_builtin_sincos): Likewise.
12263         (expand_builtin_cexpi): Likewise.
12264         (expand_builtin_int_roundingfn): Likewise.
12265         (expand_builtin_int_roundingfn_2): Likewise.
12266         (expand_builtin_pow): Likewise.
12267         (expand_builtin_powi): Likewise.
12268         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
12269         of arglist, fixing callers appropriately.  Use new CALL_EXPR
12270         accessors and constructors.  Return NULL_RTX instead of 0.
12271         (expand_builtin_strstr): Likewise.
12272         (expand_builtin_strchr): Likewise.
12273         (expand_builtin_strrchr): Likewise.
12274         (expand_builtin_strpbrk): Likewise.
12275         (expand_builtin_memcpy): Likewise.
12276         (expand_builtin_mempcpy): Likewise.
12277         (expand_builtin_mempcpy_args): New.
12278         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
12279         (expand_builtin_memmove_args): New.
12280         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
12281         (expand_movstr): Likewise.
12282         (expand_builtin_strcpy): Likewise.
12283         (expand_builtin_strcpy_args): New.
12284         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
12285         (expand_builtin_strncpy): Likewise.
12286         (expand_builtin_memset): Likewise.
12287         (expand_builtin_memset_args): New.
12288         (expand_builtin_bzero): Similarly to expand_builtin_memset.
12289         (expand_builtin_memcmp): Likewise.
12290         (expand_builtin_strcmp): Likewise.
12291         (expand_builtin_strncmp): Likewise.
12292         (expand_builtin_strcat): Likewise.
12293         (expand_builtin_strncat): Likewise.
12294         (expand_builtin_strspn): Likewise.
12295         (expand_builtin_strcspn): Likewise.
12296         (expand_builtin_args_info): Likewise.
12297         (expand_builtin_va_start): Likewise.
12298         (gimplify_va_arg_expr): Likewise.
12299         (expand_builtin_va_end): Likewise.
12300         (expand_builtin_va_copy): Likewise.
12301         (expand_builtin_frame_address): Likewise.
12302         (expand_builtin_alloca): Likewise.
12303         (expand_builtin_bswap): Likewise.
12304         (expand_builtin_unop): Likewise.
12305         (expand_builtin_fputs): Likewise.
12306         (expand_builtin_expect): Likewise.
12307         (expand_builtin_fabs): Likewise.
12308         (expand_builtin_copysign): Likewise.
12309         (expand_builtin_printf): Likewise.
12310         (expand_builtin_fprintf): Likewise.
12311         (expand_builtin_sprintf): Likewise.
12312         (expand_builtin_init_trampoline): Likewise.
12313         (expand_builtin_signbit): Likewise.
12314         (expand_builtin_fork_or_exec): Likewise.
12315         (expand_builtin_sync_operation): Likewise.
12316         (expand_builtin_compare_and_swap): Likewise.
12317         (expand_builtin_lock_test_and_set): Likewise.
12318         (expand_builtin_lock_release): Likewise.
12319         (expand_builtin): Likewise.
12320         (builtin_mathfn_code): Likewise.
12321
12322         (fold_builtin_constant_p): Pass call arguments individually instead
12323         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12324         accessors and constructors.  Return NULL_TREE instead of 0.
12325         (fold_builtin_expect): Likewise.
12326         (fold_builtin_classify_type): Likewise.
12327         (fold_builtin_strlen): Likewise.
12328         (fold_builtin_nan): Likewise.
12329         (integer_valued_real_p): Likewise.
12330         (fold_trunc_transparent_mathfn): Likewise.
12331         (fold_fixed_mathfn): Likewise.
12332         (fold_builtin_cabs): Likewise.
12333         (fold_builtin_sqrt): Likewise.
12334         (fold_builtin_cbrt): Likewise.
12335         (fold_builtin_cos): Likewise.
12336         (fold_builtin_cosh): Likewise.
12337         (fold_builtin_tan): Likewise.
12338         (fold_builtin_sincos): Likewise.
12339         (fold_builtin_cexp): Likewise.
12340         (fold_builtin_trunc): Likewise.
12341         (fold_builtin_floor): Likewise.
12342         (fold_builtin_ceil): Likewise.
12343         (fold_builtin_round): Likewise.
12344         (fold_builtin_int_roundingfn): Likewise.
12345         (fold_builtin_bitop): Likewise.
12346         (fold_builtin_bswap): Likewise.
12347         (fold_builtin_logarithm): Likewise.
12348         (fold_builtin_hypot): Likewise.
12349         (fold_builtin_pow): Likewise.
12350         (fold_builtin_powi): Likewise.
12351         (fold_builtin_exponent): Likewise.
12352         (fold_builtin_memset): Likewise.
12353         (fold_builtin_bzero): Likewise.
12354         (fold_builtin_memory_op): Likewise.
12355         (fold_builtin_bcopy): Deleted; call site changed to invoke
12356         fold_builtin_memory_op directly.
12357         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
12358         (fold_builtin_strncpy): Likewise.
12359         (fold_builtin_memcmp): Likewise.
12360         (fold_builtin_strcmp): Likewise.
12361         (fold_builtin_strncmp): Likewise.
12362         (fold_builtin_signbit): Likewise.
12363         (fold_builtin_copysign): Likewise.
12364         (fold_builtin_isascii): Likewise.
12365         (fold_builtin_toascii): Likewise.
12366         (fold_builtin_isdigit): Likewise.
12367         (fold_builtin_fabs): Likewise.
12368         (fold_builtin_abs): Likewise.
12369         (fold_builtin_fmin_fmax): Likewise.
12370         (fold_builtin_carg): Likewise.
12371         (fold_builtin_classify): Likewise.
12372         (fold_builtin_unordered_cmp): Likewise.
12373
12374         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
12375         New functions split out from fold_builtin_1.
12376         (fold_builtin_n): New.
12377         (fold_builtin_varargs): New.
12378         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
12379         instead.
12380         (fold_call_expr): New.
12381         (build_function_call_expr): Rewrite to use new helper function.
12382         (fold_builtin_call_list): New.
12383         (build_call_expr): New.
12384         (fold_builtin_call_valist): New.
12385         (rewrite_call_expr): New.
12386         (validate_arg): New.
12387         (validate_arglist): Change parameter to be entire CALL_EXPR instead
12388         of an arglist.  Change return type to bool.  Use new CALL_EXPR
12389         accessors.
12390
12391         (fold_builtin_strstr):  Pass call arguments individually instead
12392         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12393         accessors and constructors.  Return NULL_TREE instead of 0.
12394         (fold_builtin_strchr): Likewise.
12395         (fold_builtin_strrchr): Likewise.
12396         (fold_builtin_strpbrk): Likewise.
12397         (fold_builtin_strcat): Likewise.
12398         (fold_builtin_strncat): Likewise.
12399         (fold_builtin_strspn): Likewise.
12400         (fold_builtin_strcspn): Likewise.
12401         (fold_builtin_fputs): Likewise.
12402         (fold_builtin_next_arg): Likewise.
12403         (fold_builtin_sprintf): Likewise.
12404
12405         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
12406         NULL_RTX instead of 0.
12407         (expand_builtin_memory_chk): Likewise.
12408         (maybe_emit_chk_warning): Likewise.
12409         (maybe_emit_sprintf_chk_warning): Likewise.
12410
12411         (fold_builtin_object_size): Pass call arguments individually instead
12412         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12413         accessors and constructors.  Return NULL_TREE instead of 0.
12414         (fold_builtin_memory_chk): Likewise.
12415         (fold_builtin_stxcpy_chk): Likewise.
12416         (fold_builtin_strncpy_chk): Likewise.
12417         (fold_builtin_strcat_chk): Likewise.
12418         (fold_builtin_strcat_chk): Likewise.
12419         (fold_builtin_strncat_chk): Likewise.
12420         (fold_builtin_sprintf_chk): Likewise.
12421         (fold_builtin_snprintf_chk): Likewise.
12422         (fold_builtin_printf): Likewise.
12423         (fold_builtin_vprintf): Likewise.
12424
12425         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
12426         constructors.
12427         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
12428         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12429         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
12430         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
12431         (fold_unary): Likewise.
12432         (fold_binary): Likewise.
12433         (fold_ternary): Remove CALL_EXPR case, since they are no longer
12434         ternary expressions.
12435         (fold): Add logic for tcc_vl_exp.
12436         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
12437         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12438         (fold_build3_stat): Add assertion to flag broken interface for
12439         constructing CALL_EXPRs.
12440         (fold_build_call_list): New.
12441         (fold_build_call_list_initializer): New.
12442         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
12443         constructors.
12444         (fold_strip_sign_ops): Likewise.
12445
12446 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12447             Brooks Moses  <brooks.moses@codesourcery.com>
12448             Lee Millward  <lee.millward@codesourcery.com>
12449
12450         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
12451         accessors and dump arguments explicitly.
12452
12453         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
12454         TREE_CODE_LENGTH.
12455         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
12456         explicitly.
12457         (print_call_name): Use new CALL_EXPR accessors.
12458
12459         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
12460         CALL_EXPR arguments explicitly instead of as a list.  Use
12461         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12462
12463         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
12464         (vrp_visit_stmt): Likewise.
12465
12466         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
12467         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
12468         TREE_CODE_LENGTH.
12469         (force_move_till_expr): Likewise.
12470
12471         * targhooks.c (default_external_stack_protect_fail): Use
12472         build_call_expr instead of build_function_call_expr.
12473         (default_hidden_stack_protect_fail): Likewise.
12474
12475         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
12476         build the call.
12477
12478         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
12479         and walk arguments explicitly.
12480
12481         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
12482         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12483         (expand_simple_operations): Likewise.
12484         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
12485
12486         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
12487         of TREE_CODE_LENGTH.
12488         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
12489
12490         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
12491         instead of TREE_CODE_LENGTH.
12492
12493         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
12494         (tree_ic_transform): Likewise.
12495         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
12496         parameter instead of arglist.  Fix callers.
12497         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
12498         (tree_stringops_transform): Likewise.
12499         (tree_indirect_call_to_profile): Likewise.
12500         (tree_stringops_values_to_profile): Likewise.
12501
12502         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
12503         (eliminate_tail_call): Likewise.
12504
12505         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
12506
12507         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
12508         Use TREE_OPERAND_LENGTH and generalize to handle any number of
12509         operands.
12510         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
12511
12512         * omp-low.c (build_omp_barrier): Use build_call_expr.
12513         (lower_rec_input_clauses): Likewise.
12514         (lower_reduction_clauses): Likewise.
12515         (expand_parallel_call): Likewise.
12516         (maybe_catch_exception): Likewise.
12517         (expand_omp_for_generic): Likewise.
12518         (expand_omp_for_static_nochunk): Likewise.
12519         (expand_omp_sections): Likewise.
12520         (lower_omp_single_simple): Likewise.
12521         (lower_omp_single_copy): Likewise.
12522         (lower_omp_master): Likewise.
12523         (lower_omp_ordered): Likewise.
12524         (lower_omp_critical): Likewise.
12525
12526         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
12527         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
12528
12529         * tree-gimple.c (is_gimple_call_addr): Fix doc.
12530         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
12531         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
12532
12533         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
12534         and generalize to handle any number of operands.
12535         (chrec_contains_undetermined): Likewise.
12536         (tree_contains_chrecs): Likewise.
12537         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
12538
12539         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
12540
12541         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
12542         fold_call_expr instead of fold_builtin.
12543         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
12544         match declarations there.
12545         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
12546         updates.
12547
12548         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
12549         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12550
12551         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
12552         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
12553
12554         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
12555         accessors.
12556
12557         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
12558         (execute_cse_sincos): Use new CALL_EXPR accessors.
12559
12560         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
12561
12562         * gimple-low.c (lower_function_body): Use build_call_expr.
12563         (lower_builtin_setjmp): Likewise.
12564
12565         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
12566         (set_storage_via_libcall): Likewise.
12567         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
12568         instead of TREE_CODE_LENGTH.
12569         (expand_expr_real_1): Use new CALL_EXPR accessors.
12570
12571         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
12572         generalize to handle any number of operands.
12573         (TB_parent_eq): Likewise.
12574
12575         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
12576         (strip_builtin_expect): Likewise.
12577
12578         * function.c (gimplify_parameters): Use build_call_expr.
12579
12580         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
12581         instead of TREE_CODE_LENGTH.
12582
12583         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
12584         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
12585
12586         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
12587         iterators.
12588
12589         * gimplify.c (build_stack_save_restore): Use build_call_expr.
12590         (gimplify_decl_expr): Likewise.
12591         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
12592         Use new CALL_EXPR iterators.
12593         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
12594         (gimplify_modify_expr_to_memset): Likewise.
12595         (gimplify_variable_sized_compare): Likewise.
12596         (gimplify_omp_atomic_fetch_op): Likewise.
12597         (gimplify_omp_atomic_pipeline): Likewise.
12598         (gimplify_omp_atomic_mutex): Likewise.
12599         (gimplify_function_tree): Likewise.
12600
12601         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
12602         (call_expr_flags): Likewise.
12603         (expand_call): Likewise.
12604
12605         * except.c (expand_builtin_eh_return_data_regno): Pass entire
12606         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12607         accessors.
12608
12609         * coverage.c (create_coverage): Use build_call_expr.
12610
12611         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
12612         (temp_call_expr_obstack): New.
12613         (pool_copy_list): Delete.
12614         (temp_copy_call_expr): New.
12615         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
12616         CALL_EXPR accessors.  Get rid of special goo for copying argument
12617         lists and use temp_copy_call_expr instead.
12618         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
12619         CALL_EXPR accessors.
12620         (create_expression_by_pieces): Likewise.  Use build_call_array
12621         to construct the result instead of fold_build3.
12622         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
12623         dealing with argument lists.
12624         (init_pre): Remove references to expression_node_pool and
12625         list_node_pool.  Init temp_call_expr_obstack instead.
12626         (fini_pre): Remove references to expression_node_pool and
12627         list_node_pool.
12628
12629         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
12630         and walk arguments explicitly instead of as a list.
12631
12632         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
12633         (mx_register_decls): Likewise.
12634         (mudflap_register_call): Likewise.
12635         (mudflap_finish_file): Likewise.
12636
12637         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
12638         (ipa_callsite_compute_param): Likewise.
12639
12640         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
12641         accessors and constructor.
12642
12643         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
12644         accessors and constructor.
12645         (convert_tramp_reference): Likewise.
12646         (convert_call_expr): Likewise.
12647         (finalize_nesting_tree_1): Likewise.
12648
12649         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
12650         accessors.
12651
12652         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
12653
12654         * tree-inline.c (initialize_inlined_parameters): Pass entire
12655         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12656         accessors.
12657         (estimate_num_insns_1): Use new CALL_EXPR accessors.
12658         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
12659
12660         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
12661         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12662         (vectorizable_reduction): Likewise.
12663         (vectorizable_call): Use new CALL_EXPR iterators.
12664         (vectorizable_conversion): Use build_call_expr.
12665         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
12666         (vect_gen_widened_results_half): Use build_call_expr.
12667         (vect_setup_realignment): Likewise.
12668         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
12669
12670         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
12671         (pass_through_call): Likewise.
12672         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
12673         fold_builtin.
12674
12675         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
12676         (tree_gen_pow2_profiler): Likewise.
12677         (tree_gen_one_value_profiler): Likewise.
12678         (tree_gen_ic_func_profiler): Likewise.
12679         (tree_gen_average_profiler): Likewise.
12680         (tree_gen_ior_profiler): Likewise.
12681
12682         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
12683         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
12684         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12685
12686         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
12687         of TREE_CODE_LENGTH.
12688
12689         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
12690         of TREE_CODE_LENGTH.
12691
12692         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
12693         constructor.
12694         (convert_to_integer): Likewise.
12695
12696         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
12697         accessors.
12698
12699 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12700             Brooks Moses  <brooks.moses@codesourcery.com>
12701             Lee Millward  <lee.millward@codesourcery.com>
12702
12703         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
12704         accessors.
12705         * config/frv/frv.c (frv_expand_builtin): Likewise.
12706         * config/s390/s390.c (s390_expand_builtin): Likewise.
12707
12708         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
12709         (sparc_expand_builtin): Use new CALL_EXPR accessors.
12710
12711         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
12712         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
12713         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
12714         (ix86_expand_store_builtin): Likewise.
12715         (ix86_expand_unop_builtin): Likewise.
12716         (ix86_expand_unop1_builtin): Likewise.
12717         (ix86_expand_sse_compare): Likewise.
12718         (ix86_expand_sse_comi): Likewise.
12719         (ix86_expand_vec_init_builtin): Likewise.
12720         (ix86_expand_vec_ext_builtin): Likewise.
12721         (ix86_expand_vec_set_builtin): Likewise.
12722         (ix86_expand_builtin): Use new CALL_EXPR accessors.
12723
12724         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
12725         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
12726
12727         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
12728         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12729         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
12730
12731         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
12732         build_call_expr.
12733         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
12734         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
12735         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12736         (altivec_expand_abs_builtin): Likewise.
12737         (rs6000_expand_binop_builtin): Likewise.
12738         (altivec_expand_predicate_builtin): Likewise.
12739         (altivec_expand_lv_builtin): Likewise.
12740         (spe_expand_stv_builtin): Likewise.
12741         (altivec_expand_stv_builtin): Likewise.
12742         (rs6000_expand_ternop_builtin): Likewise.
12743         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
12744         (altivec_expand_st_builtin): Likewise.
12745         (altivec_expand_dst_builtin): Likewise.
12746         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
12747         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12748         (altivec_expand_vec_set_builtin): Likewise.
12749         (altivec_expand_vec_ext_builtin): Likewise.
12750         (altivec_expand_builtin): Use new CALL_EXPR accessors.
12751         (spe_expand_builtin): Likewise.
12752         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
12753         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12754         (spe_expand_evsel_builtin): Likewise.
12755         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
12756         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
12757
12758         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
12759         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12760         (arm_expand_unop_builtin): Likewise.
12761         (arm_expand_builtin): Use new CALL_EXPR accessors.
12762
12763         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
12764         accessors.
12765
12766         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
12767         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12768         (bfin_expand_unop_builtin): Likewise.
12769         (bfin_expand_builtin): Use new CALL_EXPR accessors.
12770
12771 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12772             Brooks Moses  <brooks.moses@codesourcery.com>
12773             Lee Millward  <lee.millward@codesourcery.com>
12774
12775         * c-semantics.c (build_stmt): Add internal diagnostic check.
12776
12777         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
12778         accessors.  Print arguments explicitly instead of as a list.
12779
12780         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
12781
12782         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
12783         (c_finish_omp_flish): Likewise.
12784
12785         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
12786         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
12787         instead of TREE_CODE_LENGTH.
12788         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
12789         (c_warn_unused_result): Likewise.
12790
12791 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12792
12793         PR c/26494
12794         * doc/invoke.texi (Warning Options): Remove
12795         -Werror-implicit-function-declaration.
12796         (Wimplicit-function-declaration): Update description.
12797         * opts.c (common_handle_option): Move handling of -Werror=* to...
12798         (enable_warning_as_error): ...here.
12799         * opts.h (enable_warning_as_error): Declare.
12800         * c-decl.c (implicit_decl_warning): Unless
12801         -Wno-implicit-function-declaration is given, emit a pedwarn if
12802         -std=c99 or emit a warning if -Wimplicit-function-declaration.
12803         * c.opt (Wimplicit-function-declaration): Replace
12804         mesg_implicit_function_declaration with
12805         warn_implicit_function_declaration.
12806         * c-opts.c (c_common_handle_option):
12807         -Werror-implicit-function-declaration is exactly equal as
12808         -Werror=implicit-function-declaration.
12809         (set_Wimplicit): Replace mesg_implicit_function_declaration with
12810         warn_implicit_function_declaration.
12811         (c_common_post_options): -Wimplict-function-declaration is enabled
12812         by default by -std=c99, otherwise is disabled by default.
12813         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
12814
12815 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12816
12817         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
12818         DECL on the rhs to a DECL on the lhs for debug info purposes if the
12819         former is ignored but not the latter.
12820
12821 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12822
12823         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
12824         is made and the reference doesn't use the alias set of its type,
12825         do not create the temporary using that type.
12826
12827 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
12828
12829         * jump.c: Remove prototypes for delete_computation and
12830         delete_prior_computation.
12831
12832 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12833
12834         * jump.c (get_label_after): Delete.
12835         (get_label_before, delete_computation, delete_jump,
12836         delete_prior_computation, follow_jumps): Move...
12837         * reorg.c (delete_computation, delete_prior_computation): ... here...
12838         (get_label_before, delete_jump): ... making these static ...
12839         (follow_jumps): ... and simplifying this since it only runs after
12840         reload.
12841         * rtl.h (get_label_after, get_label_before, delete_jump,
12842         follow_jumps): Delete prototypes.
12843
12844 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12845
12846         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
12847
12848 2007-02-15  Nick Clifton  <nickc@redhat.com>
12849
12850         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
12851         order to prevent it from being munged by the target.
12852
12853 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
12854
12855         * config/i386/i386.md: Remove misleading comment.
12856
12857 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12858
12859         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
12860         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
12861         invalid patterns.
12862
12863 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12864
12865         * tree-sra.c (instantiate_missing_elements): Canonicalize
12866         bit-field types.
12867         (sra_build_assignment): New.
12868         (generate_copy_inout, generate_element_copy,
12869         generate_element_zero, generate_one_element_init): Use it.
12870
12871 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12872
12873         * tree-sra.c (instantiate_missing_elements): Canonicalize
12874         bit-field types.
12875         (sra_build_assignment): New.
12876         (generate_copy_inout, generate_element_copy,
12877         generate_element_zero, generate_one_element_init): Use it.
12878
12879 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12880
12881         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
12882         limbo die nodes.
12883
12884 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
12885
12886         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
12887         types as aggregates not scalars.
12888         * function.c (assign_stack_temp_for_type): Likewise.
12889
12890 2007-02-14  Roger Sayle  <roger@eyesopen.com>
12891             Zdenek Dvorak  <dvorakz@suse.cz>
12892
12893         * tree-dump.c (dump_switch_p_1): Require exact match of the option
12894         name.
12895
12896 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
12897
12898         * passes.c (next_pass_1): Clear the next field of the copied
12899         pass structure.
12900
12901 2007-02-14  Richard Henderson  <rth@redhat.com>
12902
12903         * tree-sra.c (early_sra): New.
12904         (decl_can_be_decomposed_p): Deny va_list if early_sra.
12905         (tree_sra_early, pass_sra_early): New.
12906         * tree-pass.h (pass_sra_early): Declare.
12907         * passes.c (init_optimization_passes): Use it.
12908
12909 2007-02-14  Richard Guenther  <rguenther@suse.de>
12910
12911         * flags.h (issue_strict_overflow_warning): Convert to a macro.
12912
12913 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
12914
12915          PR tree-optimization/30771
12916         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
12917         also phi nodes.
12918         (vect_analyze_operations): Induction phis can now be marked as
12919         used_in_loop.
12920         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
12921         Update documentation accordingly.
12922
12923 2007-02-14  Nick Clifton  <nickc@redhat.com>
12924
12925         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
12926         most 3 arguments are supported.
12927         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
12928
12929 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
12930
12931         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
12932         Ensure dst->current is valid.
12933
12934 2007-02-13  Paul Brook  <paul@codesourcery.com>
12935
12936         * config.gcc: Add arm*-*-uclinux-*eabi.
12937         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
12938         (SUBTARGET_EXTRA_LINK_SPEC): Define.
12939         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
12940         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
12941         (LINK_SPEC): Define.
12942         (LIB_SPEC): Define.
12943         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
12944         register.
12945         * config/arm/uclinux-eabi.h: New file.
12946         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
12947         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
12948         based targets.
12949
12950 2007-02-13  Ian Lance Taylor  <iant@google.com>
12951
12952         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
12953         * flags.h (warn_strict_overflow): Declare.
12954         (enum warn_strict_overflow_code): Define.
12955         (issue_strict_overflow_warning): New static inline function.
12956         * opts.c (warn_strict_overflow): New variable.
12957         (common_handle_option): Handle OPT_Wstrict_overflow and
12958         OPT_Wstrict_overflow_.
12959         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
12960         OPT_Wall.
12961         * fold-const.c: Include intl.h.
12962         (fold_deferring_overflow_warnings): New static variable.
12963         (fold_deferred_overflow_warning): New static variable.
12964         (fold_deferred_overflow_code): New static variable.
12965         (fold_defer_overflow_warnings): New function.
12966         (fold_undefer_overflow_warnings): New function.
12967         (fold_undefer_and_ignore_overflow_warnings): New function.
12968         (fold_deferring_overflow_warnings_p): New function.
12969         (fold_overflow_warning): New static function.
12970         (make_range): Add strict_overflow_p parameter.  Change all
12971         callers.
12972         (extract_muldiv, extract_muldiv_1): Likewise.
12973         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
12974         tree_expr_nonnegative_p.
12975         (fold_negate_expr): Call fold_overflow_warning.
12976         (fold_range_test): Likewise.
12977         (fold_comparison): Likewise.
12978         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
12979         instead of tree_expr_nonnegative_p.
12980         (tree_expr_nonnegative_warnv_p): Rename from
12981         tree_expr_nonnegative_p, add strict_overflow_p parameter.
12982         (tree_expr_nonnegative_p): New function.
12983         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
12984         strict_overflow_p parameter.
12985         (tree_expr_nonzero_p): New function.
12986         * passes.c (verify_interpass_invariants): New static function.
12987         (execute_one_pass): Call it.
12988         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
12989         warnings.
12990         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
12991         (estimate_numbers_of_iterations): Likewise.
12992         (scev_probably_wraps_p): Likewise.
12993         * tree-ssa-ccp.c: Include "toplev.h".
12994         (evaluate_stmt): Defer fold overflow warnings until we know we are
12995         going to optimize.
12996         (struct fold_stmt_r_data): Add stmt field.
12997         (fold_stmt_r): Defer fold overflow warnings until we know we
12998         optimized.
12999         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
13000         (fold_stmt_inplace): Likewise.
13001         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
13002         (cleanup_control_expr_graph): Defer fold overflow warnings until
13003         we know we are going to optimize.
13004         * tree-cfg.c (fold_cond_expr_cond): Likewise.
13005         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
13006         Likewise.
13007         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
13008         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
13009         * tree-ssa-loop-manip.c (create_iv): Likewise.
13010         * c-typeck.c (build_conditional_expr): Likewise.
13011         (build_binary_op): Likewise.
13012         * tree-vrp.c (vrp_expr_computes_nonzero): Call
13013         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
13014         (extract_range_from_unary_expr): Likewise.
13015         * simplify-rtx.c (simplify_const_relational_operation): Warn when
13016         assuming that signed overflow does not occur.
13017         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
13018         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
13019         (fold_defer_overflow_warnings): Declare.
13020         (fold_undefer_overflow_warnings): Declare.
13021         (fold_undefer_and_ignore_overflow_warnings): Declare.
13022         (fold_deferring_overflow_warnings_p): Declare.
13023         (tree_expr_nonzero_warnv_p): Declare.
13024         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
13025         of warning options.
13026         (Warning Options): Document -Wstrict-overflow.
13027         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
13028         (tree-ssa-ccp.o): Likewise.
13029         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
13030         (fold-const.o): Depend on intl.h.
13031
13032 2007-02-13  Ian Lance Taylor  <iant@google.com>
13033
13034         PR middle-end/30751
13035         * lower-subreg.c (resolve_simple_move): Decompose subregs in
13036         addresses.
13037
13038 2007-02-13  Stuart Hastings  <stuart@apple.com>
13039
13040         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
13041
13042 2007-02-13  Richard Henderson  <rth@redhat.com>
13043
13044         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
13045         handled_component_p before looking for the indirect_ref.
13046
13047 2007-02-13  Richard Henderson  <rth@redhat.com>
13048
13049         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
13050         remove flags clobber.
13051         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
13052         (bswaphi_lowpart): New.
13053         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
13054         remove TARGET_BSWAP test.  Delete expander of the same name.
13055
13056         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
13057         (expand_unop): Use them.
13058
13059 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
13060
13061         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
13062         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
13063         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
13064         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
13065         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
13066         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
13067         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
13068         assembler dialect choice from asm templates.
13069
13070 2007-02-12  Richard Henderson  <rth@redhat.com>
13071
13072         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
13073         (fixuns_trunc<SSEMODEF>si2): Use it.
13074         * config/i386/sse.md (vec_setv4sf_0): Export.
13075         * config/i386/i386.c (ix86_build_const_vector): Export.
13076         (ix86_split_convert_uns_si_sse): Rename from
13077         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
13078         * config/i386/i386-protos.h: Update.
13079
13080 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13081
13082         PR c/29521
13083         * c-typeck.c (c_finish_return): Improve warning message.
13084
13085 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13086
13087         * alias.c (find_symbolic_term): Delete unused function.
13088
13089 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
13090
13091         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
13092         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
13093         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
13094
13095 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
13096
13097         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
13098         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
13099         the function, temporarily point the debug interface to the null one.
13100
13101 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
13102
13103         * dwarf2out.c (round_up_to_align): New static function.
13104         (field_byte_offset): Use it to round the offset.
13105
13106 2007-02-12  Richard Henderson  <rth@redhat.com>
13107
13108         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
13109         (inswl_const): Export.
13110
13111 2007-02-12  Richard Henderson  <rth@redhat.com>
13112
13113         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
13114         result mode of the libcall, convert back to outmode.
13115
13116 2007-02-12  Roger Sayle  <roger@eyesopen.com>
13117
13118         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
13119         (bswapdi2): New define_expand to implement 32-bit implementation.
13120
13121 2007-02-12  Nick Clifton  <nickc@redhat.com>
13122
13123         * doc/invoke.texi (Overall Options): Document --help=.
13124         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
13125         (cc1_options): Pass --help= on to cc1.
13126         (display_help): Add description of --help=.
13127         (process_command): Add code to handle --help=.  Allow translated
13128         --help and --target-help switches to be passed on to compiler
13129         sub-process.
13130         (main): Remove unused if statement.
13131         * opts.c (columns): Remove.
13132         (LEFT_COLUMN): Define.
13133         (wrap_help): Add columns argument.
13134         (print_filtered_help): Change parameters to be an include bitmask,
13135         an exclude bitmask, an any bitmask and the column width.  Move the
13136         code to display the params list here.  Add code to display the
13137         status of options rather than their descriptions if the quiet flag
13138         is not active.
13139         (print_specific_help): Change parameters to be an include bitmask,
13140         an exclude bitmask and an any bitmask.  Move code to look up the
13141         column width here.  Decide upon the title for an options listing.
13142         (common_handle_options): Add code to handle --help=.  Adapt code
13143         for --help and --target-help to use the revised form of the
13144         print_specific_help function.
13145         (print_help): Delete.
13146         (print_param_help): Delete.
13147         (print_switch): Delete.
13148         * opts.h (cl_lang_count): Add prototype.
13149         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
13150         CL_MAX_OPTION_CLASS): New defines.
13151         * optc-gen.awk: Add construction of cl_lang_count.
13152         * c.opt: Add Warning attribute to warning options and Optimization
13153         attribute to optimization options.
13154         * common.opt: Likewise.
13155         Add --help=.
13156         Add -fhelp and -ftarget-help as aliases for the transformed --help
13157         and --target-help options.
13158         * opt-functions.awk: Add code to handle Warning and Optimization
13159         attributes.
13160
13161 2007-02-12  Richard Henderson  <rth@redhat.com>
13162
13163         * config/alpha/constraints.md: New file.
13164         * config/alpha/alpha.c: Include tm-constrs.h.
13165         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
13166         alpha_extra_constraint): Remove.
13167         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
13168         * config/alpha/alpha-protos.h: Update.
13169         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
13170         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
13171         (EXTRA_CONSTRAINT): Remove.
13172         * config/alpha/alpha.md: Include constraints.md.
13173         (adddi splitter): Use satisfies_constraint_*.
13174         * config/alpha/predicates.md (add_operand): Likewise.
13175         (sext_add_operand, addition_operation): Likewise.
13176
13177 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
13178
13179         PR tree-optimization/29145
13180         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
13181         in our handling of restrict qualified pointers.
13182
13183 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13184
13185         PR middle-end/7651
13186         * doc/invoke.texi (Wunused-value): Update description.
13187         (Wextra): Delete item.
13188         * opts.c (set_Wextra): Don't use the value of Wextra to set the
13189         value of Wunused-value.
13190         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
13191         (c_finish_stmt_expr): Don't check extra_warnings.
13192         (emit_side_effect_warnings): The caller is responsible to check
13193         warn_unused_value.
13194
13195 2007-02-11  Roger Sayle  <roger@eyesopen.com>
13196             Matt Thomas  <matt@3am-software.com>
13197
13198         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
13199
13200 2007-02-11  Roger Sayle  <roger@eyesopen.com>
13201
13202         * simplify-rtx.c (simplify_relational_operation_1): Optimize
13203         comparisons of POPCOUNT against zero.
13204         (simplify_const_relational_operation): Likewise.
13205
13206 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13207
13208         * doc/invoke.texi (Wextra): Delete outdated paragraph.
13209
13210 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13211
13212         * dwarf2out.c (root_type): Delete unused function.
13213
13214 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13215
13216         * genattrtab.c (contained_in_p): Delete unused function.
13217         (write_expr_attr_cache): Likewise.
13218
13219 2007-02-11  Jan Hubicka  <jh@suse.cz>
13220
13221         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
13222         previous patch.
13223
13224 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
13225
13226         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
13227         to add the REG_EQ* note.
13228         * see.c (see_merge_one_use_extension): Likewise.
13229         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
13230         turn REG_EQUAL notes into REG_EQUIV notes if the target
13231         register may have more than one set.
13232         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
13233         * gcse.c (try_replace_reg): Likewise.
13234         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
13235         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
13236         more than one REG_EQUIV note.
13237         * reload1.c (gen_reload): Use set_unique_reg_note.
13238
13239 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
13240
13241         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
13242         (ix86_builtin_conversion): New function.
13243
13244 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
13245
13246         PR target/29487
13247         * tree.h (DECL_REPLACEABLE_P): New macro.
13248         * except.c (set_nothrow_function_flags): Likewise.
13249
13250 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
13251             Ira Rosen  <irar@il.ibm.com>
13252             Dorit Nuzman  <dorit@il.ibm.com>
13253
13254         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
13255         * targhooks.c (default_builtin_vectorized_conversion): New.
13256         * targhooks.h (default_builtin_vectorized_function): New declaration.
13257         * target.h (struct vectorize): Add builtin_conversion field.
13258         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
13259         stmt_vec_info_type value.
13260         (vectorizable_conversion): New declaration.
13261         * tree-vect-analyze.c (vect_analyze_operations): Add
13262         vectorizable_conversion call.
13263         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
13264         * tree-vect-transform.c (vectorizable_conversion): New function.
13265         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
13266         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
13267         mode.
13268         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
13269         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
13270         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
13271         or ALTIVEC_BUILTIN_VCFSX.
13272
13273 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13274
13275         PR target/30634
13276         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
13277         CONST_DOUBLE and operand 0 is a hard register.
13278         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
13279         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
13280         is a hard floating-point register.
13281
13282 2007-02-10  Richard Henderson  <rth@redhat.com>
13283             Jakub Jelinek  <jakub@redhat.com>
13284             Alexandre Oliva  <aoliva@redhat.com>
13285
13286         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
13287         * builtin-types.def (BT_WORD): Make unsigned.
13288         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
13289         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
13290         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
13291         * c-decl.c (grokdeclarator): Don't error if !have_tls.
13292         * c-parser.c (c_parser_omp_threadprivate): Likewise.
13293         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
13294         emulated tls.
13295         * expr.c (emutls_var_address): New.
13296         (expand_expr_real_1): Expand emulated tls.
13297         (expand_expr_addr_expr_1): Likewise.
13298         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
13299         * output.h (emutls_finish): Declare.
13300         * toplev.c (compile_file): Call it.
13301         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
13302         address before wrapping in CONST.
13303         * varasm.c (emutls_htab, emutls_object_type): New.
13304         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
13305         (get_emutls_object_name, get_emutls_object_type): New.
13306         (get_emutls_init_templ_addr, emutls_decl): New.
13307         (emutls_common_1, emutls_finish): New.
13308         (assemble_variable): When emulating tls, swap decls; generate
13309         constructor for the emutls objects.
13310         (do_assemble_alias): When emulating tls, swap decl and target name.
13311         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
13312         for emulated tls.
13313         * varpool.c (decide_is_variable_needed): Look at force_output.
13314         Recurse for emulated tls.
13315         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
13316         with decide_is_variable_needed.
13317         * emutls.c: New file.
13318         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
13319         tls_object for real tls.
13320
13321 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13322
13323         PR rtl-optimization/29599
13324         * reload1.c (eliminate_regs_in_insn): Take the destination
13325         mode into account when computing the offset.
13326
13327 2007-02-09  Stuart Hastings  <stuart@apple.com>
13328             Richard Henderson  <rth@redhat.com>
13329
13330         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13331         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13332         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
13333         fixuns_truncdfhi2): New.
13334         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
13335         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
13336         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
13337         (floatunssidf2): Allow nonimmediate source.
13338         * config/i386/sse.md (movdi_to_sse): New.
13339         (vec_concatv2di): Drop '*'.
13340         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
13341         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13342         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
13343         New.
13344         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
13345         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13346         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
13347         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
13348         (ix86_build_signbit_mask): Fix decl of v, refactor to call
13349         ix86_build_const_vector.
13350         (x86_emit_floatuns): Rewrite.
13351
13352 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13353
13354         * genautomata.c (longest_path_length): Delete unused function.
13355         (struct state): Delete unused longest_path_length.
13356         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
13357         (get_free_state): Delete unused.
13358
13359 2007-02-09  Jan Hubicka  <jh@suse.cz>
13360
13361         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
13362         * doc/invoke.texi (inline-unit-growth): Update default value.
13363
13364         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
13365         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
13366         (rebuild_cgraph_edges): Likewise.
13367         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
13368         (dump_cgraph_node): Dump frequencies.
13369         (cgraph_clone_edge): Add frequency scales.
13370         (cgraph_clone_node): Add freuqnecy.
13371         * cgraph.h (cgraph_edge): Add freuqnecy argument.
13372         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
13373         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
13374         * tree-pass.h (TODO_rebuild_frequencies): New constant.
13375         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
13376         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
13377         (save_inline_function_body): Likewise.
13378         * ipa-inline.c: inluce rtl.h
13379         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
13380         (cgraph_edge_badness): Use frequencies.
13381         (cgraph_decide_recursive_inlining): Update clonning.
13382         (cgraph_decide_inlining_of_small_function): Dump frequency.
13383         * predict.c (estimate_bb_frequencies): Export.
13384         * predict.h (estimate_bb_frequencies): Declare.
13385         * tree-inline.c (copy_bb): Watch overflows.
13386         (expand_call_inline): Update call of cgraph_create_edge.
13387         (optimize_inline_calls): Use TODO flags to update frequnecies.
13388         * passes.h: Include predict.h
13389         (init_optimization_passes): Move profile ahead.
13390         (execute_function_todo): Handle TODO_rebuild_frequencies.
13391
13392 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13393
13394         * config/alpha/alpha.c (emit_insxl): Force the first operand of
13395         the insbl or inswl pattern into a register.
13396
13397 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13398
13399         * config/ia64/ia64.md (bswapdi2): New define_insn.
13400
13401 2007-02-09  Richard Henderson  <rth@redhat.com>
13402
13403         * config/i386/constraints.md (Ym): New constraint.
13404         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
13405         (movdi_1_rex64): Split sse and xmm general register moves from
13406         memory move alternatives.  Use conditional register constraints.
13407         (movsf_1, movdf_integer): Likewise.
13408         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
13409         (movdf_integer_rex64): New.
13410         (pushsf_rex64): Fix output constraints.
13411         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
13412         (sse2_stored): Likewise.
13413         (sse2_storeq_rex64): New.
13414         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
13415         amd and not generic.
13416         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
13417         for optimize_size.  Remove SF/DFmode hack.
13418
13419 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13420
13421         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
13422         (bit_SSE4a): New.
13423
13424 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
13425             Richard Sandiford  <richard@codesourcery.com>
13426
13427         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
13428         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
13429         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
13430         m68k/t-mlib to tmake_file.
13431         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
13432         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
13433         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
13434         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
13435         variable is not empty, add t-$m68k_arch_family to tmake_file.
13436         Add t-mlibs to tmake_file.
13437         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
13438         * config/m68k/t-cf: New file.
13439         * config/m68k/t-m68k: Likewise.
13440         * config/m68k/t-mlibs: Likewise.
13441         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13442         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13443         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13444         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13445         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
13446         Delete.
13447         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
13448         (INSTALL_LIBGCC): Delete.
13449         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13450         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13451         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13452         (M68K_MLIB_CPU): Define.
13453         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13454         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13455         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
13456
13457 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
13458             Richard Guenther  <rguenther@suse.de>
13459
13460         PR middle-end/23361
13461         * fold-const.c (fold_comparison): Handle obfuscated comparisons
13462         against INT_MIN/INT_MAX.
13463         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
13464         file if a loop is removed.
13465
13466 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
13467
13468         * calls.c (store_one_arg): Pass correct alignment to
13469         emit_push_insn for non-BLKmode values.
13470         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
13471         unaligned stack slot via a suitably aligned slot.
13472
13473 2007-02-08  DJ Delorie  <dj@redhat.com>
13474
13475         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
13476         warnings.
13477         (legal_subregs): Use unsigned char, make const.
13478         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
13479
13480 2007-02-08  Paul Brook  <paul@codesourcery.com>
13481
13482         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
13483         special interworking needed.
13484
13485 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
13486
13487         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
13488         conditional to __SSE2__.
13489         (Entries below should have been added to first ChangeLog
13490         entry for amdfam10 dated 2007-02-05)
13491         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
13492         defined.
13493         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
13494         defined.
13495         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
13496         defined.
13497
13498 2007-02-08  DJ Delorie  <dj@redhat.com>
13499
13500         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
13501         * config/m32c/m32c.c (legal_subregs): New.
13502         (m32c_illegal_subreg_p): New.
13503         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
13504         unsupported subregs of hard regs.
13505
13506 2007-02-08  Jan Hubicka  <jh@suse.cz>
13507
13508         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
13509         the same one; always update histograms.
13510
13511 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13512
13513         * passes.c (init_optimization_passes): Tidy comment.
13514
13515 2007-02-08  Roger Sayle  <roger@eyesopen.com>
13516
13517         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
13518         strip zero_extend, bswap and rotates from POCOUNT's argument.
13519         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
13520         zero_extend and rotates from PARITY's argument.
13521         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
13522         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
13523         of an integer constant at compile-time.
13524
13525 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13526
13527         PR 30562
13528         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
13529         Update all users.
13530         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
13531         users.
13532         (init_alias_info):
13533         * tree-ssa-live.c (remove_unused_locals): Do not remove
13534         TREE_ADDRESSABLE variables.
13535         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
13536         * tree-ssa-operands.c (add_virtual_operand): Remove argument
13537         FOR_CLOBBER.  Update all users.
13538         If VAR has an associated alias set, add a virtual operand for
13539         it if no alias is found to conflict with the memory reference.
13540
13541 2007-02-07  Jan Hubicka  <jh@suse.cz>
13542             Robert Kidd <rkidd@crhc.uiuc.edu>
13543
13544         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
13545
13546 2007-02-07  Ian Lance Taylor  <iant@google.com>
13547
13548         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
13549
13550 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13551
13552         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
13553         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
13554         tablejumpdi, movsi_to_cr_one): Remove constraints from
13555         define_expand's match_operands.
13556
13557 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13558
13559         * global.c (compute_regsets): Move declatation of "i" inside of
13560         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
13561
13562 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
13563
13564         PR c++/30703
13565         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
13566         of INDIRECT_REF <RESULT_DECL>.
13567
13568         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
13569
13570 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
13571             Kaz Kojima  <kkojima@gcc.gnu.org>
13572
13573         PR target/29746
13574         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
13575         properly.
13576         (sh_initialize_trampoline): Add parentheses to avoid a warning.
13577
13578 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
13579
13580         * doc/loop.texi: Document possibility not to perform disambiguation
13581         of loops with multiple latches.
13582         * cfgloopmanip.c (alp_enum_p): Removed.
13583         (add_loop): Handle subloops.  Use get_loop_body_with_size.
13584         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
13585         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
13586         the new forwarder block.
13587         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
13588         Handle the case latch is NULL.
13589         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
13590         when marking loop exits.
13591         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
13592         be modified.
13593         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
13594         disambiguate_loops_with_multiple_latches.
13595         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
13596         before fix_loop_structure.
13597         * cfgloop.c: Include pointer-set.h and output.h.
13598         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
13599         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
13600         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
13601         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
13602         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
13603         disambiguate_multiple_latches, get_loop_body_with_size,
13604         disambiguate_loops_with_multiple_latches): New functions.
13605         (flow_loop_dump): Dump multiple latch edges.
13606         (flow_loop_nodes_find): Handle loops with multiple latches.
13607         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
13608         (glb_enum_p): Modified.
13609         (get_loop_body): Use get_loop_body_with_size.
13610         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
13611         (AVOID_CFG_MODIFICATIONS): New constant.
13612         (disambiguate_loops_with_multiple_latches, add_loop,
13613         get_loop_body_with_size): Declare.
13614         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
13615
13616 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
13617
13618         PR inline-asm/28686
13619         * global.c (compute_regsets): New function.
13620         (global_alloc): Refactored ELIMINABLE_REGSET
13621         and NO_GLOBAL_ALLOC_REGS computation out.
13622         (rest_of_handle_global_alloc): Call compute_regsets()
13623         for non-optimizing case.
13624
13625 2007-02-06  Richard Henderson  <rth@redhat.com>
13626
13627         * config/i386/constraints.md (Y2): Rename from Y.
13628         (Yi): New constraint.
13629         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
13630         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
13631         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
13632         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
13633         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
13634         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
13635         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
13636         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
13637         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
13638         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
13639         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
13640         vec_extractv2si_1): Change Y constraints to Y2.
13641         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
13642         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
13643         Change Y constraints to Y2.
13644         (sse2_loadld): Change Y constraints to x.
13645
13646 2007-02-06  Roger Sayle  <roger@eyesopen.com>
13647
13648         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
13649         (parity<mode>2): New define_expand using rs6000_emit_parity.
13650         * config/rs6000/rs6000.c (rs6000_emit_popcount,
13651         rs6000_emit_parity): New functions.
13652         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
13653         rs6000_emit_parity): Prototype here.
13654
13655 2007-02-06  Ian Lance Taylor  <iant@google.com>
13656
13657         * lower-subreg.c (simple_move_operand): Reject CONST.
13658         (resolve_clobber): Call validate_change rather than directly
13659         assigning to XEXP (pat, 0).
13660
13661 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13662
13663         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
13664         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
13665         (tree-cfg.o): Remove hashtab.h dependency.
13666
13667         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
13668         (struct ivopts_data): Change niters to pointer_map_t.
13669         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
13670         (niter_for_exit): Create pointer_map on demand.  Change for
13671         pointer_map API.
13672         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
13673         (free_loop_data): Destroy data->niters if created and reset field.
13674         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
13675         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
13676
13677         * tree-ssa-reassoc.c: Include pointer-set.h.
13678         (bb_rank): Change to long *.
13679         (operand_rank): Change to pointer_map_t.
13680         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
13681         (insert_operand_rank): Accept long.
13682         (operand_entry_hash, operand_entry_eq): Remove.
13683         (get_rank): Return long.  Adjust for changes above.
13684         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
13685         and operand_rank.
13686         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
13687
13688         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
13689         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
13690         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
13691         is not NULL.
13692         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
13693         directly since it cannot be NULL.
13694         (get_vi_for_tree): Rewrite for pointer_map API.
13695         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
13696         (init_alias_vars): Create vi_for_tree as pointer_map.
13697         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
13698
13699         * tree-cfg.c: Don't include hashtab.h.
13700         (edge_to_cases): Declare as pointer_map.
13701         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
13702         Delete.
13703         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
13704         (start_recording_case_labels): Create edge_to_cases as pointer_map.
13705         (end_recoding_case_labels): Cleanup edge_to_cases manually before
13706         destroying it.
13707         (record_switch_edge): Delete.
13708         (get_cases_for_edge): Adjust for pointer_map API, inline
13709         record_switch_edge (rewritten for new API), remove goto.
13710
13711 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13712
13713         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
13714         * tree-nested.c: Include pointer-set.h.
13715         (var_map_elt, var_map_eq, var_map_hash): Delete.
13716         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
13717         to pointer_map_t's.
13718         (nesting_info_bitmap_obstack): New.
13719         (lookup_field_for_decl): Adjust for pointer_map API.
13720         (lookup_tramp_for_decl): Adjust for pointer_map API.
13721         (get_nonlocal_debug_decl): Adjust for pointer_map API.
13722         (get_local_debug_decl): Adjust for pointer_map API.
13723         (convert_nl_goto_reference): Adjust for pointer_map API.
13724         (convert_nl_goto_receiver): Adjust for pointer_map API.
13725         (create_nesting_tree): Create outside GGC space.  Create bitmap on
13726         the new obstack.  Create field_map and var_map as pointer_maps.
13727         (free_nesting_tree): Adjust for changes to create_nesting_tree.
13728         (root): Delete.
13729         (lower_nested_functions): Move root here, no need to NULL it.
13730         Initialize and release the obstack.
13731
13732 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
13733
13734         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
13735         Remove prototypes and make them non-static.
13736         (struct tree_int_map): Remove.
13737         * tree.h (struct tree_int_map): Move here, turning TO into an
13738         unsigned int.
13739         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
13740
13741         * tree.h (TREE_COMPLEXITY): Remove.
13742         (struct tree_exp): Remove complexity field.
13743         * tree.c (build1_stat): Don't set it.
13744
13745 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
13746             Victor Kaplansky  <victork@il.ibm.com>
13747
13748         * tree-vectorizer.c (vect_is_simple_use): Support induction.
13749         (vect_is_simple_reduction): Support reduction with induction as
13750         one of the operands.
13751         (vect_is_simple_iv_evolution): Fix formatting.
13752         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
13753         formatting.  Don't mark induction phis for vectorization.
13754         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
13755         * tree-vect-transform.c (get_initial_def_for_induction): New function.
13756         (vect_get_vec_def_for_operand): Support induction.
13757         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
13758         induction case.
13759         (vectorizable_reduction): Support reduction with induction as one of
13760         the operands.
13761         (vectorizable_type_demotion): Use def-type of stmt argument rather
13762         than dummy def-type.
13763
13764         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
13765         flag_tree_scev_cprop.
13766         * common.opt (tree-scev-cprop): New flag.
13767
13768         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
13769         call to vect_get_new_vect_var.
13770
13771 2007-02-06  Ira Rosen  <irar@il.ibm.com>
13772
13773         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
13774         vectype is not NULL.
13775         (vect_pattern_recog_1): Likewise.
13776
13777 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13778
13779         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
13780         (fold_negate_expr): Likewise.
13781
13782 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
13783
13784         PR debug/30189
13785         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
13786         even if cv-qualification is the same.
13787
13788 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
13789
13790         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
13791         __enable_execute_stack on completion.
13792
13793 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13794
13795         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
13796         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
13797         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
13798         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
13799         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
13800         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
13801         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
13802         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
13803
13804 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13805
13806         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
13807         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
13808         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
13809         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
13810         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
13811         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
13812         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
13813         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
13814         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
13815         umuldi3_highpart_rex64, umulsi3_highpart_insn,
13816         umulsi3_highpart_zext, smuldi3_highpart_rex64,
13817         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
13818         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
13819         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
13820         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
13821         sqrtextenddfxf2_i387): Added amdfam10_decode.
13822
13823         * config/i386/athlon.md (athlon_idirect_amdfam10,
13824         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
13825         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
13826         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
13827         athlon_ivector_store_amdfam10): New define_insn_reservation.
13828         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
13829         amdfam10.
13830
13831 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13832
13833         * config/i386/athlon.md (athlon_call_amdfam10,
13834         athlon_pop_amdfam10, athlon_lea_amdfam10): New
13835         define_insn_reservation.
13836         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
13837         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
13838         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
13839
13840 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13841
13842         * config/i386/athlon.md (athlon_sseld_amdfam10,
13843         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
13844         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
13845
13846 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13847
13848         * config/i386/athlon.md (athlon_sseins_amdfam10): New
13849         define_insn_reservation.
13850         * config/i386/i386.md (sseins): Added sseins to define_attr type
13851         and define_attr unit.
13852         * config/i386/sse.md: Set type attribute to sseins for insertq
13853         and insertqi.
13854
13855 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13856
13857         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
13858         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
13859         ssecomi_load_amdfam10, ssecomi_amdfam10,
13860         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
13861         define_insn_reservation.
13862         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
13863
13864 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13865
13866         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
13867         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
13868         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
13869         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
13870         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
13871         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
13872         define_insn_reservation.
13873
13874         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
13875         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
13876         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
13877         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
13878         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
13879
13880 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13881
13882         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
13883         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
13884         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
13885         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
13886         athlon_ssemul_load_k8): Added amdfam10.
13887
13888 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13889
13890         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
13891         (x86_sse_unaligned_move_optimal): New variable.
13892
13893         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
13894         m_AMDFAM10.
13895         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
13896         for unaligned vector SSE double/single precision loads for AMDFAM10.
13897
13898 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13899
13900         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
13901         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
13902         Define TARGET_CPU_DEFAULT_amdfam10.
13903         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
13904         (processor_type): Add PROCESSOR_AMDFAM10.
13905
13906         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
13907         processor_type in config/i386/i386.h.
13908         Enable imul peepholes for TARGET_AMDFAM10.
13909
13910         * config.gcc: Add support for --with-cpu option for amdfam10.
13911
13912         * config/i386/i386.c (amdfam10_cost): New variable.
13913         (m_AMDFAM10): New macro.
13914         (m_ATHLON_K8_AMDFAM10): New macro.
13915         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
13916         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
13917         x86_promote_QImode, x86_integer_DFmode_moves,
13918         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13919         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
13920         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
13921         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
13922         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
13923         Enable/disable for amdfam10.
13924         (override_options): Add amdfam10_cost to processor_target_table.
13925         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
13926         processor_alias_table.
13927         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
13928         (ix86_adjust_cost): Add code for amdfam10.
13929
13930 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13931
13932         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
13933         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
13934         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
13935         * config/i386/i386.h: Add builtin definition for SSE4A.
13936         * config/i386/i386.md: Add support for ABM instructions
13937         (popcnt and lzcnt).
13938         * config/i386/sse.md: Add support for SSE4A instructions
13939         (movntss, movntsd, extrq, insertq).
13940         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
13941         Add -march=amdfam10 flag.
13942         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
13943         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
13944         and amdfam10.
13945         * doc/extend.texi: Add documentation for SSE4A builtins.
13946
13947 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
13948
13949         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
13950
13951 2007-02-05  Richard Guenther  <rguenther@suse.de>
13952
13953         * tree-vectorizer.h (vectorizable_function): Add argument type
13954         argument, change return type.
13955         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
13956         * tree-vect-transform.c (vectorizable_function): Handle extra
13957         argument, return vectorized function decl.
13958         (build_vectorized_function_call): Remove.
13959         (vectorizable_call): Handle calls with result and argument types
13960         differing.  Handle loop vectorization factor correctly.
13961         * targhooks.c (default_builtin_vectorized_function): Adjust for
13962         extra argument.
13963         * targhooks.h (default_builtin_vectorized_function): Likewise.
13964         * target.h (builtin_vectorized_function): Add argument type
13965         argument.
13966         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
13967         extra argument, allow vectorizing of lrintf.
13968         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
13969         documentation of target hook.
13970
13971 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
13972
13973         PR target/30665
13974         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
13975         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
13976         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
13977
13978 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13979
13980         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
13981         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
13982         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
13983         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
13984         before canonicalizing sincos to cexpi.
13985         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
13986
13987 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13988
13989         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
13990         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
13991         (alpha_init_builtins): Use alpha_add_builtins to process tables.
13992
13993 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13994
13995         * mips-tfile.c (initialize_init_file): Correct endianness test.
13996
13997 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
13998
13999         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
14000         the 'y' constraint.
14001
14002 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
14003
14004         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
14005         saves in a PARALLEL before the register assignments.
14006
14007 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
14008
14009         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
14010         DWARF_FRAME_RETURN_COLUMN to be a general register.
14011         * dwarf2out.c (init_return_column_size): New function, split from...
14012         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
14013         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
14014         to be nongeneral registers.
14015         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
14016         integer registers.
14017         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
14018         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
14019
14020 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
14021
14022         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
14023
14024 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
14025
14026         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
14027         (remove_path): Use can_remove_branch_p and remove_branch instead
14028         of loop_delete_branch_edge.
14029         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
14030         (tree_transform_and_unroll_loop): Remove dead branches immediately.
14031         Update profile using scale_dominated_blocks_in_loop.
14032         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
14033         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
14034         (can_remove_branch_p, remove_branch): Declare.
14035         * tree-cfg.c (tree_can_remove_branch_p): New function.
14036         (tree_cfg_hooks): Add tree_can_remove_branch_p.
14037         * cfgrtl.c (rtl_can_remove_branch_p): New function.
14038         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
14039
14040 2007-02-05  Jan Hubicka  <jh@suse.cz>
14041
14042         PR middle-end/30696
14043         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
14044         nodes in cgraph, don't remove offline copy of the function.
14045
14046 2007-02-04  Jan Hubicka  <jh@suse.cz>
14047
14048         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
14049         vectors might cause maybe_lookup_element_for_expr to be called
14050         on non-sra-candidate.
14051
14052 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14053
14054         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
14055         config/bfin/bfin.md, config/bfin/predicates.md: Follow
14056         spelling conventions.
14057
14058 2007-02-04  Richard Guenther  <rguenther@suse.de>
14059
14060         PR middle-end/30636
14061         * fold-const.c (try_move_mult_to_index): Make sure to not
14062         overflow one dimension of a multi-dimensional array access.
14063
14064 2007-02-04  Jan Hubicka  <jh@suse.cz>
14065
14066         * passes.c (init_optimization_passes): Reindent.
14067
14068 2007-02-04  Jan Hubicka  <jh@suse.cz>
14069             Eric Botcazou  <ebotcazou@adacore.com>
14070
14071         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
14072         (execute_fixup_cfg): Break out the abnormal goto code.
14073         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
14074         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
14075         (optimize_inline_calls): Call make_nonlocal_label_edges.
14076
14077 2007-02-04  Jan Hubicka  <jh@suse.cz>
14078
14079         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
14080         true when something was changed.
14081         (rename_ssa_copies): When something was changed, do
14082         TODO_remove_unused_locals.
14083         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
14084         add TODO_remove_unused_locals when instruction was removed.
14085
14086 2007-02-04  Jan Hubicka  <jh@suse.cz>
14087
14088         * ipa-inline.c (try_inline): Improve debug output; work on already
14089         inline edges too.
14090         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
14091         call try_inline for already inlined edges too when flattening;
14092         inline also functions that make callee growth but overall unit size
14093         reduce.
14094
14095 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14096
14097         * config/m32c/bitops.md, config/m32c/jump.md,
14098         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
14099         config/m32r/m32r.h, config/m32r/m32r.md,
14100         config/m32r/predicates.md, config/m68hc11/larith.asm,
14101         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
14102         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
14103         config/mips/mips-protos.h, config/mips/mips.c,
14104         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
14105         config/mn10300/mn10300.h, config/mn10300/predicates.md,
14106         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
14107         spelling conventions.
14108
14109         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
14110         Follow spelling conventions.
14111
14112 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
14113
14114         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
14115         warn about C++0x compatibility.
14116
14117 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14118
14119         * config/h8300/h8300.c, config/h8300/h8300.h,
14120         config/h8300/h8300.md: Follow spelling conventions.
14121
14122 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
14123
14124         PR middle-end/30667
14125         * combine.c (try_combine): Do not substitute source operand
14126         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
14127
14128 2007-02-03  Jan Hubicka  <jh@suse.cz>
14129
14130         PR gcov-profile/30650
14131         * value-prof.c (stringop_block_profile): Fix handling of size counter;
14132         do not divide by zero for never executed counters.
14133         (tree_find_values_to_profile): Fix counters.
14134         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
14135
14136 2007-02-03  Ian Lance Taylor  <iant@google.com>
14137
14138         * lower-subreg.c (simple_move_operand): New static function,
14139         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
14140         operands.
14141         (simple_move): Call simple_move_operand.
14142         (find_decomposable_subregs): Add special handling of MEMs.
14143         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
14144         meaning of return value.  If we see a hard register, test whether
14145         it can store a word_mode value.  Change all callers.
14146
14147 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14148
14149         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
14150         ftrapv insns and expanders.
14151         (subdi3): Change define_expand operand 1 to arith11_operand, and
14152         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
14153         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
14154         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
14155         respectively.
14156
14157         PR middle-end/30174
14158         * varasm.c (notice_global_symbol): Treat global objects as weak when
14159         flag_shlib is true.
14160
14161 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14162
14163         * emit-rtl.c (dconstpi): Delete.
14164         (dconstsqrt2): New.
14165         (init_emit_once): Delete dconstpi and init dconstsqrt2.
14166         * real.h (dconstpi): Delete.
14167         (dconstsqrt2): New.
14168         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
14169         (fold_builtin_hypot): Likewise.
14170
14171 2007-02-03  Tom Tromey  <tromey@redhat.com>
14172
14173         PR driver/30246
14174         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
14175         -gcoff3, -gxcoff3, -gvms3 implies -dD.
14176
14177 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
14178
14179         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
14180         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
14181         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
14182         config/rs6000/cell.md, config/rs6000/darwin.h,
14183         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
14184         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
14185         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
14186         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
14187         typos.  Follow spelling conventions.
14188         * doc/invoke.texi: Follow spelling conventions.
14189
14190 2007-02-03  Roger Sayle  <roger@eyesopen.com>
14191
14192         * simplify-rtx.c (simplify_relational_operation_1): Implement some
14193         canonicalization transformations that attempt to simplify integer
14194         constant comparisons to become comparisons against zero.
14195
14196 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14197
14198         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
14199         fabs(x)*sqrt(2).
14200         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
14201         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
14202
14203 2007-02-02  Mike Stump  <mrs@apple.com>
14204
14205         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
14206         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
14207         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
14208         generate a branch island.
14209
14210 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
14211
14212         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
14213         (xtensa_legitimate_address_p): New.
14214         (xtensa_legitimize_address): New.
14215         (xtensa_output_addr_const_extra): New.
14216         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
14217         (BASE_REG_P): New.
14218         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
14219         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
14220         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
14221         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
14222         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
14223         (xtensa_legitimize_address): New.
14224         (xtensa_output_addr_const_extra): New.
14225
14226 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
14227
14228         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
14229
14230 2007-02-02  Ian Lance Taylor  <iant@google.com>
14231
14232         * expmed.c (expand_divmod): Add comment.
14233
14234 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
14235
14236         * emit-rtl.c (renumber_insns): Remove.
14237         * flags.h: Remove the extern for flag_renumber_insns.
14238         * rtl.h: Remove the prototype for renumber_insns.
14239         * toplev.c (flag_renumber_insns): Remove.
14240
14241 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
14242
14243         Revert for x86 darwin:
14244         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
14245
14246         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
14247         code before the following patch under TARGET_MACHO.
14248         (ix86_function_value_regno_p): Likewise.
14249
14250 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14251
14252         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
14253         COMPLEX_EXPR.
14254
14255 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14256
14257         PR target/29682
14258         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
14259         general or fp registers.  Add comments.
14260         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
14261
14262 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
14263
14264         * pointer-set.c (insert_aux): Only return insertion slot.
14265         (pointer_set_insert): Adjust.
14266         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
14267         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
14268         pointer_map_traverse): New.
14269         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
14270         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
14271         pointer_map_contains, pointer_map_traverse): Declare.
14272
14273 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
14274
14275         PR middle-end/30473
14276         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
14277         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
14278
14279 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14280
14281         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
14282
14283         (struct _dep): New type.
14284         (dep_t): New typedef.
14285         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
14286         (DEP_STATUS): New access macro.  The macro with the same name was
14287         renamed to DEP_LINK_STATUS.
14288         (dep_init): Declare function
14289
14290         (struct _dep_link): New type.
14291         (dep_link_t): New typedef.
14292         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
14293         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
14294         (DEP_LINK_STATUS): New macro.
14295         (debug_dep_links): New debug function.
14296
14297         (struct _deps_list): New type.
14298         (deps_list_t): New typedef.
14299         (DEPS_LIST_FIRST): New access macro.
14300         (FOR_EACH_DEP_LINK): New cycle macro.
14301         (create_deps_list, free_deps_list, delete_deps_list): Declare
14302         functions.
14303         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
14304         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
14305         (copy_deps_list_change_con): Ditto.
14306
14307         (move_dep_link): Declare function.
14308
14309         (struct _dep_node): New type.
14310         (dep_node_t): New typedef.
14311         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
14312
14313         (struct haifa_insn_data.back_deps): New field to hold backward
14314         dependencies of the insn.
14315         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
14316         to deps_list_t.
14317         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
14318         Change its type to deps_list_t.
14319         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
14320         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
14321         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
14322
14323         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
14324
14325         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
14326
14327         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
14328         all callers.
14329         (dep_cost): Declare.
14330
14331         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
14332         (ds_to_dk, dk_to_ds): New functions.
14333
14334         (init_dep_1): New static function.
14335         (init_dep): New function.
14336         (copy_dep): New static function.
14337
14338         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
14339         functions.
14340         (detach_dep_link): New static function.
14341         (move_dep_link): New function.
14342
14343         (dep_links_consistent_p, dump_dep_links): New static functions.
14344         (debug_dep_links): New debugging function.
14345
14346         (deps_obstack, dl_obstack, dn_obstack): New static variables.
14347
14348         (alloc_deps_list, init_deps_list): New static functions.
14349         (create_deps_list): New function.
14350         (clear_deps_list): New static function.
14351         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
14352         (deps_list_consistent_p, dump_deps_list): New static functions.
14353         (debug_deps_list): New function.
14354         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
14355         functions.
14356         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
14357
14358         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
14359         use new scheduler dependencies lists.
14360         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
14361         (sched_analyze): Ditto.  Initialize dependencies lists.
14362         (add_forw_dep, compute_forward_dependences): Update to use new
14363         scheduler dependencies lists.
14364
14365         (init_dependency_caches): Init deps_obstack.
14366         (free_dependency_caches): Free deps_obstack.
14367
14368         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
14369         new scheduler dependencies lists.
14370         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
14371         (add_back_forw_dep, delete_back_forw_dep): Ditto.
14372
14373         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
14374         Update to use new scheduler dependencies lists.
14375         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
14376         (debug_dependencies): Ditto.
14377         (schedule_region): Update comments.
14378
14379         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
14380         scheduler dependencies lists.
14381         (schedule_ebb): Update comments.
14382
14383         * rtl.def (DEPS_LIST): Remove.
14384
14385         * lists.c (unused_deps_list): Remove.
14386         (free_list): Update assertions.
14387
14388         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
14389         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14390
14391         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
14392         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14393
14394         * haifa-sched.c (comments): Update.
14395         (insn_cost1): Remove.  Inline the code into insn_cost ().
14396         (insn_cost): Update to use new scheduler dependencies lists.  Move
14397         processing of the dependency cost to dep_cost ().
14398         (dep_cost): New function.  Use it instead of insn_cost () when
14399         evaluating cost of the dependency.  Use compatible interface to
14400         interact with the target.
14401         (priority): Update to use new scheduler dependencies lists.
14402         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
14403         with greater number of insns that depend on the insn.
14404         (schedule_insn): Update to use new scheduler dependencies lists.  Add
14405         code to free backward dependencies lists.  Inline and optimize code
14406         from resolve_dep () - see PR28071.
14407         (ok_for_early_queue_removal): Update to use new scheduler dependencies
14408         lists.  Update call to targetm.sched.is_costly_dependence hook.
14409
14410         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
14411         scheduler dependencies lists.
14412
14413         (resolve_dep): Remove.  Move the logic to schedule_insn ().
14414         (init_h_i_d): Initialize dependencies lists.
14415
14416         (process_insn_depend_be_in_spec): Rename to
14417         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
14418         dependencies lists.
14419         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
14420         Update to use new scheduler dependencies lists.
14421         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
14422
14423         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
14424         new scheduler dependencies lists.
14425         (build_intra_loop_deps): Ditto.
14426
14427         * target.h (struct _dep): Declare to use in
14428         gcc_target.sched.is_costly_dependence.
14429         (struct gcc_target.sched.adjust_cost): Fix typo.
14430         (struct gcc_target.sched.is_costly_dependence): Change signature to use
14431         single dep_t parameter instead of an equivalent triad.
14432         (struct gcc_target.sched.adjust_cost_2): Remove.
14433
14434         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
14435
14436         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
14437
14438         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
14439         documentation.
14440         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
14441
14442         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
14443         (REG_DEP_TRUE): Document.
14444
14445         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
14446         Change signature to correspond to the targetm.sched.adjust_cost hook.
14447         Update use in TARGET_SCHED_ADJUST_COST_2.
14448         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
14449         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
14450         new scheduler dependencies lists.
14451         (ia64_gen_check): Ditto.
14452
14453         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
14454         dependencies lists.
14455
14456         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
14457         signature to correspond to the targetm.sched.is_costly_dependence hook.
14458         (is_costly_group): Update to use new scheduler dependencies lists.
14459
14460         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
14461         instead of INSN_COST () macro.
14462
14463 2007-02-01  Ian Lance Taylor  <iant@google.com>
14464
14465         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
14466
14467 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
14468
14469         * pa.md (tp_load): Correct mfctl instruction syntax.
14470
14471 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
14472
14473         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
14474         altivec_padding_size calculation on AIX.  Improve comment, add
14475         assert to verify that it's right.
14476
14477         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
14478         64-bit.
14479
14480 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
14481
14482         PR inline-asm/28686
14483         * global.c (global_alloc): Add mising initialization of
14484         ELIMINABLE_REGSET.
14485
14486 2007-02-01  Roger Sayle  <roger@eyesopen.com>
14487
14488         * alias.c (init_alias_analysis): Correct whitespace.
14489         * bb-reorder.c (fix_edges_for_rarely_executed_code,
14490         partition_hot_cold_basic_blocks): Likewise.
14491         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
14492         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
14493         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
14494         fold_builtin_snprintf_chk, fold_builtin_printf,
14495         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
14496         do_mpfr_arg3, do_mpfr_sincos): Likewise.
14497         * cfgcleanup.c (cleanup_cfg): Likewise.
14498         * cfgexpand.c (tree_expand_cfg): Likewise.
14499         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
14500         * function.c (get_next_funcdef_no): Likewise.
14501         * gengtype.c (main): Likewise.
14502         * genmodes.c (main): Likewise.
14503         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
14504         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
14505         * ifcvt.c (noce_emit_move_insn): Likewise.
14506         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
14507         Likewise.
14508         * stor-layout.c (get_best_mode): Likewise.
14509         * tree-ssa-loop-niter.c (get_val_for): Likewise.
14510         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
14511         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
14512         perform_var_substitution, solve_graph): Likewise.
14513         * tree-vrp.c (vrp_finalize): Likewise.
14514
14515 2007-02-01  Ian Lance Taylor  <iant@google.com>
14516
14517         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
14518         high part of a paradoxical subreg, return a constant zero.
14519
14520 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
14521
14522         * toplev.c (lang_dependent_init): Call init_set_costs.
14523         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
14524
14525 2007-02-01  Richard Guenther  <rguenther@suse.de>
14526
14527         PR middle-end/30656
14528         * fold-const.c (fold_negate_expr): Allow negating a
14529         constant if overflow does not change.
14530
14531 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14532
14533         * doc/c-tree.texi (Expression trees): Improve markup.
14534         * doc/tm.texi (Register Classes, Addressing Modes)
14535         (Floating Point): Fix spacing after abbreviations.  Fix some
14536         typos.
14537
14538 2007-02-01  Ben Elliston  <bje@au.ibm.com>
14539
14540         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
14541         * doc/contrib.texi: Likewise.
14542         * doc/install.texi: Likewise.
14543
14544 2007-01-31  Richard Henderson  <rth@redhat.com>
14545             Ian Lance Taylor  <iant@google.com>
14546
14547         * lower-subreg.c: New file.
14548         * rtl.def (CONCATN): Define.
14549         * passes.c (init_optimization_passes): Add pass_lower_subreg and
14550         pass_lower_subreg2.
14551         * emit-rtl.c (update_reg_offset): New static function, broken out
14552         of gen_rtx_REG_offset.
14553         (gen_rtx_REG_offset): Call update_reg_offset.
14554         (gen_reg_rtx_offset): New function.
14555         * regclass.c: Revert patch of 2006-03-05, restoring
14556         reg_scan_update.
14557         (clear_reg_info_regno): New function.
14558         * dwarf2out.c (concatn_loc_descriptor): New static function.
14559         (loc_descriptor): Handle CONCATN.
14560         * common.opt (fsplit_wide_types): New option.
14561         * opts.c (decode_options): Set flag_split_wide_types when
14562         optimizing.
14563         * timevar.def (TV_LOWER_SUBREG): Define.
14564         * rtl.h (gen_reg_rtx_offset): Declare.
14565         (reg_scan_update): Declare.
14566         * regs.h (clear_reg_info_regno): Declare.
14567         * tree-pass.h (pass_lower_subreg): Declare.
14568         (pass_lower_subreg2): Declare.
14569         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
14570         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
14571         -fsplit-wide-types.
14572         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
14573         * Makefile.in (OBJS-common): Add lower-subreg.o.
14574         (lower-subreg.o): New target.
14575
14576 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14577
14578         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
14579
14580 2007-01-31  Anatoly Sokolov <aesok@post.ru>
14581
14582         PR target/19087
14583         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
14584
14585 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14586
14587         PR middle-end/29335
14588         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
14589
14590 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
14591
14592         * cfgloop.h: Include vec-prim.h.
14593         (enum li_flags): Remove LI_ONLY_OLD.
14594         (loop_iterator): Changed.
14595         (fel_next, fel_init): Iterate over loop tree.
14596         (FOR_EACH_LOOP_BREAK): New macro.
14597         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
14598         FOR_EACH_LOOP.
14599         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
14600         * modulo-sched.c (sms_schedule): Ditto.
14601         * tree-vectorizer.c (vectorize_loops): Ditto.
14602         * doc/loop.texi: Update information on loop numbering and behavior of
14603         FOR_EACH_LOOP wrto new loops.
14604         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
14605         add_to_evolution_1): Test nestedness of loops instead of comparing
14606         their numbers.
14607         * tree-chrec.c (chrec_fold_plus_poly_poly,
14608         chrec_fold_multiply_poly_poly, chrec_evaluate,
14609         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
14610         reset_evolution_in_loop): Ditto.
14611         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
14612
14613 2007-01-31  Dirk Mueller  <dmueller@suse.de>
14614
14615         * c-common.c (warn_about_parentheses): Separate warning about
14616         un-parenthized sequence of comparison operators from the one
14617         which is supposed to warn about x <= y <= z.
14618
14619 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
14620
14621         * optabs.h (enum optab_index): Add new OTI_isinf.
14622         (isinf_optab): Define corresponding macro.
14623         * optabs.c (init_optabs): Initialize isinf_optab.
14624         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
14625         patterns.
14626         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
14627         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
14628         using isinf_optab.
14629         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
14630         expand_builtin_interclass_mathfn.
14631         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
14632         * config/i386/i386.md (UNSPEC_FXAM): New constant.
14633         (fxam<mode>2_i387): New insn pattern.
14634         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
14635         built-in functions as x87 inline asm.
14636
14637 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14638
14639         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
14640
14641 2007-01-30  Eric Christopher  <echristo@apple.com>
14642
14643         * config.gcc: Add geode.
14644
14645 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14646
14647         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
14648         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
14649         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
14650         value-prof.c: Fix comment typos.
14651
14652 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14653
14654         PR c++/24745
14655         * doc/invoke.texi (Wpointer-arith): Document warning.
14656
14657 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
14658
14659         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
14660         the list of discrepancies from the draft TR.
14661
14662 2007-01-30  Dirk Mueller  <dmueller@suse.de>
14663
14664         PR c++/30601
14665         * doc/invoke.texi (-Wreturn-type): Update description to
14666         match new behavior.
14667
14668 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
14669
14670         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
14671
14672 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
14673
14674         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
14675         to handle optabs that operate on floating point input argument and
14676         output to integer output.
14677         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
14678         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
14679         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
14680         expand_builtin_interclass_mathfn ().
14681         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
14682         (ilogbsi2): Remove.
14683         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
14684         ilogbl built-in functions as x87 intrinsics.
14685
14686 2007-01-30  Richard Guenther  <rguenther@suse.de>
14687
14688         PR middle-end/27657
14689         * dwarf2out.c (reference_to_unused): Query varpool if the
14690         variable was output.
14691
14692 2007-01-30  Richard Guenther  <rguenther@suse.de>
14693
14694         PR middle-end/30313
14695         * passes.c (execute_one_pass): Reset in_gimple_form to not
14696         confuse non-unit-at-a-time mode.
14697
14698 2007-01-29  Roger Sayle  <roger@eyesopen.com>
14699             Richard Guenther  <rguenther@suse.de>
14700
14701         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
14702         avoid undefined behaviour on overflow.  Use force_fit_type_double
14703         to construct the constant with the specified TREE_OVERFLOW.
14704
14705 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14706
14707         * config/dfp-bit.c: Add parameterized support for fp exceptions.
14708         * config/dfp-bit.h: Ditto.
14709
14710 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14711
14712         * c-decl.c (pop_scope): Replace warnings with call to
14713         warn_for_unused_label.
14714         * c-common.h (warn_for_unused_label): Declare.
14715         * c-common.c (warn_for_unused_label): Define.
14716
14717 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14718
14719         * tree-optimize.c (update_inlined_to_pointers): Delete unused
14720         function.
14721
14722 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14723
14724         * Makefile.in (USER_H): Remove decfloat.h.
14725         * ginclude/decfloat.h: Delete, moving contents to ...
14726         * ginclude/float.h: Add support for decimal floating point,
14727         guarded by __STDC_WANT_DEC_FP__.
14728
14729 2007-01-29  Mike Stump  <mrs@apple.com>
14730
14731         * doc/gccint.texi (Top): Rename Loop Representation to Loop
14732         Analysis and Representation to resolve case insensitive conflict.
14733         * doc/loop.texi (Loop Analysis and Representation): Likewise.
14734
14735 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
14736
14737         * tree.h (struct tree_memory_tag): Add aliases member.
14738         (MTAG_ALIASES): New macro.
14739         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
14740         (add_may_alias): Remove pointer-set. Update for may_aliases being
14741         a bitmap.
14742         (mark_aliases_call_clobbered): Update for may_aliases being a
14743         bitmap.
14744         (compute_tag_properties): Ditto.
14745         (create_partition_for): Ditto.
14746         (compute_memory_partitions): Ditto.
14747         (dump_may_aliases_for): Ditto.
14748         (is_aliased_with): Ditto.
14749         (add_may_alias_for_new_tag): Ditto.
14750         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
14751         (compute_is_aliased): New function.
14752         (compute_may_aliases): Call compute_is_aliased).
14753         (init_alias_info): Initialize alias_bitmap_obstack.
14754         (union_alias_set_into): New function.
14755         (compute_flow_sensitive_aliasing): Use union_aliases_into.
14756         (have_common_aliases_p): Rewrite to take two bitmaps and use
14757         intersection.
14758         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
14759         Update for bitmaps.
14760         (finalize_ref_all_pointers): Update for add_may_alias changes.
14761         (new_type_alias): Ditto.
14762         * tree-flow-inline.h (may_aliases): Return a bitmap.
14763         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
14764         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
14765         may_aliases being a bitmap.
14766         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
14767         may_aliases now returns a bitmap.
14768         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
14769         being a bitmap.
14770         * tree-ssa-operands.c (add_virtual_operand): Update for
14771         may_aliases being a bitmap.
14772
14773 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
14774
14775         PR tree-optimization/30630
14776         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
14777         variable as changed.
14778
14779 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
14780
14781         PR c++/28266
14782         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
14783         expanded only once even if an error occurs.
14784
14785 2007-01-29  Ben Elliston  <bje@au.ibm.com>
14786
14787         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
14788         (__gcov_average_profiler): Likewise.
14789         (__gcov_ior_profiler): Likewise.
14790         (__gcov_merge_ior): Likewise.
14791
14792 2007-01-28  Jan Hubicka  <jh@suse.cz>
14793
14794         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
14795         * value-prof.c (stringop_block_profile): Likewise.
14796
14797 2007-01-28  Jan Hubicka  <jh@suse.cz>
14798
14799         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
14800         variant handling histograms; add wrapper.
14801         (clear_storage_via_libcall): Export.
14802         (emit_block_move_hints): Break out from ...; add histograms.
14803         (emit_block_move): ... this one.
14804         (clear_storage_hints): Break out from ...; add histograms.
14805         (clear_storage): ... this one.
14806         (set_storage_via_memset): Handle histogram.
14807         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
14808         (clear_storage_hints, clear_storage_via_libcall): Declare.
14809         (set_storage_via_setmem): Update prototype.
14810         * doc/md.texi (movmem, setmem): Document new arguments.
14811
14812         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
14813         new histograms.
14814         (stringop_block_profile): New global function.
14815         (tree_stringops_values_to_profile): Profile block size and alignment.
14816         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
14817         HIST_TYPE_IOR.
14818         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
14819         (stringop_block_profile): Declare.
14820         * builtins.c: Include value-prof.h.
14821         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
14822         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
14823         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
14824         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
14825         * profile.c (instrument_values): Add new counters.
14826         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
14827         calls.
14828         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
14829         (tree_init_edge_profiler): Build new profilers.
14830         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
14831         (pass_tree_profile): Add dump.
14832         (tree_profile_hooks): Update.
14833         * Makefile.in (LIBGCOV): Add new constants.
14834         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
14835         __gcov_ior_profiler): New.
14836         * i386.md (movmem/setmem expanders): Add new optional arguments.
14837
14838 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
14839
14840         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
14841
14842 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14843
14844         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
14845         (tree_unswitch_single_loop): Pass eni_size_weights to
14846         tree_num_loop_insns.
14847         * tree-ssa-loop-manip.c: Include tree-inline.h.
14848         (can_unroll_loop_p): Pass eni_size_weights to
14849         tree_num_loop_insns.
14850         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
14851         Pass eni_size_weights to estimate_num_insns.
14852         * tree.h (init_inline_once): Export.
14853         * toplev.c (backend_init): Call init_inline_once.
14854         * cgraphunit.c (cgraph_process_new_functions,
14855         cgraph_analyze_function): Pass eni_inlining_weights to
14856         estimate_num_insns.
14857         * ipa-inline.c (compute_inline_parameters): Ditto.
14858         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
14859         to estimate_num_insns.
14860         (try_unroll_loop_completely): Pass eni_size_weights to
14861         tree_num_loop_insns.
14862         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
14863         ot estimate_num_insns.
14864         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
14865         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
14866         * tree-inline.c (eni_inlining_weights, eni_size_weights,
14867         eni_time_weights): New variables.
14868         (init_inline_once): Initialize them.
14869         (struct eni_data): Mew.
14870         (estimate_num_insns_1, estimate_num_insns): Use weights.
14871         * tree-inline.h (struct eni_weights_d): New.
14872         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
14873         (estimate_num_insns): Declaration changed.
14874         * cfgloop.h (tree_num_loop_insns): Declaration changed.
14875         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
14876         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
14877
14878 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14879
14880         * tree-data-ref.c (conflict_fn): Assert that the number of affine
14881         relations in the conflict function is valid.
14882
14883 2007-01-27  Ian Lance Taylor  <iant@google.com>
14884
14885         * common.opt: Add fstrict-overflow.
14886         * opts.c (decode_options): Set flag_strict_overflow if -O2.
14887         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
14888         (TYPE_OVERFLOW_UNDEFINED): Define.
14889         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
14890         Replace all uses.
14891         * tree.h (TYPE_TRAP_SIGNED): Don't define.
14892         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
14893         (fold_negate_expr): Likewise.
14894         (make_range): Likewise.
14895         (extract_muldiv_1): Likewise.
14896         (maybe_canonicalize_comparison): Likewise.
14897         (fold_comparison): Likewise.
14898         (fold_binary): Likewise.
14899         (tree_expr_nonnegative_p): Likewise.
14900         (tree_expr_nonzero_p): Likewise.
14901         * tree-vrp.c (compare_values): Likewise.
14902         (extract_range_from_binary_expr): Likewise.
14903         (extract_range_from_unary_expr): Likewise.
14904         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
14905         Likewise.
14906         (nowrap_type_p): Likewise.
14907         * tree-scalar-evolution.c (simple_iv): Likewise.
14908         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
14909         (build_range_check): Likewise.
14910         (extract_muldiv_1): Likewise.
14911         (fold_comparison): Likewise.
14912         * tree-vrp.c (vrp_int_const_binop): Likewise.
14913         (extract_range_from_unary_expr): Likewise.
14914         * convert.c (convert_to_integer): Likewise.
14915         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
14916         (fold_comparison): Likewise.
14917         (fold_binary): Likewise.
14918         * optabs.c (optab_for_tree_code): Likewise.
14919         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
14920         * simplify-rtx.c (simplify_const_relational_operation): Check
14921         flag_strict_overflow and flag_trapv.
14922         (simplify_const_relational_operation): Likewise.
14923         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
14924         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
14925         -fstrict-overflow.
14926
14927 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14928
14929         * tree.c (tree_fold_gcd): Delete.
14930         * tree.h (tree_fold_gcd): Remove prototype.
14931         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
14932         test whether one constant integer is a multiple of another.  Instead
14933         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
14934         * fold-const.c (multiple_of_p):  We've determined both TOP and
14935         BOTTOM are integer constants so we can call int_const_binop directly
14936         instead of the more generic const_binop.
14937
14938 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14939
14940         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
14941         1*X check that the constant hasn't overflowed, to preserve the
14942         TREE_OVERFLOW bit.
14943         (round_up): Provide an efficient implementation when rouding-up an
14944         INTEGER_CST to a power-of-two.
14945
14946 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14947
14948         * doc/sourcebuild.texi: Add comma for clarity.
14949         * doc/extend.texi: Fix some typos.
14950         * doc/passes.texi: Likewise.
14951         * doc/cppinternals.texi: Likewise.
14952         * doc/c-tree.texi: Likewise.
14953         * doc/tree-ssa.texi: Likewise.
14954         * doc/install.texi: Likewise.
14955
14956 2007-01-27  Jan Hubicka  <jh@suse.cz>
14957
14958         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
14959         (pass_sra): Do not require alias information.
14960         * passes.c (init_optimization_passes): Add SRA
14961
14962 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
14963
14964         * tracer.c (rest_of_handle_tracer): We already cleaned
14965         up the CFG in tracer() so don't do it here again.
14966         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
14967         cleanup_cfg here, either.  And don't call renumber_insns.
14968
14969         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
14970         and BB_HEAD are in the insn stream here.  Instead make sure
14971         that BB_INSN is valid on all insns.  Also, do check here that
14972         there are no pending branch predictions...
14973         (rtl_verify_flow_info): ...instead of doing it here.  Checks
14974         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
14975         here.
14976
14977 2007-01-26  Roger Sayle  <roger@eyesopen.com>
14978
14979         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
14980         function to simplify/factorize operand order canonicalization.
14981         (ix86_fixup_binary_operands): Reorganize using the above function.
14982         (ix86_binary_operator_ok): Likewise.
14983
14984 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
14985
14986         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
14987         file scope from optimize_attrs.
14988         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
14989         up search.
14990         (optimize_attrs): Clear insn_code_values after freeing it.
14991
14992 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14993
14994         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
14995         a parts.base assignment.
14996
14997 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14998
14999         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
15000         (compute_subscript_distance, initialize_data_dependence_relation,
15001         finalize_ddr_dependent, analyze_ziv_subscript,
15002         analyze_siv_subscript_cst_affine,
15003         compute_overlap_steps_for_affine_univar,
15004         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
15005         analyze_siv_subscript, analyze_miv_subscript,
15006         analyze_overlapping_iterations, subscript_dependence_tester_1,
15007         compute_self_dependence, free_dependence_relation): Work
15008         with affine_fn instead of chrecs.
15009         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
15010         common_affine_function, affine_function_base,
15011         affine_function_constant_p, affine_fn_op, affine_fn_plus,
15012         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
15013         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
15014         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
15015         (all_chrecs_equal_p): Removed.
15016         * tree-data-ref.h (affine_fn, conflict_function): New types.
15017         (struct subscript): Change type of conflicting_iterations_in_a
15018         and conflicting_iterations_in_b.
15019
15020 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
15021
15022         PR other/30182
15023         * config/pa/pa.h (TARGET_HPUX_11): New.
15024         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
15025         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
15026
15027 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
15028         Richard Guenther  <rguenther@suse.de>
15029
15030         * tree-ssa-structalias.c (solve_graph): Handle case
15031         we merged the variable to another.
15032
15033 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15034
15035         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
15036         functions.
15037
15038         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
15039         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
15040
15041 2007-01-25  DJ Delorie  <dj@redhat.com>
15042
15043         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
15044         allow changes to modes which don't fit in those registers.
15045
15046         * reload1.c (choose_reload_regs): Check for invalid subregs before
15047         computing their locations, not after.
15048
15049 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
15050
15051         PR 25127
15052         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
15053         save Altivec registers in an eh_return function.
15054         (compute_vrsave_mask): Likewise.
15055         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
15056         for saving Altivec registers.
15057         (rs6000_emit_prologue): Don't allocate stack twice in
15058         eh_return function.  Correct expected value of altivec_save_offset
15059         when using save_world.  Describe save of R0 to stack when using
15060         save_world.  Describe stack pointer adjustment when using
15061         save_world.  Remove duplicated eh_return parameter register saving.
15062         Update sp_offset variable after save_world.
15063         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
15064         darwin-world.asm.
15065         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
15066         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
15067         implies Altivec.
15068
15069 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
15070
15071         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
15072
15073 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
15074
15075         PR other/30182
15076         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
15077         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
15078
15079 2007-01-25  Richard Guenther  <rguenther@suse.de>
15080
15081         * doc/invoke.texi (-Wcoverage-mismatch): Document.
15082         * common.opt (-Wcoverage-mismatch): New warning option.
15083         * coverage.c (get_coverage_counts): Ignore coverage mismatch
15084         if -Wcoverage-mismatch is given.
15085
15086 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
15087
15088         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
15089         (ipcp_driver): Change to static definition.
15090         Add dumping of the ifunctions.
15091         (constant_val_insert): Remove unused parameter. Support for SSA.
15092         (ipcp_propagate_const): Support for SSA.
15093         (ipcp_profile_bb_print): Print only analyzed nodes.
15094         (ipcp_replace_map_create): Remove support for Fortran constant
15095         for now.
15096         * ipa-prop.c (ipa_method_modify_stmt,
15097         ipa_callsite_compute_param): Support for SSA.
15098         * ipa-prop.h (ipcp_driver): Remove declaration.
15099         (IS_VALID_TREE_MAP_INDEX): Add define.
15100
15101 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
15102
15103         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
15104
15105 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15106
15107         PR middle-end/30447
15108         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
15109         constant argument to cabs and do it without checking for
15110         -funsafe-math-optimizations.
15111
15112 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
15113
15114         * c-common.h (RID_FIRST_CXX0X): New.
15115         (RID_LAST_CXX0X): New.
15116         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
15117         by -Wall.
15118         * c.opt (Wc++0x-compat): New.
15119         * doc/invoke.texi (-Wc++0x-compat): Document.
15120
15121 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15122
15123         * builtins.c (fold_builtin_carg): New.
15124         (fold_builtin_1): Use it.
15125
15126 2007-01-24  Jan Hubicka  <jh@suse.cz>
15127
15128         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
15129
15130         * ipa-inline.c (initial_insns, max_insns): Delete.
15131         (compute_max_insns): New function.
15132         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
15133         of insns as base for code growth.
15134         (cgraph_decide_inlining): Make initial_insns local; do not compute
15135         max_insns.
15136         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
15137         * doc/invoke.texi (inline-unit-growth): Update docs.
15138
15139 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
15140
15141         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
15142         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
15143         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
15144         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
15145         for CPUs that have PTA_CX16 set.
15146
15147         PR middle-end/27416
15148         * gimplify.c (omp_check_private): New function.
15149         (gimplify_scan_omp_clauses): Use it for
15150         firstprivate/lastprivate/reduction.
15151
15152         PR middle-end/30494
15153         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
15154         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
15155
15156         PR middle-end/30421
15157         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
15158         If lower_lastprivate_clauses emits some statements, append them
15159         to dlist rather than body_p and to body_p append an initializer.
15160         (lower_omp_for): Adjust caller.
15161
15162 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
15163
15164         * target.h (globalize_decl_name): New.
15165         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
15166         * output.h (default_globalize_decl_name): New.
15167         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
15168         globalize_label.
15169         (globalize_decl): Ditto.
15170         (default_globalize_decl_name): New.
15171         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
15172         (ia64_handle_version_id_attribute): New.
15173         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
15174         (ia64_asm_output_external): Use globalize_decl_name instead
15175         of globalize_label.
15176         * doc/extend.texi (version_id): New pragma.
15177         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
15178
15179 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15180
15181         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
15182         _uleb128_t and _Unwind_SWord with _sleb128_t.
15183         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
15184         uw_frame_state_for, uw_update_context_1): Likewise.
15185         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
15186         * unwind-pe.h (read_uleb128, read_sleb128,
15187         read_encoded_value_with_base): Likewise.
15188         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
15189
15190 2007-01-24  Richard Guenther  <rguenther@suse.de>
15191
15192         * builtins.c (expand_builtin_cexpi): Get the fndecl
15193         for cexp in the correct way.
15194
15195 2007-01-24  Jan Hubicka  <jh@suse.cz>
15196
15197         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
15198
15199 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15200
15201         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
15202         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
15203         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
15204         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
15205         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
15206         __SIZEOF_PTRDIFF_T__.
15207         * doc/cpp.texi: Documentation for the new builtin macros added.
15208
15209 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
15210
15211         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
15212         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
15213         instead of operands[2] to avoid access past the end of array.
15214
15215 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
15216
15217         * reload1.c (emit_reload_insns): Pass the reload register
15218         for a non-spill output reload through forget_old_reloads_1.
15219
15220 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
15221
15222         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
15223         _SOFT_DOUBLE if doubles use software floating-point.
15224         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
15225         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
15226         * config/rs6000/darwin-ldouble.c: Also compile functions for
15227         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
15228         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
15229         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
15230         commented-out long double override.
15231         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
15232         * config/rs6000/eabispe.h: Likewise.
15233         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
15234         long double for non-SPE.
15235         (rs6000_handle_option): Likewise.
15236         (invalid_e500_subreg): Disallow more subregs involding DImode,
15237         DFmode, TImode or TFmode.
15238         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
15239         E500 double.
15240         (legitimate_lo_sum_address_p): Also check for TFmode for E500
15241         double.
15242         (rs6000_legitimize_address): Also handle TFmode for E500 double.
15243         (rs6000_legitimize_reload_address): Also handle TFmode for E500
15244         double.
15245         (rs6000_legitimate_address): Also check for TFmode for E500
15246         double.
15247         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
15248         (spe_build_register_parallel): Handle TFmode and TCmode.
15249         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
15250         double.
15251         (function_arg): Handle TFmode and TCmode for E500 double.
15252         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
15253         in general.
15254         (print_operand): Handle TFmode and TImode for %y.
15255         (rs6000_generate_compare): Handle TFmode comparisons for E500
15256         double.
15257         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
15258         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
15259         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
15260         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
15261         TFmode for E500 double.
15262         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
15263         (floatsidf2): Enable for E500 double.
15264         (movtf_softfloat): Use rs6000_nonimmediate_operand.
15265         (extenddftf2): Change to extenddftf2_fprs.
15266         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
15267         depending on TARGET_E500_DOUBLE.
15268         (extendsftf2): Enable for E500 double.
15269         (trunctfdf2): Enable for E500 double.
15270         (trunctfsf2): Change to trunctfsf2_fprs.
15271         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
15272         depending on TARGET_E500_DOUBLE.
15273         (floatsitf2): Enable for E500 double.
15274         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
15275         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
15276         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
15277         (negtf2): Change to negtf2_internal.
15278         (negtf2): New expander.
15279         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
15280         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
15281         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
15282         (movdi_internal32): Use rs6000_nonimmediate_operand.
15283         (unnamed splitter): Likewise.
15284         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
15285         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
15286         (SPE64TF, DITI): New mode macros.
15287         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
15288         modes.
15289         (frob_tf_ti): New.
15290         (frob_<mode>_di_2): New.
15291         (frob_tf_di_8_2): New.
15292         (frob_di_df): Change to frob_di_<mode>; allow more modes.
15293         (frob_ti_tf): New.
15294         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
15295         more modes.
15296         (frob_ti_<mode>_8_2): New.
15297         (frob_ti_tf_2): New.
15298         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
15299         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
15300         TFmode.
15301         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
15302         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
15303         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
15304         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
15305         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
15306         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
15307         tsttflt_gp): New.
15308
15309 2007-01-23  Ian Lance Taylor  <iant@google.com>
15310
15311         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
15312         insn-*.o first.
15313         (OBJS-archive): Reformat, alphabetize.
15314         (OBJS): Change out_object_file to OBJS-md.
15315
15316 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
15317
15318         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
15319         JUMP_P and CALL_P predicates where applicable.
15320         * config/i386/i386.c: Ditto.
15321         * config/i386/i386.md: Ditto.
15322         * config/i386/mmx.md: Ditto.
15323         * config/i386/predicates.md: Ditto.
15324
15325 2007-01-22  Andreas Schwab  <schwab@suse.de>
15326
15327         * config/m68k/m68k.h: Fix comment.
15328
15329 2007-01-22  Jan Hubicka  <jh@suse.cz>
15330
15331         * passes.c (init_optimization_passes): Do not rerun
15332         pass_early_warn_uninitialized.
15333
15334 2007-01-22  Richard Guenther  <rguenther@suse.de>
15335
15336         PR tree-optimization/30038
15337         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
15338         function.
15339         (execute_cse_sincos_1): Likewise.
15340         (execute_cse_sincos): Likewise.
15341         (gate_cse_sincos): Likewise.
15342         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
15343         the cexpi() canonicalization of sincos().
15344         * tree-pass.h (pass_cse_sincos): Declare.
15345         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
15346
15347 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
15348
15349         PR rtl-optimization/29329
15350         * combine.c (replaced_rhs_insn): Rename to i2mod.
15351         (replaced_rhs_value): Rename to i2mod_new_rhs.
15352         (i2mod_old_rhs): New global variable.
15353         (combine_instructions): Adjust for above change.  Save a copy of
15354         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
15355         note are substituted in the second instruction.
15356         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
15357         ditch the note if it pertains to the second eliminated register
15358         and this register is mentioned in i2mod_old_rhs.
15359
15360         Revert:
15361         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
15362
15363         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
15364         the insn to which the note was originally attached.
15365
15366 2007-01-21  Jan Hubicka  <jh@suse.cz>
15367
15368         * ipa-inline.c (inlining_mode): Comment, move up.
15369         (cgraph_decide_inlining_incrementally): Do not perform inlining
15370         itself; fix handling of flattening of self recursive functions.
15371         (cgraph_find_cycles): Remove.
15372         (cgraph_flatten_node): Remove.
15373         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
15374         (try_inline): New function.
15375         (cgraph_early_inlining): Update call of
15376         cgraph_decide_inlining_incrementally.  Apply inlining here.
15377         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
15378
15379 2007-01-21  Dirk Mueller  <dmueller@suse.de>
15380
15381         PR bootstrap/30511
15382         * tree-vrp.c (check_array_bounds): do not warn
15383         about ADDR_EXPR's of ARRAY_REF's which are immediately
15384         used in binary expressions.
15385
15386 2007-01-21  Ira Rosen  <irar@il.ibm.com>
15387
15388         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
15389         read_write_dep and macros for its access.
15390         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
15391         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
15392         argument, call vect_check_interleaving for every independent pair of
15393         data-refs. Mark loads that access the same memory location as a store
15394         in the loop.
15395         (vect_check_dependences): Remove.
15396         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
15397         call, fix the call to vect_analyze_data_ref_dependence.
15398         (vect_analyze_data_ref_access): For statements that access the same
15399         data-ref, check that they are not stores; for loads, check that there
15400         is no store that access the same location.
15401
15402 2007-01-20  Roger Sayle  <roger@eyesopen.com>
15403             Joseph Myers  <joseph@codesourcery.com>
15404
15405         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
15406         (-fdump-rtl-stack): Likewise.
15407         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
15408         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
15409         (-mpt-fixed): Use @minus{} for minus sign.
15410         (Using Precompiled Headers): Fix under/overfull hbox.
15411
15412 2007-01-20  Jan Hubicka  <jh@suse.cz>
15413
15414         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
15415         place within annotation.
15416
15417 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15418
15419         * pa.c (output_move_double): Change array size of xoperands to 4.
15420
15421 2007-01-20  Jan Hubicka  <jh@suse.cz>
15422
15423         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
15424         as temporary.
15425
15426 2007-01-19  Ian Lance Taylor  <iant@google.com>
15427
15428         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
15429         constant to unsigned HOST_WIDE_INT before negating.
15430
15431 2007-01-19  Ian Lance Taylor  <iant@google.com>
15432
15433         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
15434         to unsigned.
15435         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
15436         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15437         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
15438         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
15439         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15440         (realloc_vdef, realloc_vuse): Change second parameter to
15441         unsigned.
15442         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
15443         fields to unsigned.
15444         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
15445         unsigned. Change x and lim locals to unsigned.
15446         (realloc_vdef, realloc_vuse): Change num_elem parameter to
15447         unsigned.
15448         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
15449         (copy_virtual_operands): Change i and n locals to unsigned.
15450
15451 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15452
15453         PR middle-end/29335
15454         * builtins.c (fold_builtin_1): Handle builtin fdim.
15455
15456 2007-01-20  Jan Hubicka  <jh@suse.cz>
15457
15458         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
15459         * tree-ssa-structalias.c (compute_points_to_sets): Do call
15460         init_alias_heapvars.
15461         (init_alias_heapvars): Initialize only when not already initialized.
15462         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
15463
15464 2007-01-19  Roger Sayle  <roger@eyesopen.com>
15465
15466         * common.opt (fsigned-zeros): New command line option.
15467         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
15468         of flag_unsafe_math_optimizations.
15469         * opts.c (set_fast_math_flags): The -ffast-math command line option
15470         implies -fno-signed-zeros.
15471         (fast_math_flags_set_p): Likewise.
15472
15473         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
15474         the documentation of -ffast-math appropriately.  Wrap long lines.
15475
15476 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
15477
15478         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
15479         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
15480
15481 2007-01-19  Tomas Bily  <tbily@suse.cz>
15482
15483         * cgraphunit.c (cgraph_finalize_function): Updating of pid
15484         * tree-profile.c:
15485         (tree_init_ic_make_global_vars): New function
15486         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
15487         (tree_gen_ic_profiler): New function
15488         (tree_gen_ic_func_profiler): New function
15489         (tree_profiling): Added calling of tree_gen_ic_func_profiler
15490         (tree_profile_hooks): Added hook for indirec/virtual calls
15491         * value-prof.c (tree_find_values_to_profile): New case for
15492         indirect calls
15493         (tree_values_to_profile): Call for determining indirect/virtual
15494         counters
15495         (tree_indirect_call_to_profile): New function
15496         (tree_ic_transform): New function
15497         (tree_ic): New function
15498         (find_func_by_pid): New function
15499         (init_pid_map): New function
15500         (tree_value_profile_transformations): Added check for
15501         indirect/virtual call transformation
15502         * value-prof.h (enum hist_type): New counter type for
15503         indirect/virtual calls
15504         (profile_hooks): Added new hook for profiling indirect/virtual
15505         calls
15506         * profile.c (instrument_values): New case for indirect/virtual
15507         call added
15508         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
15509         (GCOV_COUNTER_V_INDIR): New counter type
15510         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
15511         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
15512         call added
15513         * cgraph.c: Definition of cgraph_max_pid
15514         (cgraph_create_node): Default init of pid attribute
15515         * cgraph.h: Declaration of cgraph_max_pid
15516         (struct cgraph_node): Added pid attribute
15517         * libgcov.c (__gcov_indirect_call_profiler): New function
15518         (__gcov_one_value_profiler_body): New function
15519         (__gcov_one_value_profiler): Body was moved to
15520         __gcov_one_value_profiler_body and calls it
15521
15522 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
15523
15524         * doc/gty.texi (Options): Document the mark_hook option to GTY.
15525         * gengtype.c (write_types_data, write_func_for_structure,
15526         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
15527         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
15528         (walk_type, write_func_for_structure): Generate the mark_hook if
15529         needed.
15530
15531 2007-01-19  Jan Hubicka  <jh@suse.cz>
15532
15533         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
15534         'early' argument take inlining mode argument specifying whether to
15535         inline for size/speeed or all functions; add support for flattening;
15536         improve dumpting.
15537         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
15538
15539 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15540
15541         PR c++/17947
15542         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
15543         the name of the declared identifier.
15544
15545 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15546
15547         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
15548         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
15549         duplicate evaluation.
15550
15551 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15552
15553         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
15554         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
15555         to XFMode, use acosxf2 and truncate result to requested mode.
15556         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
15557         (asin<mode>2): Similarly, with asin expanders.
15558         (*fscalexf4_i387): Rename from *fscalexf4.
15559         (expNcorexf3): New expander.
15560         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
15561         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
15562         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
15563         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
15564         patterns for SSE math.
15565         (exp10<mode>2): Similarly, with exp10 expanders.
15566         (exp2<mode>2): Similarly, with exp2 expanders.
15567         (expm1<mode>2): Similarly, with expm1 expanders.
15568         (ldexp<mode>3): Similarly, with ldexp expanders.
15569         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
15570         Use gen_truncxf<mode>2_i387_noop to truncate result.
15571
15572 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15573
15574         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
15575         for ColdFire targets.
15576
15577 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
15578             Richard Sandiford  <richard@codesourcery.com>
15579
15580         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
15581         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
15582         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
15583         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
15584         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15585         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15586
15587 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15588
15589         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
15590         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
15591         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
15592         (*adddi_dilshr32_cf): New pattern.
15593         (adddi3, subdi3): Remove first alternatives.
15594
15595 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15596
15597         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
15598         implemented using move.l, do not use its cc result for floating-point
15599         comparisons.
15600
15601 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15602
15603         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
15604         from accepting 's' constraints if flag_pic.
15605
15606 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15607
15608         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
15609         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
15610         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
15611         condition from TARGET_68881 to TARGET_HARD_FLOAT.
15612
15613 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
15614
15615         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
15616         ColdFire alternatives.
15617         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
15618         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
15619         architectures that support ff1 instruction.
15620
15621 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15622             Julian Brown  <julian@codesourcery.com>
15623
15624         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
15625         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
15626         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
15627         Add commentary.
15628
15629 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15630
15631         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
15632         and return a bool.
15633         (output_move_const_into_data_reg, output_move_simode_const): Delete.
15634         * config/m68k/m68k.c (const_method, const_int_cost): Take a
15635         HOST_WIDE_INT instead of an rtx.
15636         (m68k_rtx_costs): Update call accordingly.
15637         (output_move_const_into_data_reg): Likewise.  Fix formatting.
15638         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
15639         Return a bool.
15640         (output_move_simode_const): Update calls after above changes.
15641         Rework to use automatic variables and predicates like MEM_P.
15642         * config/m68k/m68k.md (pushexthisi_const): Update call to
15643         valid_mov3q_const.
15644
15645 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15646
15647         * tree-ssa-alias.c (perform_var_substitution): Fix typo
15648         in dump_flags test.
15649
15650 2007-01-19  Richard Guenther  <rguenther@suse.de>
15651
15652         * builtins.c (expand_builtin_cexpi): Fall back to expanding
15653         via cexp in case sincos is not available.
15654
15655 2007-01-19  Richard Guenther  <rguenther@suse.de>
15656
15657         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
15658         * defaults.h (TARGET_HAS_SINCOS): Default to off.
15659         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
15660         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
15661         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
15662         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
15663         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
15664         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
15665
15666 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15667
15668         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
15669         New insn patterns.
15670         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
15671         (atan2xf3): Directly generate RTL pattern.
15672         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
15673         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15674         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15675         disable patterns for SSE math.
15676         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
15677         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15678         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15679         disable patterns for SSE math.
15680
15681 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
15682
15683         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
15684
15685 2007-01-18  Roger Sayle  <roger@eyesopen.com>
15686
15687         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
15688         VIEW_CONVERT_EXPR to the same type as it's operand.
15689
15690 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
15691
15692         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
15693         configured for long double 128.
15694
15695 2007-01-18  Mike Stump  <mrs@apple.com>
15696
15697         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
15698         error.
15699
15700 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
15701
15702         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
15703         type correct.
15704
15705 2007-01-18  Jan Hubicka  <jh@suse.cz>
15706
15707         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
15708         greater than NUM_VOP_FREE_BUCKETS.
15709
15710 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
15711
15712         * tree-ssa-structalias.c: Update comments.
15713         (ptabitmap_obstack): Removed.
15714         (pta_obstack): New.
15715         (oldpta_obstack): Ditto.
15716         (stats): Add a few members.
15717         (struct variable_info): Remove node, complex, address_taken, and
15718         indirect_target members. Add oldsolution member.
15719         (new_var_info): Do not initialize removed members.
15720         (constraint_expr_type): Remove INCLUDES.
15721         (constraint_graph): Add size, implicit_preds, rep,
15722         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
15723         (FIRST_REF_NODE): New macro.
15724         (LAST_REF_NODE): Ditto.
15725         (FIRST_ADDR_NODE): Ditto.
15726         (find): New function.
15727         (unite): Ditto.
15728         (dump_constraint): Do not handle INCLUDES.
15729         (insert_into_complex): Do not insert duplicate constraints.
15730         (condense_varmap_nodes): Renamed and rewritten into ...
15731         (merge_node_constraints): This. Also fix bug in handling of
15732         offseted copy constraints.
15733         (clear_edges_for_node): No longer need to deal with preds at all,
15734         or removing associated preds/succs.
15735         (merge_graph_nodes): Deal with indirect_cycles.
15736         Don't deal with predecessors.
15737         (add_implicit_graph_edge): New function.
15738         (add_pred_graph_edge): Ditto.
15739         (add_graph_edge): Don't deal with predecessors.
15740         (build_constraint_graph): Removed.
15741         (build_pred_graph): New function.
15742         (build_succ_graph): Ditto.
15743         (struct scc_info): Removed in_component. Added roots, dfs, and
15744         node_mapping. Remove visited_index, unification_queue.
15745         (scc_visit): Deal with union-find we do now.
15746         Deal with cycles with REF nodes.
15747         (collapse_nodes): Renamed and rewritten to ...
15748         (unify_nodes): This.
15749         (process_unification_queue): Removed.
15750         (topo_visit): Cleanup
15751         (do_da_constraint): Use find.
15752         (do_sd_constraint): Ditto.
15753         (do_ds_constraint): Ditto.
15754         (do_complex_constraint): Ditto.
15755         (init_scc_info): Update for removed and added members.
15756         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
15757         (find_indirect_cycles): This.
15758         (equivalence_class): New variable.
15759         (label_visit): New function.
15760         (perform_variable_substitution): Rewritten.
15761         (free_var_substitution_info): New function.
15762         (find_equivalent_node): Ditto.
15763         (move_complex_constraints): Ditto.
15764         (eliminate_indirect_cycles): Ditto.
15765         (solve_graph): Only propagate changed bits.
15766         Use indirect cycle elimination.
15767         Use find.
15768         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
15769         (tree_id_eq): Renamed to ...
15770         (tree_vi_eq): This. Update for member change
15771         (insert_id_for_tree): Renamed and rewritten to ...
15772         (insert_vi_for_tree): This.
15773         (lookup_id_for_tree): Renamed and rewritten to ...
15774         (lookup_vi_for_tree): This.
15775         (get_id_for_tree): Renamed and rewritten to ...
15776         (get_vi_for_tree): Ditto.
15777         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
15778         (process_constraint): Don't handle INCLUDES.
15779         Remove special ADDRESSOF case.
15780         (find_func_aliases): Rewrite to use vi functions instead of id
15781         ones.
15782         (create_function_info_for): Ditto.
15783         (create_variable_info_for): Ditto.
15784         (intra_create_variable_infos): Ditto.
15785         (merge_smts_into): Ditto.
15786         (find_what_p_points_to): Ditto.
15787         (init_base_vars): Ditto.
15788         (init_alias_vars): Ditto.
15789         (remove_preds_and_fake_succs): New function.
15790         (dump_sa_points_to_info): Dump new stats.
15791         (dump_solution_for_var): Use find.
15792         (set_used_smts): Fix formatting.
15793         (compute_points_to_sets): Updated for new functions.
15794         (ipa_pta_execute): Ditto.
15795
15796 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15797             Richard Sandiford  <richard@codesourcery.com>
15798
15799         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
15800         parallels.
15801         * calls.c (expand_call): If the return value is a PARALLEL,
15802         extract its first member.
15803         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
15804         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15805         use FUNCTION_EXTRA_EPILOGUE.
15806         (m68k_function_value): Return a PARALLEL if the return value
15807         is of a pointer type.
15808         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
15809         (FUNCTION_EXTRA_EPILOGUE): Remove.
15810         * config/m68k/m68k.md (D0_REG): New constant.
15811
15812 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15813
15814         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15815         output a NOP for empty epilogues.
15816
15817 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15818
15819         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
15820         before function.  Extend register save check to include all
15821         registers, not just integer ones.
15822
15823 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15824
15825         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
15826         (m68k_use_return_insn): ...this.
15827         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
15828         * config/m68k/m68k.c (use_return_insn): Rename to...
15829         (m68k_use_return_insn): ...this.
15830         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
15831         of USE_RETURN_INSN.
15832
15833 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15834
15835         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
15836         nearest even, fix denormal rounding overflow.
15837
15838 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15839
15840         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
15841         f%$smove and f%$move.
15842         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
15843         (extendsfdf2_cf): Use fdmove instead of f%&move.
15844         (truncdfsf2_cf): Use fsmove instead of f%$smove.
15845         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
15846
15847 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15848
15849         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
15850         GPR<-GPR moves.
15851
15852 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15853
15854         * real.h (real_format): Add a canonical_nan_lsbs_set field.
15855         (coldfire_single_format): Declare.
15856         (coldfire_double_format): Likewise.
15857         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
15858         of qnan_msb_set to determine the lower bits of a canonical
15859         NaN significand.
15860         (encode_ieee_double): Likewise.
15861         (encode_ieee_quad): Likewise.
15862         (ieee_single_format): Initialize canonical_nan_lsbs_set.
15863         (mips_single_format): Likewise.
15864         (ieee_double_format): Likewise.
15865         (mips_double_format): Likewise.
15866         (ieee_extended_motorola_format): Likewise.
15867         (ieee_extended_intel_96_format): Likewise.
15868         (ieee_extended_intel_128_format): Likewise.
15869         (ieee_extended_intel_96_round_53_format): Likewise.
15870         (ibm_extended_format): Likewise.
15871         (mips_extended_format): Likewise.
15872         (ieee_quad_format): Likewise.
15873         (mips_quad_format): Likewise.
15874         (vax_f_format): Likewise.
15875         (vax_d_format): Likewise.
15876         (vax_g_format): Likewise.
15877         (i370_single_format): Likewise.
15878         (i370_double_format): Likewise.
15879         (decimal_single_format): Likewise.
15880         (decimal_double_format): Likewise.
15881         (decimal_quad_format): Likewise.
15882         (c4x_single_format): Likewise.
15883         (c4x_extended_format): Likewise.
15884         (real_internal_format): Likewise.
15885         (coldfire_single_format): New real_format.
15886         (coldfire_double_format): Likewise.
15887         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
15888         canonical_nan_lsbs_set.
15889         (pdp11_d_format): Likewise.
15890         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
15891         if TARGET_COLDFIRE_CPU.
15892
15893 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15894
15895         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
15896         (output_call, m68k_legitimize_call_address): Declare.
15897         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
15898         parenthesees.  Add support for a 'W' constraint.
15899         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
15900         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
15901         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
15902         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
15903         variables.
15904         (override_options): Initialize them.  Do not set flag_no_function_cse
15905         for TARGET_ID_SHARED_LIBRARY.
15906         (m68k_output_pic_call): Delete.
15907         (m68k_legitimize_call_address): New function.
15908         (print_operand): Remove the %o prefix.  Handle the %p prefix.
15909         (output_call): New function.
15910         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
15911         target address from the GOT if symbolic jumps are not allowed.
15912         * config/m68k/m68k.md (call, general_operand): Do not set
15913         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
15914         Merge separate flag_pic and !flag_pic define_insns into...
15915         (*call, *call_value): ...these new patterns.  Match the address
15916         rather than the containing MEM and require it to be a call_operand.
15917         Use output_call to generate the asm template.
15918         * config/m68k/predicates.md (const_call_operand): New predicate.
15919         (call_operand): Likewise.
15920
15921 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15922
15923         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
15924         (STACK_GROWS_DOWNWARD): Define to 1.
15925         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
15926         comments, emphasizing that these values are only defaults.
15927         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
15928         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
15929
15930 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15931
15932         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
15933
15934 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15935             Richard Sandiford  <richard@codesourcery.com>
15936
15937         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
15938         (FP_REGNO_P): New macros.
15939         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
15940         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
15941         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
15942         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
15943
15944 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15945
15946         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15947         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
15948         to $tmake_file.
15949         * config/m68k/t-floatlib: New file, extracting common code from...
15950         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
15951         * config/m68k/t-uclinux: Here.
15952         * config/m68k/fpgnulib.c: Do not compile extendeed precision
15953         routines on ColdFire targets.
15954
15955 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15956
15957         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15958         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
15959         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
15960         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
15961         explicitly set MOTOROLA to 1.
15962         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
15963
15964 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15965             Nathan Sidwell  <nathan@codesourcery.com>
15966
15967         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
15968         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
15969         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
15970         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
15971         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
15972         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
15973         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
15974         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
15975         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
15976         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15977         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
15978         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
15979         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
15980         (DBX_REGISTER_NUMBER): Delete.
15981         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
15982         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15983         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
15984
15985 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15986
15987         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
15988         * config/flat.h: New file.
15989         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
15990         OBJECT_FORMAT_FLAT.
15991         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
15992         indirect references for -msep-data or -mid-shared-library.
15993         Do not use PC-relative code addresses either.
15994         * config/m68k/m68k.c (override_options): Restrict -fPIC error
15995         to -mpcrel.
15996         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
15997         for shared libraries and crt1.o for executables.  Use crti.o and
15998         crtbegin.o.
15999         (ENDFILE_SPEC): Use crtend.o and crtn.o.
16000         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
16001         Do not add -elf2flt or -shared-lib-id options here.
16002         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
16003         Pass -shared-lib-id if -mid-shared-library, taking the library
16004         identifier from -mshared-library-id if given, otherwise
16005         defaulting to 0.
16006         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
16007         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
16008         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
16009         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
16010         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
16011         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
16012         and crtend.o.
16013         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
16014         jump sequence for ISA A and ISA A+.
16015         (PICJUMP): Likewise.
16016
16017 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16018
16019         * config.gcc (m68k-*-uclinux*): Base the port on the common
16020         and m68k GNU/Linux files rather than on the generic ELF ones.
16021         * config/m68k/uclinux.h (TARGET_VERSION): Override.
16022         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
16023
16024 2007-01-18  Julian Brown  <julian@codesourcery.com>
16025             Richard Sandiford  <richard@codesourcery.com>
16026
16027         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
16028         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
16029         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
16030         before redefining.
16031         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
16032         80 unconditionally.
16033         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
16034
16035 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16036
16037         * doc/install.texi: Document m68k-uclinuxoldabi.
16038         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
16039         * config/m68k/uclinux-oldabi.h: New file, copied from
16040         config/m68k/uclinux.h.
16041
16042 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
16043
16044         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
16045         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
16046         (m32r_compute_frame_size): Use unsigned for regno.
16047         (m32r_reload_lr): Use gen_frame_mem.
16048         (pop): New.
16049         (m32r_output_function_epilogue): Don't output the function epilogue
16050         textually here.
16051         (m32r_expand_epilogue): New.
16052         (direct_return): Return false if the function has the interrupt
16053         attribute.
16054         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
16055         * config/m32r/m32r.md (epilogue): New expander.
16056         (return_lr, return_rte): New insns.
16057         (return): Make it expander.
16058         (return_normal): New expander.
16059
16060 2007-01-18  Josh Conner  <jconner@apple.com>
16061
16062         PR target/30485
16063         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
16064         support for UNLE, UNLT, UNGE, and UNGT.
16065
16066 2007-01-18  Jan Hubicka  <jh@suse.cz>
16067
16068         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
16069         * tree-tailcall (add_virtual_phis): Likewise.
16070         (optimize_tail_call): Return TODOs.
16071         (execute_tail_calls): Return TODOs.
16072         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
16073         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
16074         changed.
16075         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
16076         Cleanup cfg using TODO.
16077         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
16078         * passes.c (execute_function_todo): When cleanup did something, remove
16079         unused locals.
16080         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
16081         (make_edges): Don't cleanup_cfg.
16082
16083 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
16084
16085         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
16086         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
16087         operate on the top of stack.
16088         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
16089         register handling of instructions that output to the second
16090         stack slot.
16091         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
16092         (move_for_stack_reg): Special-case check for dead destination
16093         stack slot for constant load of 1.0 inside UNSPEC_TAN.
16094
16095         * config/i386/i386.md (UNSPEC_TAN): New constant.
16096         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
16097         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
16098         to correctly model move of constant 1.0 to top stack slot.
16099         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
16100         (unnamed peephole2 pattern): Remove corresponding peephole2
16101         pattern that optimizes tan insn and loading of constant 1.0.
16102         (tanxf2): Use fptanxf4_i387.
16103         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
16104         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
16105         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
16106         disable patterns for SSE math.
16107         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
16108         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
16109
16110 2007-01-18  Dirk Mueller  <dmueller@suse.de>
16111             Richard Guenther <rguenther@suse.de>
16112
16113         PR diagnostic/8268
16114         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
16115         * common.opt (Warray-bounds): Add new warning option.
16116         * c-opts.c (c_common_handle_option): Define -Warray-bounds
16117         if -Wall is given.
16118         * Makefile.in: make tree-vrp.o depend on toplev.h
16119         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
16120         is enabled.
16121         (check_array_refs, check_array_bounds, check_array_ref): New.
16122
16123 2007-01-18  Jan Hubicka  <jh@suse.cz>
16124
16125         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
16126         (execute_ssa_ccp): Return flags conditionally.
16127         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
16128         changed.
16129         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
16130
16131 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
16132
16133         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
16134         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
16135
16136         * Makefile.c (GTFILES): Add cfglayout.h.
16137         * gengtype.c (open_base_files): Likewise.
16138         * cfglayout.c (cfg_layout_function_footer,
16139         cfg_layout_function_header) Reindent to make gengtype happy.
16140         * cfglayout.h (cfg_layout_function_footer,
16141         cfg_layout_function_header): Add GTY(()) marker.
16142
16143         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
16144
16145 2007-01-18  Ben Elliston  <bje@au.ibm.com>
16146
16147         * genautomata.c (write_automata): Include xstrerror output in the
16148         error message if writing the DFA description file fails.
16149
16150 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
16151
16152         * config/mips/mips-protos.h (mips_output_external): Make it
16153         return void.
16154         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
16155         * config/mips/mips.c (irix_output_external_libcall): Likewise.
16156         (extern_list): Likewise.
16157         (extern_head): Likewise.
16158         (TARGET_ASM_FILE_END): Likewise.
16159         (mips_file_end): Likewise.
16160         (mips_output_external): Rewritten.
16161
16162 2007-01-18  Ben Elliston  <bje@au.ibm.com>
16163
16164         * genpreds.c (write_insn_preds_c): Only write out the function
16165         body for regclass_for_constraint if we have register constraints.
16166
16167 2007-01-17  Tom Tromey  <tromey@redhat.com>
16168
16169         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
16170         * doc/install.texi (Testing): Use sourceware.org.
16171         (Binaries): Likewise.
16172         (Specific): Likewise.
16173         * doc/contrib.texi (Contributors): Use sourceware.org.
16174
16175 2007-01-17  Anatoly Sokolov <aesok@post.ru>
16176
16177         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
16178         (AVR_ENHANCED): Rename to ...
16179         (AVR_HAVE_MUL): ... new.
16180         (avr_enhanced_p): Rename to ...
16181         (avr_have_mul_p): ... new.
16182         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
16183         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
16184         * config/avr/avr.c (avr_enhanced_p): Rename to ...
16185         (avr_have_mul_p): ... new.
16186         (base_arch_s): Rename 'enhanced' to 'have_mul'.
16187         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
16188         'avr_enhanced_p' and 'enhanced'.
16189         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
16190         AVR_HAVE_MUL instead of AVR_ENHANCED.
16191         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
16192         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
16193         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
16194         instead of AVR_ENHANCED.
16195         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
16196         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
16197         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
16198
16199 2007-01-17  Ian Lance Taylor  <iant@google.com>
16200
16201         * vec.h (VEC_reserve_exact): Define.
16202         (vec_gc_p_reserve_exact): Declare.
16203         (vec_gc_o_reserve_exact): Declare.
16204         (vec_heap_p_reserve_exact): Declare.
16205         (vec_heap_o_reserve_exact): Declare.
16206         (VEC_OP (T,A,reserve_exact)): New static inline function, three
16207         versions.
16208         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
16209         negative parameter.
16210         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
16211         (VEC_OP (T,A,copy)) [all versions]: Likewise.
16212         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
16213         * vec.c (calculate_allocation): Add exact parameter.  Change all
16214         callers.
16215         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
16216         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
16217         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
16218         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
16219         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
16220         (vec_heap_p_reserve_exact): New function.
16221         (vec_heap_o_reserve_exact): New function.
16222
16223 2007-01-17  Jan Hubicka  <jh@suse.cz>
16224
16225         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
16226
16227 2007-01-17  Eric Christopher  <echristo@apple.com>
16228
16229         * config.gcc: Support core2 processor.
16230
16231 2007-01-16  Jan Hubicka  <jh@suse.cz>
16232
16233         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
16234         the names, just unlink the chain so we don't crash on dangling pointers
16235         to dead SSA names.
16236
16237 2007-01-16  Jan Hubicka  <jh@suse.cz>
16238
16239         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
16240         * tree-pass.h: Reorder to make IPA passes appear toegher.
16241         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
16242         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
16243         parameters, do not call early inliner.
16244         * ipa-inline.c: Update comments.  Include tree-flow.h
16245         (cgraph_decide_inlining): Do not compute inlining parameters.
16246         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
16247         be called with function context set up.
16248         (pass_ipa_inline): Remove unreachable functions before pass.
16249         (cgraph_early_inlining): Simplify assuming to be called from the
16250         PM as local pass.
16251         (pass_early_inline): New pass.
16252         (cgraph_gate_ipa_early_inlining): New gate.
16253         (pass_ipa_early_inline): Turn into simple wrapper.
16254         (compute_inline_parameters): New function.
16255         (gate_inline_passes): New gate.
16256         (pass_inline_parameters): New pass.
16257         (apply_inline): Move here from tree-optimize.c
16258         (pass_apply_inline): New pass.
16259         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
16260         transforming.
16261         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
16262         doing them by hand.
16263         (tree_function_versioning): Do not allocate dummy struct function.
16264         * tree-inline.h (optimize_inline_calls): Update prototype.
16265         * tree-optimize.c (execute_fixup_cfg): Export.
16266         (pass_fixup_cfg): Remove
16267         (tree_rest_of_compilation): Do not apply inlines.
16268         * tree-flow.h (execute_fixup_cfg): Declare.
16269         * Makefile.in (gt-passes.c): New.
16270         * passes.c: Include gt-passes.h
16271         (init_optimization_passes): New passes.
16272         (nnodes, order): New static vars.
16273         (do_per_function_toporder): New function.
16274         (execute_one_pass): Dump current pass here.
16275         (execute_ipa_pass_list): Don't dump current pass here.
16276
16277 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
16278
16279         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
16280         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
16281
16282 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
16283
16284         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
16285         (strong_alias): Define.
16286         (__gcc_qmul): Provide non-FMA for soft-float.
16287         (__gcc_qdiv): Same.
16288         (__gcc_qneg): New.
16289         (__gcc_qeq): New.
16290         (__gcc_qle): New.
16291         (__gcc_qge): New.
16292         (__gcc_qunord): New.
16293         (__gcc_stoq): New.
16294         (__gcc_dtoq): New.
16295         (__gcc_qtos): New.
16296         (__gcc_qtod): New.
16297         (__gcc_qtoi): New.
16298         (__gcc_qtou): New.
16299         (__gcc_itoq): New.
16300         (__gcc_utoq): New.
16301         (fmsub): New.
16302         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
16303         soft-float functions.
16304         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
16305         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
16306         about long double soft float.
16307
16308 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
16309             Tehila Meyzels  <tehila@il.ibm.com>
16310
16311         * tree-vectorizer.h (is_pattern_stmt_p): New.
16312         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
16313         formatting (tabs instead of spaces). Cleanup and clarify setting
16314         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
16315         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
16316         (vectorizable_type_demotion): Check that types are integral.
16317         (vectorizable_type_promotion): Likewise.
16318         (vectorizable_store): Fix typo.  Eliminate new-line at end of
16319         comments.
16320
16321 2007-01-16  Jan Hubicka  <jh@suse.cz>
16322
16323         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
16324         cgraph edges too.
16325
16326 2007-01-15  Eric Christopher  <echristo@apple.com>
16327
16328         * ifcvt.c: Include vec.h, vecprim.h.
16329         (check_cond_move_block): New argument regs.
16330         Reorganize. Add registers used to regs.
16331         (cond_move_process_if_block): Use regs set above as
16332         loop bounds.
16333
16334 2007-01-15  Eric Christopher  <echristo@apple.com>
16335
16336         * config/darwin.h: Update copyright.
16337         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
16338         (LINK_COMMAND_SPEC): Add -u.
16339         (LINK_SPEC): Fix umbrella for above.
16340
16341 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
16342
16343         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
16344         glibc CVS.
16345
16346 2007-01-15  Tom Tromey  <tromey@redhat.com>
16347
16348         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
16349         * doc/install.texi (Testing): Don't mention jacks.
16350         (Configuration): Document --enable-java-maintainer-mode.  Move
16351         --with-java-home to libgcj-specific section.  Document
16352         --with-ecj-jar.
16353         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
16354
16355 2007-01-15  Jan Hubicka  <jh@suse.cz>
16356
16357         * tree-ssa-dce.c (DCE_TODOs): New.
16358         (propagate_necessity): Return if something changed.
16359         (eliminate_unnecessary_stmts): Likewise.
16360         (perform_tree_ssa_dce): Return TODO flags when needed.
16361         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
16362
16363 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
16364
16365         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
16366         (fyl2x_extend<mode>xf3_i387): New insn pattern.
16367         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
16368         patterns using X87MODEF12 mode macro.  Extend operand 1
16369         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
16370         (log10<mode>2): Ditto.
16371         (log2<mode>2): Ditto.
16372         (log1p<mode>2): Ditto.
16373         (logb<mode>2): Ditto.
16374         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
16375         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
16376         (*fxtractxf3_i387): Rename from *fxtractxf3.
16377         (fxtract_extend<mode>xf3_i387): New insn pattern.
16378         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
16379         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
16380         and gen_fyl2xxf3_i387().
16381
16382 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
16383
16384         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
16385         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
16386         get_loop_exit_edges.  Changed return type to bool.
16387         * cfgloop.h (fix_loop_placement): Declaration removed.
16388
16389 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
16390
16391         * param.h (MIN_VECT_LOOP_BOUND): New.
16392         * params.def (MIN_VECT_LOOP_BOUND): New.
16393         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
16394         argument - minimum threshold for number of iterations.
16395         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
16396         argument to declaration.
16397         * tree-vect-analyze.c (vect_analyze_operations): Check value of
16398         MIN_VECT_LOOP_BOUND.
16399         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
16400         slpeel_tree_peel_loop_to_edge with additional argument.
16401         (vect_do_peeling_for_alignment): Likewise.
16402         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
16403
16404 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
16405
16406         PR target/30413
16407         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
16408         operands of size 1.
16409
16410 2007-01-14  Jan Hubicka  <jh@suse.cz>
16411
16412         * tree-dfa.c (remove_referenced_var): New function.
16413         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
16414         prune referenced vars list too.
16415         * tree-flow.h (remove_referenced_var): Declare.
16416
16417 2007-01-14  Jan Hubicka  <jh@suse.cz>
16418
16419         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
16420         separately.
16421         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
16422         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
16423         * except.h (verify_eh_throw_table_statements): Kill prototype.
16424         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
16425         into call exrepssions.
16426         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
16427         eh trhow verifier.
16428         * tree-cfg.c: Include pointer-set.h.
16429         (verify_node_sharing): Work on pointer set.
16430         (verify_eh_throw_stmt_node): New.
16431         (verify_stmts): Use pointers sets, verify throw_stmt.
16432
16433 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
16434
16435         * ipa-reference.c (analyze_function): Consider also addresses taken
16436         in phi nodes.
16437
16438 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16439
16440         * c-typeck.c (null_pointer_constant_p): Replace use of
16441         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16442         (build_c_cast): Likewise.
16443
16444 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16445
16446         * tree.h (force_fit_type_double): Remove unused final argument.
16447         * c-common.c (constant_expression_warning): Replace use of
16448         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16449         (convert_and_check): Likewise.
16450         (shorten_compare): Update call to force_fit_type_double.
16451         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
16452         * convert.c (convert_to_pointer): Update call to
16453         force_fit_type_double.
16454         * fold-const.c (force_fit_type_double): Remove overflowed_const
16455         argument.
16456         (int_const_binop, fold_convert_const_int_from_int,
16457         fold_convert_const_int_from_real, fold_div_compare,
16458         fold_sign_changed_comparison, fold_unary, fold_negate_const,
16459         fold_abs_const, fold_not_const): Remove the final argument from
16460         calls to force_fit_type_double.
16461
16462 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16463
16464         * configure.ac: Set insn to "nop" for spu-*-* also.
16465         * configure: Regenerate.
16466
16467 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
16468
16469         * builtins.def : Add BUILT_IN_FREE.
16470
16471 2007-01-12  Jan Hubicka  <jh@suse.cz>
16472
16473         PR tree-optimization/30443
16474         * tree-inline.c (tree_function_versioning): Do not optimize when
16475         cloning for inlining.
16476
16477 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
16478
16479         * doc/loop.texi: Document recording of loop exits.
16480         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
16481         (update_single_exits_after_duplication,
16482         update_single_exit_for_duplicated_loop,
16483         update_single_exit_for_duplicated_loops): Removed.
16484         (duplicate_loop_to_header_edge): Do not call
16485         update_single_exits_after_duplication and
16486         update_single_exit_for_duplicated_loops.
16487         (loop_version): Do not update single_exit information.
16488         (fix_loop_structure): Use record_loop_exits instead of
16489         mark_single_exit_loops.
16490         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
16491         the lists of loop exits.
16492         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
16493         split_edge, merge_blocks): Update the lists of loop exits.
16494         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
16495         loop_optimizer_init.
16496         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
16497         of mark_single_exit_loops.
16498         (loop_optimizer_finalize): Call release_recorded_exits.
16499         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
16500         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
16501         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
16502         update single exit information.
16503         * lambda-code.c (perfect_nestify): Ditto.
16504         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
16505         (mark_single_exit_loops): Removed.
16506         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
16507         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
16508         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
16509         functions.
16510         (get_loop_exit_edges, single_exit): Use recorded exit lists.
16511         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
16512         (verify_loop_structure): Verify consistency of the exit lists.
16513         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
16514         (set_single_exit): Removed.
16515         * cfgloop.h (struct loop_exit): New function.
16516         (struct loop): single_exit_ field replaced by exits field.
16517         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
16518         (struct loops): Added exits hash.
16519         (mark_single_exit_loops, set_single_exit): Declaration removed.
16520         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
16521
16522 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16523
16524         * doc/invoke.texi: Avoid use of @headitem.
16525
16526 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16527
16528         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
16529
16530 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16531
16532         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
16533         list of targets.
16534
16535 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16536             Richard Sandiford  <richard@codesourcery.com>
16537
16538         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
16539         * config/m68k/m68k.opt: Resort options.
16540         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
16541
16542 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16543             Richard Sandiford  <richard@codesourcery.com>
16544
16545         * doc/invoke.texi: Document the macros that are defined by
16546         m68k's -mtune and -mhard-float options.
16547         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
16548         (m68k_cpp_cpu_family): Likewise.
16549         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
16550         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
16551         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
16552         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
16553         (m68k_cpp_cpu_family): Likewise.
16554
16555 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16556
16557         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
16558         macros besides mc68000 as tuning macros.  Use a switch statement
16559         to set them and mcpu32.
16560
16561 2007-01-12  Julian Brown  <julian@codesourcery.com>
16562
16563         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
16564         (TARGET_68040_ONLY): Rename to...
16565         (TARGET_68040): ...this.
16566         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
16567         * config/m68k/m68k.md: Likewise.
16568
16569 2007-01-12  Julian Brown  <julian@codesourcery.com>
16570             Nathan Sidwell  <nathan@codesourcery.com>
16571             Richard Sandiford  <richard@codesourcery.com>
16572
16573         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
16574         the -mcpu= argument associated with the --with-cpu setting.
16575         Define M68K_DEFAULT_TUNE to the default -mtune= option,
16576         if different from the one implied by the -mcpu setting.
16577         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
16578         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
16579         * doc/invoke.texi: Mention ColdFire in the introduction to the
16580         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
16581         -mno-div and -mhard-float options.  Make -m68881 a synonym for
16582         -mhard-float.  Document the previously-undocumented -m5206e,
16583         -m528x, -m5307 and -m5407 options.  Tweak the existing option
16584         documentation for consistency.
16585         * doc/install.texi: Mention new --with-cpu arguments.
16586         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
16587         default CPU if neither -mcpu nor -march are specified.
16588         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
16589         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
16590         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
16591         using m68k_tune to decide between families that implement the
16592         same ISA.  Use m68k_tune to set __mcfv4e__.
16593         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
16594         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
16595         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
16596         (FL_ISA_C, FL_ISA_MMU): New macros.
16597         (MASK_COLDFIRE): Delete.
16598         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
16599         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
16600         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
16601         (TARGET_HARD_FLOAT): Do not define here.
16602         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
16603         (TUNE_68000): New macro.
16604         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
16605         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
16606         (TUNE_CFV2): Redefine in terms of m68k_tune.
16607         (uarch_type, target_device, fpu_type): New enums.
16608         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
16609         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
16610         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
16611         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
16612         (FL_FOR_isa_c): New macros.
16613         (m68k_isa): New enum.
16614         (m68k_target_selection): New structure.
16615         (all_devices, all_isas, all_microarchs): New tables.
16616         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
16617         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
16618         (MASK_ALL_CPU_BITS): Delete.
16619         (m68k_find_selection): New function.
16620         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
16621         Map the legacy target options to a combination of the new ones.
16622         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
16623         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
16624         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
16625         settings.
16626         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
16627         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
16628         properties.
16629         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
16630         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
16631         * config/m68k/m68k-devices.def: New file.
16632
16633 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16634             Nathan Sidwell  <nathan@codesourcery.com>
16635
16636         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
16637         (SUBTARGET_EXTRA_SPECS): New macros.
16638         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
16639         use %(asm_cpu_spec) instead.
16640         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
16641         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
16642         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
16643         (EXTRA_SPECS): Rename to...
16644         (SUBTARGET_EXTRA_SPECS): ...this.
16645
16646 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16647             Richard Sandiford  <richard@codesourcery.com>
16648             Julian Brown  <julian@codesourcery.com>
16649
16650         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16651         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
16652         to the configuration's default CPU.
16653         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
16654         Remove default masks.
16655         (m680[012]0-*-*): Set the default with_cpu to the first part of
16656         the target name.
16657         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
16658         (m68k*-*-linux): Extend the --with-cpu handling to...
16659         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
16660         and m68010.  Don't set target_cpu_default2.
16661         * doc/install.texi: Document --with-cpu for m68k.
16662         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
16663         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
16664         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
16665         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
16666         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
16667         (ASM_SPEC): Remove use of %(asm_cpu_default).
16668         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
16669         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
16670         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
16671         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
16672         __HAVE_FPU__ if TARGET_HARD_FLOAT.
16673         (TARGET_DEFAULT): Delete.
16674         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
16675         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
16676         (CPP_CPU_SPEC): Delete.
16677         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
16678         the appropriate string.
16679         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
16680         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
16681         (ASM_SPEC): Don't use %(asm_default_spec).
16682         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
16683         TARGET_DEFAULT and add MASK_68881.
16684         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
16685
16686 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16687
16688         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
16689         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
16690         MASK_68010 alongside MASK_68020.
16691         * doc/invoke.texi: Document -m68010.
16692         * config/m68k/m68k.opt (m68010): New.
16693         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
16694         if TUNE_68010.
16695         (TUNE_68010): New macro.
16696         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
16697         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
16698         (M68K_CPU_m68332): Add MASK_68010.
16699         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
16700         fallback definition.
16701         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
16702         defines.
16703         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
16704         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
16705         to all entries that use MASK_68020.
16706         (output_move_simode_const, output_move_himode, output_move_qimode)
16707         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
16708         instead of TARGET_68020 to select clr behavior.  Remove comment
16709         about there being no TARGET_68010.
16710         * config/m68k/m68k.md: Likewise throughout.
16711
16712 2007-01-12  Julian Brown  <julian@codesourcery.com>
16713
16714         * config/m68k/m68k.h (TARGET_ISAB): New macro.
16715         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
16716         * config/m68k/m68k.md: Likewise.
16717
16718 2007-01-12  Julian Brown  <julian@codesourcery.com>
16719
16720         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
16721         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
16722
16723 2007-01-12  Julian Brown  <julian@codesourcery.com>
16724
16725         * config/m68k/m68k.h (TUNE_68040_60): New macro.
16726         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
16727         * config/m68k/m68k.md: Likewise.
16728
16729 2007-01-12  Julian Brown  <julian@codesourcery.com>
16730             Richard Sandiford  <richard@codesourcery.com>
16731
16732         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
16733         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
16734         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
16735         TARGET_CPU32.
16736         (TARGET_CPU32): Rename to...
16737         (TUNE_CPU32): ...this.
16738         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
16739         (TUNE_CFV2): New macros.
16740         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
16741         remove conditions that are implied by TARGET_68020.
16742         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
16743         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
16744         (m68k_output_function_epilogue): Likewise.
16745         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
16746         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
16747         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
16748         non-68000 timings.  Refactor multiplication and division costs.
16749         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
16750         TUNE_CPU32 instead of TARGET_CPU32.
16751         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
16752         and TUNE_68060 instead of TARGET_68060.
16753         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
16754         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
16755         TARGET_CPU32.
16756         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
16757         && !TARGET_COLDFIRE" to choose between moveq and clr.
16758         Likewise in the unnamed movsf pattern.
16759         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
16760         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
16761         ashiftrt pattern.
16762
16763 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16764
16765         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
16766         of tabbing before backslashes.
16767
16768 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16769
16770         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
16771         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
16772         (ASM_OUTPUT_INTERNAL_LABEL): Define.
16773
16774 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16775
16776         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
16777         find_interesting_uses_cond.
16778         (find_interesting_uses_cond): Use extract_cond_operands.
16779         (rewrite_use_compare): Use extract_cond_operands and
16780         force_gimple_operand_bsi.  Do not call update_stmt.
16781         (determine_use_iv_cost_condition): Use extract_cond_operands.
16782         Return cheaper of using original bound and changing the exit bound.
16783
16784 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16785
16786         PR tree-optimization/29516
16787         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
16788         most_expensive_mult_to_index, addr_to_parts,
16789         create_mem_ref, maybe_fold_tmr): Make the type of
16790         fields of TARGET_MEM_REF sizetype.
16791         (move_fixed_address_to_symbol, move_pointer_to_base):
16792         New functions.
16793         * tree.def (TARGET_MEM_REF): Add comment on types of
16794         the operands.
16795
16796 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
16797
16798         * c-common.c (vector_types_convertible_p): Treat opaque types as
16799         always convertible if they have the same size, but not otherwise.
16800
16801 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
16802
16803         * ifcvt.c (struct noce_if_info): Add comments to the fields.
16804         Remove the b_unconditional field.
16805         (noce_try_sign_mask): Do not look at b_unconditional.
16806         (noce_process_if_block): Do not use merge_if_blocks.  Update
16807         the CFG here.  Do not set b_unconditional.
16808         (cond_move_process_if_block): Likewise.
16809         (find_cond_trap): Likewise.
16810         (check_cond_move_block): Require simple jump insns at the end
16811         of the basic block.
16812
16813 2007-01-11  Jan Hubicka  <jh@suse.cz>
16814
16815         PR tree-optimization/1046
16816         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
16817         when alias info is not ready.
16818         (pass_tail_recursion): Do not require aliasing.
16819         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
16820         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
16821         * tree-ssa-copy.c (pass_copy_prop): Likewise.
16822         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
16823         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
16824         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
16825         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
16826         before inlining.
16827         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
16828         When aliasing is not build, mark statement as volatile.
16829
16830 2007-01-11  Tom Tromey  <tromey@redhat.com>
16831
16832         PR preprocessor/15185, PR preprocessor/20989:
16833         * doc/cppopts.texi <-MT>: Update description of algorithm for
16834         computing default target.
16835         <-M, -MD>: Reword "basename" text.
16836
16837 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16838
16839         * builtins.c (expand_builtin_pow, expand_builtin_powi,
16840         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
16841         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
16842         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
16843         fold_builtin_bswap, real_constp, fold_builtin_pow,
16844         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
16845         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
16846         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16847         * convert.c (convert_to_pointer): Likewise.
16848         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16849         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
16850         const_binop, fold_convert_const_int_from_int,
16851         fold_convert_const_int_from_real,
16852         fold_convert_const_real_from_real, sign_bit_p,
16853         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
16854         fold_sign_changed_comparison, fold_unary, fold_comparison,
16855         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
16856         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
16857         * print-tree.c (print_node_brief, print_node): Likewise.
16858         * stor-layout.c (place_field, layout_type): Likewise.
16859         * tree-chrec.c (keep_cast): Likewise.
16860         * tree.c (build_vector, build_real, build_real_from_int_cst,
16861         build_complex): Likewise.
16862
16863 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16864
16865         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
16866         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
16867
16868 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
16869
16870         * configure.ac (strict1_warn): Rename to strict_warn.
16871         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
16872         cc_set_by_configure, quoted_cc_set_by_configure,
16873         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
16874         all_boot_languages, all_stagestuff): Remove.
16875         (target_list): Remove bootstrap targets.
16876         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
16877         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
16878         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
16879         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
16880         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
16881         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
16882         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
16883         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
16884         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
16885         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
16886         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
16887         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
16888         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
16889         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
16890         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
16891         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
16892         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
16893         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
16894         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
16895         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
16896         (mostlyclean): Adjust.
16897         (clean, distclean): Don't mention bootstrap stuff.
16898         * configure: Regenerate.
16899         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
16900         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
16901         treelang/config-lang.in (stagestuff): Remove.
16902         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
16903         stageprofile, stagefeedback, stagestuff): Remove mention.
16904
16905 2007-01-11  Nick Clifton  <nickc@redhat.com>
16906
16907         * config/mcore/predicates.md (mcore_general_movesrc_operand):
16908         Accept CONSTs.
16909         (mcore_general_movdst_operand): Do not accept CONST_INTs.
16910         (mcore_arith_K_S_operand): Run the test for the S constraint not
16911         the test for the M constraint.
16912         (mcore_addsub_operand): Do not accept integer values that are
16913         larger than 32 bits.
16914         * config/mcore/mcore.md: Remove unused constraints from split.
16915         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
16916         (addsi3): Likewise.
16917         (allocate_stack): Likewise.
16918         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
16919         operands to 32 bits.
16920         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
16921         INTVAL.
16922         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
16923         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
16924         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
16925         mcore_output_bclri, mcore_output_andn, output_inline_const,
16926         mcore_output_move, mcore_output_movedouble): Likewise.
16927         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
16928         (output_inline_const): Likewise.
16929         (output_inline_const): Fix format strings used in sprintf
16930         statements.
16931         * config/mcore/mcore-protos.h: Update prototypes for changed
16932         functions in mcore.c.
16933         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
16934         HOST_WIDE_INT and not int.
16935         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
16936         CONST_OK_FOR_N): Likewise.
16937         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
16938         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
16939         an INTVAL.
16940
16941 2007-01-10  Jan Hubicka  <jh@suse.cz>
16942
16943         * tree-vrp.c (remove_range_assertions): Release defs.
16944         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
16945         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
16946
16947 2007-01-10  Paul Brook  <paul@codesourcery.com>
16948
16949         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
16950         * config/arm/arm.md (mulsi3subsi): New insn.
16951
16952 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
16953
16954         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
16955         (tree_transform_and_unroll_loop): New.
16956         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
16957         Declare.
16958
16959 2007-01-10  Robert Kennedy <jimbob@google.com>
16960
16961         * fold-const.c (fold_comparison): Fold comparisons like (x *
16962         1000 < 0) to (x < 0).
16963
16964 2007-01-10  Ian Lance Taylor  <iant@google.com>
16965
16966         * tree-pretty-print.c (dump_generic_node): Print parentheses when
16967         operands have the same priority.
16968
16969 2007-01-10  Tom Tromey  <tromey@redhat.com>
16970
16971         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
16972         (fold_binary): Likewise.
16973         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
16974         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
16975         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
16976         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
16977         * langhooks.h (struct lang_hooks): Removed field
16978         'can_use_bit_fields_p'.
16979
16980 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
16981
16982         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
16983
16984 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
16985
16986         * function.c (get_last_funcdef_no): New function.
16987         * function.h (get_last_funcdef_no): Declare.
16988         * tree-inline.c (initialize_cfun): Add initialization.
16989         (tree_function_versioning): Cleanup.
16990
16991 2007-01-10  Jan Hubicka  <jh@suse.cz>
16992
16993         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
16994         PHIs.
16995
16996 2007-01-10  Sa Liu  <saliu@de.ibm.com>
16997             Ben Elliston  <bje@au.ibm.com>
16998
16999         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
17000         for SAVE_NONLOCAL and Pmode for any other save level.
17001         * spu-protos.h (spu_restore_stack_block): Declare.
17002         * spu.md (save_stack_block): Remove.
17003         (restore_stack_block): Call spu_restore_stack_block.
17004         * spu.c (spu_restore_stack_block): New function.
17005         (spu_expand_epilogue): Remove old comment.
17006
17007 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
17008
17009         PR tree-optimization/30322
17010         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
17011         (cand_value_at): Return the value as aff_tree.
17012         (may_eliminate_iv): Convert the bound from aff_tree to tree.
17013         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
17014         aff_combination_mult): New functions.
17015         (aff_combination_add): Use aff_combination_add_cst.
17016         (aff_combination_convert): Allow conversions to a wider type.
17017         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
17018         * tree-affine.h (aff_combination_mult): Declare.
17019
17020 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
17021
17022         * doc/tm.texi: Update documentation to reflect reality of exec
17023         and start file search behaviours. Update copyright year.
17024         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
17025         header file directories.
17026
17027 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
17028
17029         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
17030         (*cosxf2): Rename to cosxf2_i387.
17031         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
17032         using X87MODEF12 mode macro. Rename patterns to
17033         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
17034         for SSE math.
17035         (*cosdf2, *cossf2): Ditto.
17036         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
17037         to match extended input operands.
17038         (sincos<mode>3): New expander.
17039         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
17040         insn patterns and corresponding splitters.
17041
17042 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
17043
17044         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
17045         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
17046
17047 2007-01-09  Nicolas Pitre  <nico@cam.org>
17048
17049         PR target/30173
17050         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
17051
17052 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
17053
17054         * target.h (struct gcc_target): New field library_rtti_comdat.
17055         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
17056         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
17057         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
17058         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
17059
17060 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
17061
17062         * doc/invoke.texi (Optimize Options): Correct description of -O0.
17063
17064 2007-01-08  Richard Guenther  <rguenther@suse.de>
17065
17066         * tree.h (force_fit_type_double): Export.
17067         (force_fit_type): Remove.
17068         * fold-const.c (force_fit_type_double): New function.
17069         (force_fit_type): Remove.
17070         (int_const_binop): Use it.
17071         (fold_convert_const_int_from_int): Likewise.
17072         (fold_convert_const_int_from_real): Likewise.
17073         (fold_div_compare): Likewise.
17074         (fold_sign_changed_comparison): Likewise.
17075         (fold_unary): Likewise.
17076         (fold_negate_const): Likewise.
17077         (fold_abs_const): Likewise.
17078         (fold_not_const): Likewise.
17079         * c-common.c (shorten_compare): Use force_fit_type_double.
17080         * convert.c (convert_to_pointer): Likewise.
17081
17082 2007-01-08  Richard Guenther  <rguenther@suse.de>
17083
17084         * tree.h (build_int_cst_wide_type): Export.
17085         * tree.c (build_int_cst_wide_type): New function.
17086         (build_int_cst_wide): Fix comment.
17087         * builtins.c (fold_builtin_object_size): Use build_int_cst
17088         to build -1 or 0 of the correct type.  Use fit_double_type
17089         to check for overflow.
17090         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
17091         to build the mask.
17092         (decode_field_reference): Likewise.
17093         (all_ones_mask_p): Likewise.
17094         (native_interpret_int): Use build_int_cst_wide_type.
17095         (fold_binary): Use build_int_cst_type to build an all-ones
17096         value.
17097         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
17098
17099 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
17100
17101         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
17102
17103 2007-01-09  Ben Elliston  <bje@au.ibm.com>
17104
17105         * genautomata.c (STATS_OPTION): New option.
17106         (stats_flag): New flag.
17107         (gen_automata_option): Handle it.
17108         (initiate_automaton_gen): Ditto.
17109         (write_automata): Output statistics only if stats_flag is
17110         set. Likewise, output time statistics only if time_flag is set.
17111         * doc/md.texi (Processor pipeline description): Document new flag.
17112
17113 2007-01-08  Richard Guenther  <rguenther@suse.de>
17114
17115         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
17116         * tree.c (build_int_cst_type): Likewise.
17117         (size_in_bytes): Don't call force_fit_type on the result.
17118         (int_fits_type_p): Use fit_double_type.
17119         * fold-const.c (fit_double_type): New function.
17120         (force_fit_type): Use it.
17121         * tree.h (fit_double_type): Export.
17122
17123 2007-01-08  Jan Hubicka  <jh@suse.cz>
17124
17125         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
17126         * ipa.c (function_and_variable_visibility): Fix return type.
17127
17128 2007-01-08  Richard Guenther  <rguenther@suse.de>
17129
17130         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
17131         of offset to build the index.
17132         * tree-pretty-print.c (dump_generic_node): Don't build negated
17133         const just for printing.
17134         * c-pretty-print.c (pp_c_integer_constant): Likewise.
17135         * builtins.c (fold_builtin_int_roundingfn): Check if result
17136         fits the type by using force_fit_type and comparing the result.
17137         * predict.c (predict_loops): Use compare_tree_int for comparison.
17138         * tree.c (build_int_cst): Fall back to integer_type_node for
17139         NULL_TREE type.
17140         (build_int_cst_wide): Assert type is non-null.
17141
17142 2007-01-08  Roberto Costa  <roberto.costa@st.com>
17143
17144         * tree-vrp.c (extract_range_from_cond_expr): New.
17145         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
17146         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
17147         as expressions.
17148         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
17149         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
17150         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
17151         used as expressions.
17152         * tree-object-size.c (cond_expr_object_size): New.
17153         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
17154
17155 2007-01-08  Jan Hubicka  <jh@suse.cz>
17156
17157         * tree-ssa-forwprop.c (forward_propagate_into_cond,
17158         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
17159         statement.
17160
17161 2007-01-08  Richard Guenther  <rguenther@suse.de>
17162
17163         PR tree-optimization/23603
17164         * tree-vrp.c (set_value_range_to_truthvalue): New function.
17165         (extract_range_from_binary): Fall back to truthvalue instead of
17166         varying for TRUTH_*_EXPR.
17167         (extract_range_from_comparison): Fall back to truthvalue instead of
17168         varying.
17169         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
17170         if all visited PHI values were constant.
17171
17172 2007-01-08  Jan Hubicka  <jh@suse.cz>
17173
17174         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
17175         (cgraph_analyze_function): break out from ...
17176         (cgraph_finalize_compilation_unit): ... here.
17177         (cgraph_expand_function): Remove forgoten commented out line.
17178         (cgraph_optimize): Analyze functions.
17179
17180 2007-01-08  Jan Hubicka  <jh@suse.cz>
17181
17182         * tree-pas.h (TODO_remove_function): New flag.
17183         (TODO_update*): Renumber.
17184         (pass_ipa_increase_alignment,
17185         pass_ipa_function_and_variable_visibility): New passes.
17186         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
17187         (cgraph_function_and_variable_visibility): Move to ipa.c
17188         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
17189         cgraph_increase_alignment.
17190         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
17191         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
17192         calling tree-inline.
17193         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
17194         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
17195         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
17196         (gate_increase_alignment): New function.
17197         (pass_ipa_increase_alignment): New pass.
17198         * ipa.c: Inline tree-pass.h and timevar.h
17199         (function_and_variable_visibility): Move here from cgraphunit.c
17200         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
17201         * passes.c (init_optimization_passes): Add the two new passes.
17202         (execute_todo): Handle cgraph_remove_functions.
17203
17204 2007-01-08  Nick Clifton  <nickc@redhat.com>
17205
17206         * config/frv/predicates.md (reg_or_0_operand): Accept
17207         CONST_DOUBLEs.
17208
17209 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
17210
17211         * config/bfin/rtems.h, config/bfin/t-rtems: New.
17212         * config.gcc: Add bfin*-rtems*.
17213
17214 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
17215
17216         * c.opt: Add -flax-vector-conversions.
17217         * c-typeck.c (convert_for_assignment): Pass flag to
17218         vector_types_convertible_p to allow emission of note.
17219         (digest_init): Likewise.
17220         * c-opts.c: Handle -flax-vector-conversions.
17221         * c-common.c (flag_lax_vector_conversions): New.
17222         (vector_types_convertible_p): Unless -flax-vector conversions
17223         has been passed, disallow conversions between vectors with
17224         differing numbers of subparts and/or element types.  If such
17225         a conversion is disallowed, possibly emit a note on the first
17226         occasion only to inform the user of -flax-vector-conversions.
17227         The new last argument specifies this.
17228         * c-common.h (flag_lax_vector_conversions): New.
17229         (vector_types_convertible_p): Add extra argument.
17230         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
17231         char_type_node for V*QI type vectors.
17232         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
17233         Update to satisfy new typechecking rules.
17234         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
17235         C and C++ variants.
17236         * doc/invoke.texi (C Dialect Options): Document
17237         -flax-vector-conversions.
17238
17239 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
17240
17241         PR tree-optimization/29877
17242         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
17243         a register variable on the RHS to not be replaceable.
17244
17245 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
17246         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
17247         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
17248         const_simm15, const_pow2, const_npow2): Added.
17249         * config/score/misc.md (insv, extv, extzv, movmemsi,
17250         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
17251         * config/score/score.c (score_address_cost, score_select_cc_mode):
17252         Added.
17253         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
17254         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
17255         Update score_print_operand.
17256         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
17257         Adjust register allocate order and update some macro define.
17258         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
17259         mdx_block_move_straight, mdx_block_move_loop_head,
17260         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
17261         mdx_block_move): Added.
17262         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
17263         mdp_limm): Updated and fix some bug and typo.
17264         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
17265         (movsf, movdf, doloop_end): Added.
17266
17267 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
17268
17269         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
17270         config/arm/thumb2.md: Fix comment typos.
17271         * doc/extend.texi: Fix a typo.
17272
17273 2007-01-07  Eric Christopher  <echristo@apple.com>
17274
17275         * configure.ac: Check for __stack_chk_fail for darwin.
17276         * configure: Regenerate.
17277
17278 2007-01-07  Richard Guenther  <rguenther@suse.de>
17279
17280         * tree-vrp.c (extract_range_from_assert): CSE calls to
17281         compare_values where possible.
17282         (extract_range_from_unary_expr): Likewise.
17283
17284 2007-01-07  Anatoly Sokolov <aesok@post.ru>
17285
17286         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
17287         * config/avr/avr.c (call_insn_operand): Delete function.
17288         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
17289         instead of register number. Use predicates.
17290         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
17291         call_insn_operand): Add.
17292
17293 2007-01-06  Jan Hubicka  <jh@suse.cz>
17294
17295         * tree-pass.h (pass_build_cgraph_edges): Declare.
17296         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
17297         (visited_nodes): Remove.
17298         (cgraph_create_edges): Move to cgraphbuild.c; rename to
17299         build_cgrpah_edges; make visited_nodes local.
17300         (cgraph_process_new_functions): DO not call initialize_inline_failed.
17301         (record_references_in_initializer): Move to cgraphbuild.c
17302         (initialize_inline_failed, rebuild_cgraph_edges,
17303         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
17304         (verify_cgraph_node): Make visited_nodes local.
17305         (cgraph_analyze_function): Do not call cgraph_create_edges and
17306         initialize_inline_failed.
17307         (cgraph_expand_function): Do not call cgraph_lower_function;
17308         assert that function is already lowered.
17309         * Makefile.in (cgraphbuild.o): New.
17310         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
17311         at the end of lowering passes.
17312
17313 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
17314
17315         * ifcvt.c (cond_move_convert_if_block): New function, code
17316         factored out from...
17317         (cond_move_process_if_block): ...here.  Call the new function
17318         on the THEN and ELSE blocks.
17319         (merge_if_block): Do not copy global_live_at_end, merge_blocks
17320         already takes care of this.
17321
17322 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17323
17324         PR c/19978
17325         * tree.h (TREE_OVERFLOW_P): New.
17326         * c-typeck.c (parser_build_unary_op): Warn only if result
17327         overflowed and operands did not.
17328         (parser_build_binary_op): Likewise.
17329         (convert_for_assignment): Remove redundant overflow_warning.
17330         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
17331
17332 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17333
17334         * c-typeck.c (store_init_value): Split over two lines to follow
17335         the GNU coding style.
17336
17337 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
17338
17339         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
17340         __GXX_EXPERIMENTAL_CXX0X__.
17341         * doc/cpp.texi: Same.
17342
17343 2007-01-05  Richard Guenther  <rguenther@suse.de>
17344
17345         PR middle-end/27826
17346         * tree.c (get_narrower): Do not construct COMPONENT_REFs
17347         with mismatched types.  Instead explicitly build a
17348         conversion NOP_EXPR.
17349
17350 2007-01-05  Ian Lance Taylor  <iant@google.com>
17351
17352         * c-common.c (decl_with_nonnull_addr_p): New function.
17353         (c_common_truthvalue_conversion): Call it.
17354         * c-typeck.c (build_binary_op): Likewise.
17355         * c-common.h (decl_with_nonnull_addr_p): Declare.
17356
17357 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
17358
17359         PR c/30360
17360         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
17361         denom against 0.0.
17362
17363 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
17364
17365         * doc/install.texi (Final install): Document the fact that
17366         the GNAT runtime should not be stripped.
17367
17368 2007-01-04  Jan Hubicka  <jh@suse.cz>
17369
17370         * tree-inline.c (fold_marked_statements): Update operand caches
17371         and EH after folding
17372
17373 2007-01-04  Ian Lance Taylor  <iant@google.com>
17374
17375         * c-common.c (check_function_nonnull): Whitespace fix.
17376
17377 2007-01-04  Jan Hubicka  <jh@suse.cz>
17378
17379         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
17380         comitted older version of patch.
17381         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
17382         function, celanup cfg and collect garbage.
17383
17384 2007-01-04  Mike Stump  <mrs@apple.com>
17385
17386         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
17387         (clean): Likewise.
17388
17389 2007-01-04  Eric Christopher  <echristo@apple.com>
17390
17391         * libgcc2.c (__bswapsi2): Use SItype.
17392         (__bswapdi2): Use DItype.
17393         * libgcc2.h: Update for above.
17394
17395 2007-01-04  Paul Brook  <paul@codesourcery.com>
17396
17397         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
17398         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
17399         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
17400         umulsidi3, umulsidi3adddi, smulsi3_highpart,
17401         umulsi3_highpart): Make conditional on !arm_arch6.
17402         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
17403         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
17404         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
17405         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
17406         umulsi3_highpart_v6): New insns.
17407
17408 2007-01-04  Roger Sayle  <roger@eyesopen.com>
17409
17410         * fold-const.c (fold_convert): When casting an expression to void,
17411         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
17412         have a type.  Instead of attempting to build a NOP_EXPR, return
17413         these "special" trees directly.
17414
17415 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
17416
17417         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
17418         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
17419         rs6000_cost->fp not 0 as adjustment for outer NEG.
17420
17421 2007-01-04  Jan Hubicka  <jh@suse.cz>
17422
17423         * cgraph.c (cgraph_release_function_body): New function.
17424         (cgraph_remove_node): Use it.
17425         * cgraph.h (cgraph_release_function_body): Declare.
17426         * cgraphunit.c (cgraph_expand_function): Use it.
17427         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
17428         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
17429         is initialized and while compilation of other function is running.
17430         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
17431         statement CFG annotations from here to ...
17432         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
17433
17434 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
17435
17436         * cfgloop.h (enum li_flags): Make the constants powers of two.
17437
17438 2007-01-04  Jan Hubicka  <jh@suse.cz>
17439
17440         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
17441         set.
17442         (fold_marked_statements): New function.
17443         (optimize_inline_calls, tree_function_versioning): Fold new statements.
17444         * tree-inline.h (copy_body_data): Add statements_to_fold.
17445
17446 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
17447
17448         * config.gcc: Mention libgcc/config.host.
17449         * Makefile.in: Update comments mentioning libgcc.
17450         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
17451         (all.cross, start.encap, rest.encap, rest.cross): Update
17452         dependencies for libgcc move.
17453         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
17454         (clean-target, clean-target-libgcc): Delete.
17455         (srcdirify, GCC_EXTRA_PARTS): New macros.
17456         (libgcc-support, libgcc.mvars): New rules.
17457         (distclean): Remove mention of mklibgcc.
17458         (install): Don't reference INSTALL_LIBGCC.
17459         (install-common): Don't reference EXTRA_PARTS.
17460         (install-libgcc, install-multilib): Delete rules.
17461         * mklibgcc.in: Delete file.
17462         * doc/configfiles.texi: Don't mention mklibgcc.
17463
17464         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
17465         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
17466         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
17467         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
17468         (mklibgcc, ldblspecs): Likewise.
17469
17470         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
17471         (posixpre.def): Use $(T).
17472         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
17473         (SHLIB_SRC, SHLIB_INSTALL): Delete.
17474         (SHLIB_LINK): Make dummy.
17475         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
17476
17477         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
17478
17479         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
17480         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
17481         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
17482         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
17483
17484         * configure.ac (all_outputs): Remove mklibgcc.
17485         * configure: Regenerated.
17486
17487 2007-01-03  Josh Conner  <jconner@apple.com>
17488
17489         PR middle-end/29683
17490         * calls.c (compute_argument_addresses): Set stack and stack_slot
17491         for partial args, too.
17492         (store_one_arg): Use locate.size.constant for the size when
17493         generating a save_area.
17494
17495 2007-01-03  Robert Kennedy <jimbob@google.com>
17496
17497         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
17498         whose definitions are deleted due to basic block merging.
17499
17500 2007-01-03  Paul Brook  <paul@codesourcery.com>
17501
17502         PR target/16634
17503         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
17504         functions.
17505         (use_return_insn): Return 0 for Thumb interrupt functions.
17506         (print_multi_reg): Add rfe argument for IRQ returns.
17507         (arm_output_epilogue): Pop interrupt return address directly into PC.
17508         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
17509
17510 2007-01-03  Paul Brook  <paul@codesourcery.com>
17511
17512         Merge from sourcerygxx-4_1.
17513         * config/arm/thumb2.md: New file.
17514         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
17515         Thumb-2.
17516         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
17517         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17518         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
17519         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
17520         tables.
17521         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17522         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
17523         comptibility.
17524         * config/arm/ieee754-sf.S: Ditto.
17525         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
17526         (thumb1_base_register_rtx_p): ... to this.
17527         (thumb_index_register_rtx_p): Rename...
17528         (thumb1_index_register_rtx_p): ... to this.
17529         (thumb_output_function_prologue): Rename...
17530         (thumb1_output_function_prologue): ... to this.
17531         (thumb_legitimate_address_p): Rename...
17532         (thumb1_legitimate_address_p): ... to this.
17533         (thumb_rtx_costs): Rename...
17534         (thumb1_rtx_costs): ... to this.
17535         (thumb_compute_save_reg_mask): Rename...
17536         (thumb1_compute_save_reg_mask): ... to this.
17537         (thumb_final_prescan_insn): Rename...
17538         (thumb1_final_prescan_insn): ... to this.
17539         (thumb_expand_epilogue): Rename...
17540         (thumb1_expand_epilogue): ... to this.
17541         (arm_unwind_emit_stm): Rename...
17542         (arm_unwind_emit_sequence): ... to this.
17543         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
17544         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
17545         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
17546         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
17547         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
17548         thumb2_output_casesi): New functions.
17549         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
17550         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
17551         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
17552         THUMB2_WORK_REGS): Define.
17553         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
17554         arm_condexec_mask, arm_condexec_masklen)): New variables.
17555         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
17556         (arm_override_options): Check new CPU capabilities.
17557         Set new architecture flag variables.
17558         (arm_isr_value): Handle v7m interrupt functions.
17559         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
17560         Thumb-2.
17561         (const_ok_for_arm): Handle Thumb-2 constants.
17562         (arm_gen_constant): Ditto.  Use movw when available.
17563         (arm_function_ok_for_sibcall): Return false for v7m interrupt
17564         functions.
17565         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
17566         (thumb_find_work_register, arm_load_pic_register,
17567         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
17568         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
17569         print_multi_reg, output_mov_long_double_fpa_from_arm,
17570         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
17571         output_mov_double_fpa_from_arm, output_move_double,
17572         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
17573         output_return_instruction, arm_output_function_prologue,
17574         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
17575         arm_output_mi_thunk, thumb_set_return_address): Ditto.
17576         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
17577         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
17578         (arithmetic_instr, shift_op): Use arm_shift_nmem.
17579         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
17580         '!' and 'L'.
17581         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
17582         (thumb_expand_prologue): Use thumb_set_frame_pointer.
17583         (arm_file_start): Output directive for unified syntax.
17584         (arm_unwind_emit_set): Handle stack alignment instruction.
17585         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
17586         Add v6t2, v7, v7a, v7r and v7m.
17587         (RETLDM): Add Thumb-2 code.
17588         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
17589         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
17590         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
17591         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
17592         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
17593         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
17594         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
17595         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
17596         ADJUST_INSN_LENGTH): Define.
17597         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
17598         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
17599         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
17600         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
17601         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
17602         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
17603         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
17604         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
17605         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
17606         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
17607         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
17608         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
17609         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
17610         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
17611         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
17612         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
17613         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
17614         cortex-m3.
17615         * config/arm/arm-tune.md: Regenerate.
17616         * config/arm/arm-protos.h: Update prototypes.
17617         * config/arm/vfp.md: Enable patterns for Thumb-2.
17618         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
17619         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
17620         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
17621         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
17622         * config/arm/libunwind.S: Add Thumb-2 code.
17623         * config/arm/constraints.md: Update include Thumb-2.
17624         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
17625         * config/arm/ieee754-df.S: Ditto.
17626         * config/arm/bpabi.S: Ditto.
17627         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
17628         * config/arm/predicates.md (low_register_operand,
17629         low_reg_or_int_operand, thumb_16bit_operator): New.
17630         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
17631         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
17632         * config/arm/t-arm-elf: Add armv7 multilib.
17633         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
17634         Include thumb2.md.
17635         (UNSPEC_STACK_ALIGN, ce_count): New.
17636         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
17637         arm_zero_extendsidi2, arm_zero_extendqidi2): New
17638         insns/expanders.
17639         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
17640         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
17641         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
17642         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
17643         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
17644         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
17645         insns.
17646         * doc/extend.texi: Document ARMv7-M interrupt functions.
17647         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
17648
17649 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
17650
17651         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
17652         (struct _Unwind_Context): Rename args_size to flags, remove
17653         signal_frame field, add a new args_size field and version field.
17654         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
17655         _Unwind_IsExtendedContext): New inline functions.
17656         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
17657         Assume by_value array is only present if _Unwind_IsExtendedContext.
17658         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
17659         _Unwind_IsSignalFrame.
17660         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
17661         (uw_update_context_1): Use _Unwind_SetSignalFrame.
17662         (uw_init_context_1): Initialize context->flags to
17663         EXTENDED_CONTEXT_BIT.
17664         * config/rs6000/linux-unwind.h (frob_update_context): Use
17665         _Unwind_SetSignalFrame.
17666
17667 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17668
17669         PR middle-end/30353
17670         * gimplify.c (gimplify_modify_expr_complex_part): Move below
17671         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
17672         the value.
17673
17674 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
17675
17676         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
17677         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
17678         RET, AT_SP): Remove.
17679         * config/i386/i386.md (*sse_prologue_save_insn): Use return
17680         instead of RET.
17681
17682         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17683         * cfgbuild.c (find_basic_blocks): Likewise.
17684         * cfgrtl.c (rtl_create_basic_block): Likewise.
17685         * function.c (temp_slots_at_level): Likewise.
17686         * reg-stack.c (stack_regs_mentioned): Likewise.
17687         * regclass.c (allocate_reg_info): Likewise.
17688         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17689         set_bb_for_stmt, move_block_to_fn): Likewise.
17690         * tree-complex.c (tree_lower_complex): Likewise.
17691         * vec.h (VEC_safe_grow_cleared): New.
17692
17693         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
17694
17695 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
17696
17697         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
17698         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
17699         to loop_version.
17700         * cfgloopmanip.c (scale_loop_frequencies): Export.
17701         (loopify): Scale the frequencies by prescribed coefficients.
17702         (set_zero_probability): New function.
17703         (duplicate_loop_to_header_edge): Improve updating of frequencies.
17704         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
17705         and frequencies according to arguments.
17706         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
17707         correctly.
17708         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
17709         * modulo-sched.c (sms_schedule): Set probabilities for entering
17710         versioned loop correctly.
17711         * tree-vect-transform.c (vect_transform_loop): Ditto.
17712         * cfgloop.h (loopify, loop_version): Declaration changed.
17713         (scale_loop_frequencies): Declared.
17714
17715 2007-01-02  Jan Hubicka  <jh@suse.cz>
17716
17717         * cgraph.c: Include tree-flow.h
17718         (cgraph_add_new-function): Handle IPA_SSA mode; execute
17719         early_local_passes.
17720         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
17721         * tree-pass.h (pass_all_early_optimizations): Declare.
17722         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
17723         early_local_passes.
17724         (cgraph_analyze_function): Do early_local_passes.
17725         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17726         Do not add referenced vars.
17727         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
17728         SSA form.
17729         (gate_all_early_local_passes): New gate.
17730         (pass_early_local_passes): Use new gate.
17731         (execute_early_local_optimizations): New functions.
17732         (gate_all_early_optimizations): New gate.
17733         (pass_all_early_optimizations): New pass.
17734         (execute_free_datastructures): Free SSA only when initialized.
17735         (gate_init_datastructures): Init only when optimizing.
17736         (tree_lowering_passes): Do early local passes when called late.
17737         * tree-profile.c (do_tree_profiling): Don't profile functions added
17738         late.
17739         (do_early_tree_profiling, pass_early_tree_profile): Kill.
17740         * tree-cfg.c (update_modified_stmts): Do not update when operands are
17741         not active.
17742         * passes.c (init_optimizations_passes): Reorder so we go into SSA
17743         during early_local_passes.
17744         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
17745
17746
17747 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17748
17749         * Makefile.in: Update copyright year.
17750
17751 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17752
17753         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
17754         in $(lang_checks) and check-consistency targets.
17755
17756 2007-01-02  Jan Hubicka  <jh@suse.cz>
17757
17758         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17759         Do not add referenced vars.
17760         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
17761         are not active.
17762         * passes.c (init_optimization_passes): Put mudflap_2 after
17763         free_datastructures.
17764
17765 2007-01-02  Jan Hubicka  <jh@suse.cz>
17766
17767         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
17768         Set NOTHROW flag on call statements proved to be nothrow.
17769         Update statement of local calls so new pure/const functions are
17770         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
17771         goto receivers.
17772         (tree_rest_of_compilation): Register hooks and initialize bitmap
17773         early. Do not set after_inlining flag.
17774
17775 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
17776
17777         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
17778         HOST_BITS_PER_LONGLONG
17779
17780 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
17781
17782         PR c/19977
17783         * c-typeck.c (store_init_value): Don't emit pedantic overflow
17784         warning for non-static initializers.
17785
17786 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
17787
17788         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
17789         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
17790         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
17791         Always use set_unique_reg_note to add REG_EQUAL notes.
17792
17793 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17794
17795         Revert:
17796         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17797
17798         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17799         * cfgbuild.c (find_basic_blocks): Likewise.
17800         * cfgrtl.c (rtl_create_basic_block): Likewise.
17801         * function.c (temp_slots_at_level): Likewise.
17802         * reg-stack.c (stack_regs_mentioned): Likewise.
17803         * regclass.c (allocate_reg_info): Likewise.
17804         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17805         set_bb_for_stmt, move_block_to_fn): Likewise.
17806         * tree-complex.c (tree_lower_complex): Likewise.
17807         * vec.h (VEC_safe_grow_cleared): New.
17808
17809 2007-01-02  Ian Lance Taylor  <iant@google.com>
17810
17811         * c-common.c (c_common_truthvalue_conversion): When warning about
17812         using an assignment as a truth value, set TREE_NO_WARNING.
17813
17814 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17815
17816         PR middle-end/7651
17817         * c.opt (Wold-style-declaration): New.
17818         * doc/invoke.texi (C-only Warning Options): New.
17819         (Wold-style-declaration): Document it.
17820         (Wextra): Enabled by -Wextra.
17821         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17822         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
17823         -Wold-style-declaration.
17824
17825 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17826
17827         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17828         * cfgbuild.c (find_basic_blocks): Likewise.
17829         * cfgrtl.c (rtl_create_basic_block): Likewise.
17830         * function.c (temp_slots_at_level): Likewise.
17831         * reg-stack.c (stack_regs_mentioned): Likewise.
17832         * regclass.c (allocate_reg_info): Likewise.
17833         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17834         set_bb_for_stmt, move_block_to_fn): Likewise.
17835         * tree-complex.c (tree_lower_complex): Likewise.
17836         * vec.h (VEC_safe_grow_cleared): New.
17837
17838 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
17839
17840         * c-common.c (c_common_nodes_and_builtins): Since variants of
17841         void_type_node get built before it is given a name, we need to
17842         give those variants the name, too.
17843         (complete_array_type): We need to work with the canonical main
17844         type of the array, from which we will build the qualified version.
17845         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
17846         * print-tree.c (print_node): Display canonical type information
17847         for each type.
17848         * stor-layout.c (layout_type): When we don't know the
17849         alignment of a type for which we're building an array, we end up
17850         guessing wrong, so make the type require structural equality.
17851         * tree.c (make_node_stat): When we build a new type, it is its
17852         own canonical type.
17853         (build_type_attribute_qual_variant): When building an attribute
17854         variant, its canonical type is the non-attribute variant. However,
17855         if the attributes are target-dependent and they differ, we need to
17856         use structural equality checks for this type.
17857         (build_qualified_type): A qualified type is not equivalent to its
17858         unqualified variant; set the canonical type appropriately.
17859         (build_distinct_type_copy): When building a distinct type from
17860         another type, the new type is its own canonical type.
17861         (build_variant_type_copy): When building a new type variant, we
17862         assume that it is equivalent to the original type.
17863         (build_pointer_type_for_mode): When building a pointer type, also
17864         build a canonical type pointer.
17865         (build_reference_type_for_mode): When building a reference type,
17866         also build a canonical type reference.
17867         (build_index_type): When we can't hash an index type (e.g.,
17868         because its maximum value is negative), the index type requires
17869         structural equality tests.
17870         (build_array_type): Build the canonical form of an array type.
17871         (build_function_type): Function types require structural equality,
17872         because they contain default arguments, attributes, etc.
17873         (build_method_type_directly): Ditto for method types.
17874         (build_offset_type): Build the canonical offset type.
17875         (build_complex_type): Build the canonical vector type.
17876         (make_vector_type): Build the canonical vector type.
17877         * tree.h (TYPE_CANONICAL): New.
17878         (TYPE_STRUCTURAL_EQUALITY_P): New.
17879         (SET_TYPE_STRUCTURAL_EQUALITY): New.
17880         (struct tree_type): Added "canonical" field.
17881         * params.h (VERIFY_CANONICAL_TYPES): New.
17882         * doc/c-tree.texi (TYPE_CANONICAL): Document.
17883         (TYPE_STRUCTURAL_EQUALITY_P): Document.
17884         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
17885         * doc/invoke.texi (verify-canonical-types): Document --param
17886         parameter for verifying canonical types.
17887
17888 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17889
17890         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
17891         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
17892         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
17893         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
17894         tm_file.
17895         * config/rs6000/e500.h: New.
17896         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
17897         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
17898         Remove.
17899         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
17900         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
17901         TARGET_E500_DOUBLE): Remove.
17902         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
17903         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
17904         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
17905         * config/rs6000/rs6000.c (rs6000_override_options): Use
17906         CHECK_E500_OPTIONS.
17907
17908 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17909
17910         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
17911         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
17912         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
17913         rs6000_emit_cmove): Don't check TARGET_E500.
17914         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
17915         sordered): Don't check TARGET_E500.
17916
17917 2007-01-01  Eric Christopher  <echristo@apple.com>
17918
17919         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
17920         HARD_REGISTER_NUM_P.
17921
17922 2007-01-01  Roger Sayle  <roger@eyesopen.com>
17923
17924         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
17925         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
17926         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
17927         eq/ne Y".
17928
17929 2007-01-01  Mike Stump  <mrs@apple.com>
17930
17931         * configure.ac: Remove support for building with Apple's gcc-3.1.
17932
17933 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17934
17935         PR middle-end/30311
17936         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
17937         REG is a hard register.  Do not modify REG before calling
17938         subreg_nregs.
17939         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
17940         multiple of the size of YMODE for certain lowpart cases.
17941
17942 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17943
17944         PR middle-end/30253
17945         * gimplify (voidify_wrapper_expr): Update for
17946         GIMPLE_MODIFY_STMT.
17947
17948 2007-01-01  Andreas Schwab  <schwab@suse.de>
17949
17950         PR target/29166
17951         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
17952         save of BR0 in extra_spill_size instead of spill_size.
17953         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
17954         area.
17955         (ia64_expand_epilogue): Restore BR0 from its new location.
17956
17957 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17958
17959         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
17960         Use a temporary variable if the left hand side is not a gimple
17961         register.
17962
17963 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17964
17965         * gimplify.c (gimplify_return_expr): Make the temporary variable
17966         for the return expression, a gimple register variable.
17967
17968 2007-01-01  Jan Hubicka  <jh@suse.cz>
17969
17970         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
17971         INSN_LIST.
17972
17973 2007-01-01  Mike Stump  <mrs@apple.com>
17974
17975         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
17976         .literal16.
17977         * config/darwin.c (machopic_select_rtx_section): Use
17978         HAVE_GAS_LITERAL16.
17979         (darwin_mergeable_constant_section): Likewise.
17980         * configure: Regenerate.
17981         * config.in: Regenerate.
17982
17983 2007-01-01  Jan Hubicka  <jh@suse.cz>
17984             Andrew Pinski  <pinskia@gmail.com>
17985
17986         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
17987         before starting IPA passes.