OSDN Git Service

modulo-sched: print sccs and check it
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-03  Revital Eres  <eres@il.ibm.com>
2
3         * ddg.c (print_sccs): New function.
4         (check_sccs): New function.
5         (create_ddg_all_sccs): Use it.
6         * ddg.h (print_sccs): Declare.
7         * modulo-sched.c (sms_order_nodes): Call print_sccs.
8
9 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
10
11         * targhooks.h (default_mode_for_suffix): New function declaration.
12         * targhooks.c (default_mode_for_suffix): New default target hook.
13         * target.h (struct c): New structure in the targetm struct.
14         (mode_for_suffix): New target hook as part of struct c.
15         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
16         default_mode_for_suffix.
17         (TARGET_C): New define.
18         * c-lex.c: Include "target.h".
19         (interpret_float): Use targetm.c.mode_for_suffix to determine
20         the mode for a given non-standard suffix.
21         Makefile.in (c-lex.o): Depend on $(TARGET_H).
22
23         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
24         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
25
26         * doc/extend.texi (Floating Types): New node.  Document __float80 and
27         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
28
29 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
30
31         PR target/32506
32         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
33         predicate instead of target_operand.
34         (divsi3_i1_media, divsi3_media_2): Likewise.
35
36 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
37
38         * tree.h (alias_sets_might_conflict_p): Rename into
39         alias_sets_must_conflict_p.
40         * alias.c (alias_sets_might_conflict_p): Likewise.
41         (alias_sets_conflict_p): Use it.
42         (objects_must_conflict_p): Likewise.
43         * c-common.c (strict_aliasing_warning): Adjust.
44
45 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
46
47         * rtlhooks.c (gen_lowpart_if_possible): Check for
48         invalid subreg before calling gen_lowpart_SUBREG.
49
50 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
51
52         * config/darwin9.h: Add copyright notice.
53         (LINK_COMMAND_SPEC): Add comment.
54         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
55         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
56         DARWIN_LIBSYSTEM_HAS_UNWIND.
57
58 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
59
60         PR libgomp/32468
61         * omp-low.c (check_combined_parallel): New function.
62         (lower_omp_parallel): Call it via walk_stmts, set
63         OMP_PARALLEL_COMBINED if appropriate.
64         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
65         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
66         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
67         don't consider it as combined parallel.
68
69 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
70
71         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
72         (gcc_tooldir): Likewise.
73         * configure: Regenerate.
74         * Makefile.in (libsubdir_to_prefix): New variable, based on the
75         old configure.ac gcc_tooldir setting.
76         (prefix_to_exec_prefix): New variable.
77         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
78         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
79
80 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
81
82         Fix PR tree-optimization/32583
83         Fix PR tree-optimization/32584
84         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
85         (phi_translate_set): Use phi_translate directly now.
86         (make_values_for_stmt): Don't value number RHS if we already know
87         it is constant.
88
89 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
90             Jim Wilson <wilson@specifix.com>
91
92         PR target/31684
93         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
94         copy_insn.
95
96 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
97             Richard Sandiford  <richard@codesourcery.com>
98             Nigel Stephens  <nigel@mips.com>
99
100         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
101         (mips16e_output_save_restore): Declare.
102         (mips16e_save_restore_pattern_p): Likewise.
103         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
104         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
105         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
106         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
107         (BITSET_P): New global macro, extracted from...
108         (mips_for_each_saved_reg): ...here.
109         (mips16e_save_restore_info): New struct.
110         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
111         (mips16e_save_restore_regs): New variable.
112         (mips_split_plus, mips16e_find_first_register): New functions.
113         (mips16e_mask_registers): New function.
114         (compute_frame_size): Expand the commentary before the function.
115         Enforce the MIPS16e save and restore register range restrictions.
116         Pad the general register save area at the low end.
117         (mips16e_save_restore_reg, mips16e_build_save_restore)
118         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
119         (mips16e_output_save_restore, mips16e_collect_propagate_value)
120         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
121         New functions.
122         (mips_expand_prologue, mips_expand_epilogue): Handle
123         GENERATE_MIPS16E_SAVE_RESTORE.
124         * config/mips/mips.md (*mips16e_save_restore): New pattern.
125
126 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
127
128         PR tree-optimization/31966
129         PR tree-optimization/32533
130         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
131         "basic_block" description as its third argument.  Update function
132         calls to get destination bb from "edge" argument.  Save "cond" into
133         aux field of the edge.  Update prototype for changed arguments.
134         (if_convertible_loop_p): Clear aux field of incoming edges if bb
135         contains phi node.
136         (find_phi_replacement_condition): Operate on incoming edges, not
137         on predecessor blocks.  If there is a condition saved in the
138         incoming edge aux field, AND it with incoming bb predicate.
139         Return source bb of the first edge.
140         (clean_predicate_lists): Clean aux field of outgoing node edges.
141         (tree_if_conversion): Do not initialize cond variable. Move
142         variable declaration into the loop.
143         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
144         initializations of new_stmt, arg0 and arg1 variables.
145
146 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
147
148         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
149         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
150
151 2007-07-02  Richard Guenther  <rguenther@suse.de>
152
153         * tree-ssa.c (useless_type_conversion_p): Document
154         future intent as defining the middle-end type system.
155         Re-structure to call langhook last, group by type class,
156         mark questionable parts.
157
158 2007-07-02  Richard Guenther  <rguenther@suse.de>
159
160         * tree-flow.h (types_compatible_p): Declare.
161         * tree-ssa.c (types_compatible_p): New function.
162         * ipa-type-escape.c (discover_unique_type): Use
163         types_compatible_p instead of lang_hooks.types_compatible_p.
164         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
165         * tree-vn.c (expressions_equal_p): Likewise.
166         * tree.c (fields_compatible_p): Likewise.
167         * tree-ssa-dom.c (avail_expr_eq): Likewise.
168         (cprop_operand): Use useless_type_conversion_p instead of
169         lang_hooks.types_compatible_p.
170         * tree-inline.c (setup_one_parameter): Likewise.
171         (declare_return_variable): Likewise.
172         * tree-nrv.c (tree_nrv): Likewise.
173         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
174         (maybe_fold_offset_to_component_ref): Likewise.
175         (maybe_fold_offset_to_reference): Likewise.
176         * tree-ssa-copy.c (may_propagate_copy): Likewise.
177         (merge_alias_info): Likewise.
178         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
179         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
180         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
181         * tree-tailcall.c (find_tail_calls): Likewise.
182         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
183         * gimplify.c (canonicalize_addr_expr): Likewise.
184         (fold_indirect_ref_rhs): Likewise.
185         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
186         (cpt_same_type): Likewise.
187         (check_pointer_types_r): Swap parameters to cpt_same_type
188         where appropriate.
189         * fold-const.c (fold_convert): Revert fix for PR15988.
190         * tree-inline.c (setup_one_parameter): Instead fix it here by
191         using fold_build1 instead of fold_convert and checking for
192         error_mark_node.  Convert only if the conversion is necessary.
193
194 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
195
196         * configure.ac: Check for .gnu_attribute on Power.
197         * configure: Regenerate.
198         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
199         attribute for floating-point ABI.
200
201 2007-07-02  Ira Rosen  <irar@il.ibm.com>
202
203         PR tree-optimization/32230
204         PR tree-optimization/32477
205         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
206         address is a constant.
207
208 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
209
210         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
211         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
212         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
213         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
214         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
215         64-bit targets.  Add support for *-elfoabi*.
216         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
217         different settings if $(tm_defines) does not select the EABI.
218         (MULTILIB_EXCLUSIONS): Define in those circumstances.
219         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
220         (MIPS_ARCH_OPTION_SPEC): Likewise.
221         (MIPS_ISA_LEVEL_SPEC): Likewise.
222         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
223         * config/mips/elfoabi.h: New file.
224
225 2007-07-02  Richard Guenther  <rguenther@suse.de>
226
227         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
228         (useless_type_conversion_p): ... this.
229         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
230         (useless_type_conversion_p): ... this.
231         * builtins.c (fold_builtin_memory_op): Rename
232         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
233         * tree-cfg.c (verify_expr): Likewise.
234         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
235         * tree-ssa-ccp.c (ccp_fold): Likewise.
236         * tree-ssa-copy.c (may_propagate_copy): Likewise.
237         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
238         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
239         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
240         * tree-ssa-pre.c (eliminate): Likewise.
241         * tree-ssa.c (delete_tree_ssa): Likewise.
242         (tree_ssa_useless_type_conversion): Likewise.
243         * tree.c (build2_stat): Likewise.
244
245 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
246
247         Fix PR tree-optimization/32571
248         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
249         simplifying them.
250
251 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
252
253         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
254         and other expected operations explicitly, change default to
255         gcc_unreachable. 
256
257 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
258
259         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
260         PARALLEL.
261         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
262         (tls_load_dot_plus_eight): Move the label number into the unspec.
263         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
264
265 2007-07-01  Andreas Schwab  <schwab@suse.de>
266
267         * dwarf2out.c (initial_return_save): Define only if used.
268
269 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
270
271         Unreverting Richard's Revert of:
272
273         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
274
275         * dce.c (deletable_insn_p_1): New function, split out from...
276         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
277         specially, not those inside PARALLELs.  Remove BODY argument
278         and adjust recursive call accordingly.
279         (prescan_insns_for_dce): Update call to delete_insn_p.
280
281 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
282             Revital Eres  <eres@il.ibm.com>
283
284         * ddg.c (create_ddg_all_sccs): Fix missed
285         initialization of scc_nodes.
286
287 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
288
289         PR middle-end/32559
290         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
291         X + ~X to 1 only for INTEGRAL_TYPE_P type.
292
293 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
294
295         * configure.ac: Check for .gnu_attribute on MIPS.
296         * configure, config.in: Regenerate.
297         * config/mips/mips.c (mips_file_start): If supported, output
298         attribute for floating-point ABI.
299
300 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
301
302         PR target/32433
303         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
304         (ffs_cmove): New expander to expand using ctz pattern.
305         (*ffs_cmove): Remove pattern.
306         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
307         (ffsdi2): Expand using ctz pattern.
308         (*ffs_rex64): Remove pattern.
309
310 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
311
312         PR rtl-optimization/32296
313         * pa.md (return): Delete pattern.
314         (return_internal): Remove "(const_int 1)" from pattern.
315         (epilogue): Use return_internal pattern for trivial returns.
316         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
317         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
318
319 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
320
321         * tree-ssa-pre.c (is_exception_related): New function
322         (can_value_number_operation): Use it.
323
324 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
325         
326         Fix PR tree-optimization/32540
327         Fix PR tree-optimization/31651
328
329         * tree-ssa-sccvn.c: New file.
330
331         * tree-ssa-sccvn.h: Ditto.
332         
333         * tree-vn.c: Include tree-ssa-sccvn.h
334         (val_expr_paid_d): Removed.
335         (value_table): Ditto.
336         (vn_compute): Ditto.
337         (val_expr_pair_hash): Ditto.
338         (val_expr_pair_expr_eq): Ditto.
339         (copy_vuses_from_stmt): Ditto.
340         (vn_delete): Ditto.
341         (vn_init): Ditto.
342         (shared_vuses_from_stmt): Ditto.
343         (print_creation_to_file): Moved up.
344         (sort_vuses): Ditto.
345         (sort_vuses_heap): Ditto.
346         (set_value_handle): Make non-static.
347         (make_value_handle): Ditto.
348         (vn_add): Rewritten to use sccvn lookups.
349         (vn_add_with_vuses): Ditto.
350         (vn_lookup): Ditto (and second argument removed).
351         (vn_lookup_with_vuses): Ditto.
352         (vn_lookup_or_add): Ditto (and second argument removed);
353         (vn_lookup_or_add_with_vuses): Ditto.
354         (vn_lookup_with_stmt): New.
355         (vn_lookup_or_add_with_stmt): Ditto.
356         (create_value_handle_for_expr): Ditto.
357
358         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
359         (seen_during_translate): New function.
360         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
361         (phi_trans_add): Ditto.
362         (constant_expr_p): FIELD_DECL is always constant.
363         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
364         Use constant_expr_p.
365         Avoid infinite recursion on mutually valued expressions.
366         Change callers of vn_lookup_or_add.
367         (phi_translate): New function.
368         (compute_antic_safe): Allow phi nodes.
369         (create_component_ref_by_pieces): Update for FIELD_DECL change.
370         (find_or_generate_expression): Rewrite slightly.
371         (create_expression_by_pieces): Updated for vn_lookup_or_add
372         change.
373         Update VN_INFO for new names.
374         (insert_into_preds_of_block): Update for new names.
375         (add_to_exp_gen): New function.
376         (add_to_sets): Use vn_lookup_or_add_with_stmt.
377         (find_existing_value_expr): Rewrite to changed vn_lookup.
378         (create_value_expr_from): Ditto, and use add_to_exp_gen.
379         (try_look_through_load): Removed.
380         (try_combine_conversion): Ditto.
381         (get_sccvn_value): New function.
382         (make_values_for_phi): Ditto.
383         (make_values_for_stmt): Ditto.
384         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
385         SCCVN.
386         (init_pre): Update for SCCVN changes.
387         (fini_pre): Ditto.
388         (execute_pre): Ditto.
389
390         * tree-flow.h (make_value_handle): Declare.
391         (set_value_handle): Ditto.
392         (sort_vuses_heap): Ditto.
393         (vn_lookup_or_add_with_stmt): Ditto.
394         (vn_lookup_with_stmt): Ditto.
395         (vn_compute): Remove.
396         (vn_init): Ditto.
397         (vn_delete): Ditto.
398         (vn_lookup): Update arguments.
399
400         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
401         (tree-vn.o): Ditto.
402         (tree-ssa-sccvn.o): New.
403         (OBJS-common): Add tree-ssa-sccvn.o
404         
405 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
406
407         PR c/4076
408         * c-typeck.c (build_external_ref): Don't mark as used if called
409         from itself.
410         * calls.c (rtx_for_function_call): Likewise.
411         
412 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
413
414         Revert:
415
416         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
417
418         * dce.c (deletable_insn_p_1): New function, split out from...
419         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
420         specially, not those inside PARALLELs.  Remove BODY argument
421         and adjust recursive call accordingly.
422         (prescan_insns_for_dce): Update call to delete_insn_p.
423
424 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
425
426         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
427         (try_combine): Move potential calls to undo_all() so they happen
428         before we commit to using the combined insns.
429
430 2006-06-30  Jan Hubicka  <jh@suse.cz>
431
432         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
433         code.
434
435 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
436
437         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
438         (cgraph_remove_unreachable_nodes): Likewise.
439         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
440         * ipa-inline.c (update_caller_keys): Cast according to the coding
441         conventions.
442         (cgraph_decide_recursive_inlining): Likewise.
443         (cgraph_decide_inlining_of_small_function): Likewise.
444         (try_inline): Likewise.
445         (cgraph_decide_inlining_incrementally): Likewise.
446         * ipa-pure-const.c (get_function_state): Likewise.
447         (scan_function): Likewise.
448         (analyze_function): Likewise.
449         (static_execute): Likewise.
450         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
451         (merge_callee_local_info): Likewise.
452         (analyze_function): Use type safe memory macros.
453         (static_execute): Likewise. Cast according to the coding conventions.
454         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
455         conventions.
456         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
457         names.
458         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
459         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
460         variable names.
461
462 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
463
464         PR middle-end/30024
465         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
466         for complex modes (both int and real).
467
468 2007-06-29  Jan Hubicka  <jh@suse.cz>
469
470         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
471
472 2007-06-29  Jan Hubicka  <jh@suse.cz>
473
474         PR middle-end/32372
475         * cse.c (cse_insn): Avoid invalid sharing in between register note and
476         the insn pattern.
477
478 2007-06-29  Anatoly Sokolov <aesok@post.ru>
479
480         PR target/32335
481         * config/avr/avr.c: Include dataflow header file.
482         (expand_prologue): Adjust for prologue insn change.
483         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
484         inside a insn.
485
486 2007-06-29  Richard Guenther  <rguenther@suse.de>
487
488         PR middle-end/32493
489         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
490         during type verification.
491
492 2007-06-29  Jan Hubicka  <jh@suse.cz>
493
494         * recog.c (validate_change_rtx_1): Unshare TO argument.
495
496 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
497
498         PR tree-optimization/24659
499         * tree-vect-transform.c (vectorizable_call): Handle
500         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
501
502         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
503         * config/i386/i386.c (enum ix86_builtins)
504         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
505         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
506         description.
507         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
508         const using def_builtin_const.
509         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
510         input operands in the same modes as the result.
511         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
512
513 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
514
515         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
516         (df_set_dead_notes_for_mw): Likewise.
517
518 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
519
520         * c-common.c (pointer_int_sum): Do the negation in sizetype.
521
522 2007-06-28  DJ Delorie  <dj@redhat.com>
523
524         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
525
526 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
527
528         * doc/invoke.texi (C++ Dialect Options): Document
529         fvisibility-ms-compat.
530         * c.opt (fvisibility-ms-compat): New.
531
532 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
533
534         PR tree-opt/32417
535         * tree-affine.c (aff_combination_add_elt): Handle
536         pointer addition specially.
537
538 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
539
540         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
541         decl is non-external for AIX ABI.
542
543 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
544
545         * config/rs6000/predicates.md (current_file_function_operand):
546         Ensure the symbol is non-external for AIX ABI.
547
548 2007-06-28  Nick Clifton  <nickc@redhat.com>
549
550         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
551         (fdce, fdse, fpredictive-commoning): Likewise.
552
553 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
554
555         PR other/31400
556         * gcc.c (process_command): Recognize the new -static-libgfortran
557         option.
558
559 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
560
561         PR target/32418
562         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
563         Use a call clobbered hard reg instead of a pseudo reg.
564
565 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
566
567         * config/sh/sh.md (load_gbr): Use correct operand constraint.
568
569 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
570
571         PR target/32479
572         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
573         REG_LIBCALL and REG_RETVAL notes.
574         (divsi3, mulsi3): Likewise.
575         (mulhisi3): Likewise.  Use emit_libcall_block.
576         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
577
578 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
579
580         PR rtl-optimization/32481
581         * combine.c (adjust_for_new_dest): Rescan the changed insn.
582
583 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
584
585         * dce.c (deletable_insn_p_1): New function, split out from...
586         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
587         specially, not those inside PARALLELs.  Remove BODY argument
588         and adjust recursive call accordingly.
589         (prescan_insns_for_dce): Update call to delete_insn_p.
590
591 2007-06-27  Richard Guenther  <rguenther@suse.de>
592
593         PR middle-end/32492
594         * tree.h (fold_convertible_p): Declare.
595         * fold-const.c (fold_convertible_p): New function.
596         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
597         instead of lang_hooks.types_compatible_p.
598
599 2007-06-26  Jan Hubicka  <jh@suse.cz>
600
601         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
602         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
603         early use validate_unshare_change.
604         (reload_combine): Likewise.
605         * recog.c (change_t): New field unshare.
606         (validate_change_1): Rename from validate_change; add argument unshare.
607         (validate_change): Turn into wrapper of validate_change_1; update
608         prototype for bools.
609         (validate_unshare_change): New.
610         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
611         calls of df_insn_rescan.
612         * recog.h (validate_change): Replace ints by bools.
613         (validate_unshare_change): Declare.
614
615 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
616
617         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
618         
619 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
620
621         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
622
623 2007-06-25  Jan Hubicka  <jh@suse.cz>
624
625         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
626         uninlinable call.
627         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
628         cgraph_decide_inlining_incrementally): Move uninlinability checks to
629         places other call site specific checks are performed.
630
631 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
632
633         PR tree-opt/32421
634         * tree-vect-transform.c (vectorizable_operation): Convert
635         POINTER_PLUS_EXPR over to PLUS_EXPR.
636
637 2007-06-25  Chao-ying Fu  <fu@mips.com>
638
639         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
640         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
641         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
642         Document GET_MODE_IBIT, and GET_MODE_FBIT.
643
644         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
645         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
646         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
647         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
648         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
649         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
650         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
651         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
652         ALL_FIXED_POINT_MODE_P): New define.
653         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
654         MODE_UACCUM.
655         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
656
657         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
658         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
659         MODE_VECTOR_UACCUM): New mode classes.
660
661         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
662         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
663         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
664         USA, UDA, and UTA.
665
666         * genmodes.c (struct mode_data): Add ibit and fbit fields.
667         (blank_mode): Initialize ibit and fbit.
668         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
669         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
670         (new_adjust): Change required_class to required_class_from and
671         required_class_to for testing within a range.
672         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
673         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
674         MODE_VECTOR_UACCUM.
675         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
676         (make_fixed_point_mode): New.
677         (_ADD_ADJUST): Change C to C1 and C2.
678         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
679         use a range for machine classes.
680         (ADJUST_IBIT, ADJUST_FBIT): New.
681         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
682         CONST_MODE_FBIT.
683         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
684         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
685         Emit adjustment for ibit and fbit.
686         (emit_mode_ibit, emit_mode_fbit): New.
687         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
688
689 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
690
691         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
692         as the source of the set.
693
694 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
695
696         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
697         FP_REGNO_P): Use IN_RANGE.
698         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
699         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
700         (DATA_REG_P): Use DATA_REGNO_P.
701         (FP_REG_P): Use FP_REGNO_P.
702         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
703         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
704         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
705
706 2007-06-24  Jan Hubicka  <jh@suse.cz>
707
708         PR middle-end/30563
709         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
710
711 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
712
713         PR middle-end/32461
714         * fold-const.c (fold_binary): Strip nops of operand 0
715         of BIT_NOT_EXPR before calling operand_equal_p.
716         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
717         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
718
719 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
720
721         * doc/extend.texi: Document that dllimport and dllexport imply
722         default visibility.
723         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
724         imported or exported declaration, including type declarations.
725         * c-common.c (handle_visibility_attribute): Check for conflicts
726         with dllimport/dllexport.
727         (c_determine_visibility): Handle dllimport/dllexport as an
728         explicit visibility atttribute.
729
730 2007-06-23  Richard Guenther  <rguenther@suse.de>
731
732         PR tree-optimization/16876
733         PR middle-end/29478
734         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
735         for CALL_EXPRs.
736         * tree-inline.c (initialize_inlined_parameters): Do not call
737         lang_hooks.tree_inlining.convert_parm_for_inlining.
738         * cgraphbuild.c (initialize_inline_failed): Set inline failed
739         reason for mismatched types.
740         * gimplify.c (gimplify_call_expr): Verify the call expression
741         arguments match the called function type signature.  Otherwise
742         mark the call expression to be not considered for inlining
743         using CALL_CANNOT_INLINE_P flag.
744         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
745         edges call expression.
746         (cgraph_decide_inlining_of_small_function): Likewise.
747         (cgraph_decide_inlining): Likewise.
748         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
749         Remove define.
750         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
751         * c-typeck.c (c_convert_parm_for_inlining): Remove.
752         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
753         Remove declaration.
754         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
755         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
756         Remove.
757         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
758         convert_parm_for_inlining member.
759
760 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
761
762         PR target/31152
763         * arm.md (negscc): Match the correct operand for optimized LT0 test.
764         Remove optimization for GT.
765
766 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
767
768         PR middle-end/32437
769         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
770         is a PARALLEL.
771         (prescan_insns_for_dce): Add extra parameter.
772         
773 2007-06-23  Jan Hubicka  <jh@suse.cz>
774
775         PR middle-end/31541
776         * gimplify.c (mark_addressable): New function.
777         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
778
779 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
780
781         PR middle-end/32374
782         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
783
784 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
785
786         PR target/32413
787         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
788         moves between MMX/SSE registers to at least 8 units to prevent
789         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
790
791 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
792
793         * config/i386/i386.c (override_options): Correct x86_sahf
794         setting condition.
795
796 2007-06-21  David Daney  <ddaney@avtrex.com>
797
798         PR target/32406
799         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
800         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
801         (exception_receiver): Renamed to ...
802         (nonlocal_goto_receiver): ... this.
803
804 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
805
806         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
807         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
808         partial register accesses.
809
810 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
811
812         * fold-const.c (debug_fold_checksum): Move it under
813         ENABLE_FOLD_CHECKING.
814
815 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
816
817         PR middle-end/20623
818         * tree.h (debug_fold_checksum): Declared.
819         * fold-const.c (build_fold_addr_expr_with_type_1): New.
820         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
821         build_fold_addr_expr_with_type_1.
822         (fold_addr_expr, debug_fold_checksum): New.
823         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
824         (fold_unary, fold_comparison, split_address_to_core_and_offset):
825         Use fold_addr_expr.
826         
827 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
828
829         PR tree-optimization/19590
830         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
831         of scev is a constant.
832         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
833
834 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
835
836         * df-problems.c (df_note_bb_compute): Made computation of live
837         info consistent with df_lr.
838
839 2007-06-21  Richard Guenther  <rguenther@suse.de>
840
841         PR tree-optimization/32453
842         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
843         for pointer anti-range.
844
845 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
846
847         * config/i386/i386.c (processor_target_table): Increase maximum
848         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
849         default 64bit.
850
851         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
852         byte alignment if > 8 byte alignment is preferred.
853         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
854
855 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
856
857         PR tree-optimization/31866
858         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
859         if ASM_EXPR's input is not a SSA_NAME.
860
861         PR middle-end/32362
862         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
863         but decl is a global var, instead return decl.
864         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
865         even for is_global_var decls, if they are private in some outer
866         context.
867
868 2007-06-21  Richard Guenther  <rguenther@suse.de>
869
870         PR tree-optimization/32451
871         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
872
873 2007-06-21  Christian Bruel  <christian.bruel@st.com>
874
875         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
876         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
877         (push_regs): Changed saving order or banked registers.
878         (sh_expand_epilogue): Likewise.
879         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
880         (FIRST_BANKED_REG): Likewise.
881         (LAST_BANKED_REG): Likewise.
882         * config/sh/sh.md (banked) New attribute.
883         (in_delay_slot): Check banked attribute.
884         
885 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
886
887         PR tree-optimization/32075
888         * tree-data-ref.c (subscript_dependence_tester_1, 
889         analyze_miv_subscript, analyze_overlapping_iterations,
890         add_distance_for_zero_overlaps, build_classic_dist_vector,
891         subscript_dependence_tester_1, analyze_overlapping_iterations,
892         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
893         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
894         to evolution_function_is_affine_multivariate_p.
895
896 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
897
898         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
899
900 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
901
902         PR target/32335
903         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
904         for TARGET_A16.
905         * config/m32c/prologue.md (epilogue_exitd_16): New.
906         (epilogue_reit_16): New.
907         (epilogue_exitd): Rename to epilogue_exitd_24.
908         (epilogue_reit): Rename to epilogue_reit_24.
909
910 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
911             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
912
913         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
914         New counters.
915         * haifa-sched.c (queue_to_ready): Don't requeue next insn
916         if dbg_cnt (sched_insn) reaches the limit.
917         (choose_ready): New parameter INSN_PTR and new return value.
918         (schedule_block): Handle dbg_cnt (sched_insn). Handle
919         the new return value from choose_ready.
920         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
921         (rest_of_handle_global_alloc): New global_alloc_at_func.
922
923 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
924
925         PR tree-optimization/25737
926         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
927         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
928         * tree-flow.h (struct fieldoff): Add new field alias_set.
929         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
930         argument addressable_type.  Set alias_set of fieldoff.
931         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
932         (create_overlap_variables_for): Pass alias_set from fieldoff to
933         create_sft.
934         * alias.c (get_alias_set): Use alias_set from SFT if set.
935
936 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
937
938         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
939         of a variable as an unsigned HOST_WIDE_INT integer.
940
941 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
942
943         PR rtl-optimization/32405
944         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
945
946 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
947
948         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
949
950         PR middle-end/31959
951         * builtins.c: Include diagnostic.h.
952         (expand_builtin_expect): Make gcc_assert more permissive.
953         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
954
955         PR inline-asm/32109
956         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
957         and !allows_mem.
958
959         PR middle-end/32285
960         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
961         if ACCUMULATE_OUTGOING_ARGS.
962
963 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
964
965         * config/m68hc11/m68hc11.c: Include dataflow header file.
966         (m68hc11_reorg): Port to dataflow.
967
968 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
969
970         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
971         (struct df_problem.free_blocks_on_set_blocks): New field.
972         (struct dataflow.optional_p): New field.
973         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
974         (df_live_set_all_dirty): New function.
975         * df-scan.c (df_scan_alloc): Initialize optional_p.
976         (problem_SCAN): Initialize free_blocks_on_set_blocks.
977         * df-core.c (df_set_blocks): Removed use of
978         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
979         df_problem.free_blocks_on_set_blocks to determine which blocks are
980         recycled.
981         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
982         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
983         uses dataflow.optional_p to determine if problem should be
984         deleted.
985         (rest_of_handle_df_initialize): Only start live problem if 
986         -02 or above.
987         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
988         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
989         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
990         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
991         problem_NOTE):  Initialize free_blocks_on_set_blocks.
992         (df_lr_bb_local_compute): Recompute luids if df_live problem is
993         not active.
994         (df_live_set_all_dirty, df_note_alloc): New function.
995         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
996         df_get_live_*.
997         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
998         * postreload.c (reload_combine): Ditto.
999         * cse.c (cse_extended_basic_block): Ditto.
1000         * regmove.c (mark_flags_life_zones): Ditto.
1001         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
1002         erase_matching_seqs): Ditto.
1003         * bt-load.c (compute_defs_uses_and_gen): Ditto.
1004         * integrate (allocate_initial_values): Ditto.
1005         * combine.c (reg_dead_at_p): Ditto.
1006         * resource.c (mark_target_live_regs): Ditto.
1007         * sched-rgn.c (check_live_1, update_live_1): Ditto.
1008         * config/sh/sh.c (find_r0_life_regions): Ditto.
1009         * global.c (rest_of_handle_global_alloc): Only add back df_live
1010         for -O > 1.
1011         * local-alloc.c (rest_of_handle_local_alloc): Only remove
1012         df_live for -O > 1.
1013         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
1014         df_get_live_*.
1015         (if_convert): Make sure df_live is there at -O == 1.
1016         (pass_if_after_combine): Cleanup flags.
1017         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
1018         is there at -O == 1.
1019         
1020 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
1021
1022         * config/arm/arm.c (arm_get_frame_offsets): Set
1023         offsets->locals_base to avoid negative stack size.
1024         (thumb1_expand_prologue): Assert on negative stack size.
1025
1026 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
1027
1028         PR tree-optimization/32367
1029         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
1030         of the chrec has no evolution in that loop.
1031         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
1032
1033 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
1034
1035         * config/xtensa/xtensa.c: Include "df.h".
1036         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
1037         (xtensa_va_start): Invoke make_tree with sizetype for
1038         expand_builtin_saveregs and then convert the result to a pointer.
1039         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
1040         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
1041         Subtract argument size from index value as integers and then use
1042         POINTER_PLUS_EXPR to add the result to the array address.
1043         
1044 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1045
1046         PR target/32335
1047         * config/m32c/m32c.c: Include dataflow header file.
1048         (m32c_emit_prologue): Adjust for prologue insn change.
1049         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
1050         once inside a PARALLEL. Assume frame size passed in operand 0
1051         includes space to save the fb register.
1052         (prologue_enter_24): Likewise.
1053         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
1054
1055 2007-06-19  David Daney  <ddaney@avtrex.com
1056
1057         PR target/32313
1058         * config/mips/mips.md (cprestore): Mark $gp as used.
1059
1060 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1061
1062         PR target/32369
1063         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
1064         (frv_ifcvt_modify_insn): Likewise.
1065
1066 2007-06-19  Richard Guenther  <rguenther@suse.de>
1067
1068         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
1069         only handle positive offsets that fit in a HOST_WIDE_INT.
1070
1071 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
1072
1073         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
1074         result of rsqrt insn for zero input argument to avoid NaN.
1075
1076 2007-06-19  Richard Guenther  <rguenther@suse.de>
1077
1078         PR middle-end/31950
1079         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
1080
1081 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
1082
1083         PR tree-optimization/32353
1084         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
1085
1086 2007-06-19  Nick Clifton  <nickc@redhat.com>
1087
1088         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
1089
1090 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1091
1092         PR target/32389
1093         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
1094         * config/i386/i386.c (assign_386_stack_local): Assert that
1095         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
1096         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
1097         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
1098         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
1099
1100 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
1101
1102         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
1103
1104 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
1105
1106         PR rtl-optimization/32321
1107         * gcse.c (replace_store_insn): Update the note before
1108         calling emit_insn_after.
1109
1110 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
1111
1112         PR middle-end/32355
1113         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
1114         cse_main.
1115         * df-problems.c (df_note_bb_compute): Fix dumping info.
1116         
1117 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
1118
1119         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
1120         insn with emit_jump_insn.
1121
1122 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1123
1124         PR tree-optimization/32383
1125         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
1126         * targhooks.h (default_builtin_reciprocal): Update prototype.
1127         * target.h (struct gcc_target): Update builtin_reciprocal.
1128         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
1129         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
1130         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
1131         when fndecl is in BUILT_IN_MD class.
1132         (execute_convert_to_rsqrt): Ditto.
1133
1134         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
1135         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
1136         Convert BUILT_IN_SQRTF code only  when md_fn is false.
1137
1138 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1139
1140         * bt-load.c (move_btr_def): Fix the order of arguments
1141         to validate_replace_rtx.
1142
1143 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
1144
1145         * config/m68k/m68k-devices.def: Add 54450..54455.
1146
1147 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
1148
1149         PR rtl-optimization/32366
1150         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
1151         FLOAT_EXTEND]: Prevent non-scalar modes from entering
1152         significand_size.
1153
1154 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
1155
1156         PR middle-end/32349
1157         * modulo-sched (generate_reg_moves): Added rescan parameter and if
1158         this is true, rescan insn being modified.
1159         (sms_schedule): Added rescan parameter.
1160         (rest_of_handle_sms): Moved freeing of dominance info to before
1161         getting out of cfg_layout.
1162         
1163 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
1164
1165         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
1166         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
1167         appropriate.
1168
1169         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
1170         FL_CF_EMAC from the entry for isac.
1171
1172         * config/m68k/predicates.md (const_call_operand): Adjust comment.
1173         (const_sibcall_operand): New.
1174         (sibcall_operand): Use it.
1175         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
1176         (m68k_isas): ISAC does not imply FPU or EMAC.
1177         (override_options): Add ISA_C logic for symbolic jump & call.
1178
1179 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
1180
1181         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
1182         return mode from the builtin itself.
1183         (sparc_fold_builtin): Fix cast of zero constant.
1184
1185 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1186
1187         * targhooks.c (default_builtin_reciprocal): New default target hook.
1188         * targhooks.h (default_builtin_reciprocal): Add prototype.
1189         * hooks.c (hook_tree_tree_bool_null): Remove hook.
1190         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
1191         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
1192         default_builtin_reciprocal.
1193
1194 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1195
1196         PR middle-end/31723
1197         * hooks.c (hook_tree_tree_bool_null): New hook.
1198         * hooks.h (hook_tree_tree_bool_null): Add prototype.
1199         * tree-pass.h (pass_convert_to_rsqrt): Declare.
1200         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
1201         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
1202         and convert it to reciprocal a*rfunc(b).
1203         (execute_convert_to_rsqrt): New function.
1204         (gate_convert_to_rsqrt): New function.
1205         (pass_convert_to_rsqrt): New pass definition.
1206         * target.h (struct gcc_target): Add builtin_reciprocal.
1207         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
1208         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
1209         TARGET_BUILTIN_RECIPROCAL.
1210         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
1211
1212         * config/i386/i386.h (TARGET_RECIP): New define.
1213         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
1214         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1215         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1216         and not optimizing for size.
1217         (*rcpsf2_sse): New insn pattern.
1218         (*rsqrtsf2_sse): Ditto.
1219         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1220         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1221         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1222         and not optimizing for size.
1223         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
1224         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1225         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1226         and not optimizing for size.
1227         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
1228         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1229         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1230         and not optimizing for size.
1231         (*sse_rsqrtv4sf2): Do not export.
1232         (sqrtv4sf2): Ditto.
1233         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1234         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1235         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1236         and not optimizing for size.
1237         (sqrtv4sf2): Ditto.
1238         * config/i386/i386.opt (mrecip): New option.
1239         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
1240         (ix86_emit_swsqrtsf): Ditto.
1241         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
1242         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
1243         builtin definition.
1244         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
1245         ix86_expand_unop1_builtin.
1246         (ix86_emit_swdivsf): New function.
1247         (ix86_emit_swsqrtsf): Ditto.
1248         (ix86_builtin_reciprocal): New function.
1249         (TARGET_BUILTIN_RECIPROCAL): Use it.
1250         (ix86_vectorize_builtin_conversion): Rename from
1251         ix86_builtin_conversion.
1252         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
1253         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
1254         "i386 and x86_64 Options" section.
1255         (Intel 386 and AMD x86_64 Options): Document -mrecip.
1256
1257 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
1258             Zdenek Dvorak <dvorakz@suse.cz>
1259             Richard Guenther  <rguenther@suse.de>
1260             Kaz Kojima  <kkojima@gcc.gnu.org>
1261
1262         * tree-vrp.c (compare_values_warnv): Convert val2 to
1263         the type of val1.
1264         (extract_range_from_assert): Create
1265         POINTER_PLUS_EXPR for pointer types.
1266         (extract_range_from_binary_expr): Handle
1267         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
1268         for pointer types.
1269         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
1270         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
1271         POINTER_PLUS_EXPR as PLUS_EXPR.
1272         (number_of_iterations_lt_to_ne):
1273         For pointer types, use sizetype when
1274         creating MINUS_EXPR/PLUS_EXPRs.
1275         (assert_loop_rolls_lt): For pointer types, use sizetype when
1276         creating MINUS_EXPR/PLUS_EXPRs.
1277         (number_of_iterations_le): Likewise.
1278         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
1279         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
1280         like PLUS_EXPR and MINUS_EXPR.
1281         * tree-pretty-print.c (dump_generic_node): Handle
1282         POINTER_PLUS_EXPR.
1283         (op_prio): Likewise.
1284         (op_symbol_1): Likewise.
1285         * optabs.c (optab_for_tree_code): Likewise.
1286         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
1287         specially.
1288         * tree-tailcall.c (process_assignment): Mention
1289         POINTER_PLUS_EXPR in a TODO comment.
1290         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
1291         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
1292         not used with a pointer and an integer type.
1293         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
1294         increment using chrec_convert_rhs instead of chrec_convert.
1295         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
1296         PLUS_EXPR except for the right hand side's type will be
1297         sizetype.
1298         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
1299         (fold_used_pointer_cast): Kill.
1300         (pointer_offset_p): Kill.
1301         (fold_used_pointer): Kill.
1302         (pointer_used_p): Kill.
1303         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
1304         call fold_used_pointer.
1305         (instantiate_parameters_1): Convert the increment
1306         using chrec_convert_rhs instead of chrec_convert.
1307         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
1308         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
1309         instead of PLUS_EXPR.
1310         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
1311         PLUS_EXPR for pointers.
1312         (std_gimplify_va_arg_expr): Likewise.
1313         (fold_builtin_memory_op): Likewise.
1314         (fold_builtin_strstr): Likewise.
1315         (fold_builtin_strchr): Likewise.
1316         (fold_builtin_strrchr): Likewise.
1317         (fold_builtin_strpbrk): Likewise.
1318         (expand_builtin_memory_chk): Likewise.
1319         (fold_builtin_memory_chk): Likewise.
1320         (std_expand_builtin_va_start): Use
1321         sizetype for the call to make_tree and then convert
1322         to the pointer type.
1323         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
1324         instead of PLUS_EXPR for adding to a pointer.
1325         (std_gimplify_va_arg_expr): Use fold_build2 for
1326         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
1327         the operands to sizetype first and then cast the BIT_AND_EXPR
1328         back to the pointer type.
1329         * fold-const.c (build_range_check): Handle pointer types
1330         specially.
1331         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
1332         of PLUS_EXPR's. Make sure the offset is converted to
1333         sizetype.
1334         (try_move_mult_to_index): Strip the NOPs from the offset.
1335         Remove code argument and replace all uses with PLUS_EXPR.
1336         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
1337         specially. Don't use a pointer type for MINUS_EXPR.
1338         (fold_unary): Handle for (T1)(X op Y),
1339         only p+ as that is the only as that can be handled for
1340         binary operators now.
1341         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
1342         POINTER_PLUS_EXPR.
1343         <case PLUS_EXPR>: Add folding of PTR+INT into
1344         PTR p+ INT.
1345         Don't call try_move_mult_to_index.
1346         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
1347         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
1348         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
1349         Don't call try_move_mult_to_index.
1350         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
1351         (tree_expr_nonzero_p): Likewise.
1352         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
1353         of PLUS_EXPR for the complex expression folding.
1354         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
1355         first chrec is a pointer type, then the second should
1356         be sizetype and not the first's type.
1357         For POINTER_PLUS_EXPR, use a different right hand side type.
1358         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1359         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
1360         different right hand side type.
1361         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1362         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
1363         instead of PLUS_EXPR.
1364         When either operand is zero, convert the other operand.
1365         (chrec_apply): Use chrec_convert_rhs
1366         on the argument x instead of chrec_convert.
1367         (reset_evolution_in_loop): For pointer types, the new_evol
1368         should be sizetype.
1369         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
1370         different right hand side type.
1371         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1372         (chrec_convert_rhs): New function.
1373         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
1374         different right hand side type.
1375         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1376         * tree-chrec.h (chrec_convert_rhs): New prototype.
1377         (build_polynomial_chrec): For pointer types, the right hand
1378         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
1379         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
1380         Remove subtraction case as it is always addition now.
1381         Make sure the offset is converted to sizetype.
1382         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
1383         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
1384         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
1385         PLUS_EXPR in pointer type.
1386         Handle POINTER_PLUS_EXPR.
1387         (tree_to_aff_combination): Likewise.
1388         (force_expr_to_var_cost): Likewise.
1389         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
1390         instead of PLUS_EXPR for pointers.
1391         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
1392         instead of PLUS_EXPR of pointer types.
1393         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
1394         as PLUS_EXPR.
1395         (check_va_list_escapes): Likewise.
1396         (check_all_va_list_escapes): Likewise.
1397         * dwarf2out.c (loc_descriptor_from_tree_1):
1398         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
1399         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
1400         (string_constant): Likewise.
1401         * tree-ssa-address.c (tree_mem_ref_addr): When adding
1402         the offset to the base, use POINTER_PLUS_EXPR.
1403         (add_to_parts): Convert the index to sizetype.
1404         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
1405         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
1406         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
1407         Offset only holds something for PLUS_EXPR.
1408         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
1409         a PLUS_EXPR.
1410         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
1411         and not PLUS_EXPR.
1412         (analyze_accesses_for_modify_stmt): Likewise.
1413         Remove comment about the type being integral type as it is
1414         wrong now.
1415         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
1416         PLUS_EXPR.
1417         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
1418         and not PLUS_EXPR.
1419         Correct the type which the artimentic is done in (is now
1420         sizetype).
1421         Reindent one loop.
1422         * tree-data-ref.c (split_constant_offset): Handle
1423         POINTER_PLUS_EXPR
1424         * tree-affine.c (tree_to_aff_combination): Likewise.
1425         * c-typeck.c (build_unary_op): For pointers create the increment
1426         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
1427         for pointers.
1428         * gimplify.c (gimplify_self_mod_expr): Create a
1429         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1430         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
1431         * tree.def (POINTER_PLUS_EXPR): New tree code.
1432         * tree-predcom.c (ref_at_iteration): If we have a pointer
1433         type do the multiplication in sizetype.
1434         * tree-mudflap.c (mf_xform_derefs_1): Create a
1435         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1436         * tree-ssa-forwprop.c 
1437         (forward_propagate_addr_into_variable_array_index):
1438         Don't expect there to be a cast for the index as that
1439         does not exist anymore.
1440         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
1441         instead of PLUS_EXPR.
1442         Don't check for the first operand of the POINTER_PLUS_EXPR
1443         was the index as it cannot be.
1444         Call forward_propagate_addr_into_variable_array_index with
1445         the SSA_NAME instead of the statement.
1446         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
1447         (compare_constant): Likewise.
1448         (copy_constant): Likewise.
1449         (compute_reloc_for_constant): Likewise.
1450         (output_addressed_constants): Likewise.
1451         (initializer_constant_valid_p): Likewise.
1452         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
1453         Convert the MIN/MAX of the inner type to the outer
1454         type before comparing them.
1455         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
1456         POINTER_PLUS_EXPR instead of PLUS_EXPR.
1457         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
1458         of PLUS_EXPR for pointers.
1459         * tree-inline.c (estimate_num_insns_1): Handle
1460         POINTER_PLUS_EXPR.
1461         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
1462         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1463         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
1464         instead of PLUS_EXPR for the pointer increment statement.
1465         (vect_update_ivs_after_vectorizer): For pointer types, create
1466         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
1467         MULT_EXPR in sizetype.
1468         (vect_gen_niters_for_prolog_loop): Add a cast when creating
1469         byte_misalign.
1470         * tree-object-size.c (plus_expr_object_size): Handle
1471         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
1472         code which is trying to figure out which side is a pointer and 
1473         is the index.
1474         (check_for_plus_in_loops_1): Likewise.
1475         (check_for_plus_in_loops): Likewise.
1476         * c-common.c (pointer_int_sum): Create a
1477         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1478         * tree-ssa-structalias.c (handle_ptr_arith): Handle
1479         only POINTER_PLUS_EXPR.  Removing all the extra
1480         code which is trying to figure out which side is a pointer and 
1481         is the index.
1482         * tree-cfg.c (verify_expr): Add extra checking for pointers and
1483         PLUS_EXPR and MINUS_EXPR.
1484         Also add checking to make sure the operands of POINTER_PLUS_EXPR
1485         are correct.
1486         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
1487         with make_tree, instead of a pointer type.
1488         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
1489         for pointers instead of PLUS_EXPR.
1490         (s390_gimplify_va_arg): Likewise.
1491         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
1492         instead of PLUS_EXPR when doing addition on pointer
1493         types.  Use sizetype for the second operand.
1494         (spu_gimplify_va_arg_expr): Likewise.
1495         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
1496         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
1497         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
1498         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
1499         for the pointer addition and also use size_int/sizetype
1500         for the offset.
1501         (ix86_gimplify_va_arg): Likewise.
1502         Perform BIT_AND_EXPR on sizetype arguments.
1503         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
1504         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
1505         for the pointer additions and also use size_int for the offsets.
1506         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
1507         additions and also use size_int for the offsets.  Perform
1508         BIT_AND_EXPR on sizetype arguments.
1509         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
1510         POINTER_PLUS_EXPR for pointers and create the
1511         BIT_AND_EXPR in sizetype.
1512         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
1513         instead of PLUS_EXPR for pointer addition.
1514         (rs6000_va_start): Likewise.
1515         Also use sizetype for the offset.
1516         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
1517         as PLUS_EXPR/MINUS_EXPR.
1518         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
1519         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
1520         Don't use BIT_AND_EXPR on a pointer type, convert the
1521         expression to sizetype first.
1522         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
1523         for pointers.
1524         (mips_gimplify_va_arg_expr): Likewise.
1525         Don't create BIT_AND_EXPR in a pointer type.
1526
1527 2007-06-15  Eric Christopher  <echristo@apple.com>
1528
1529         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
1530         (x86_64-*-darwin*): Ditto.
1531         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
1532         for above.
1533
1534 2007-06-15  Matthew Wilcox <matthew@wil.cx>
1535
1536         * doc/extend.texi: Document behavior of __attribute__((aligned))
1537         on typedefs.
1538
1539 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1540
1541         * rtlanal.c (note_stores): Improve documentation.
1542
1543 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1544
1545         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
1546         LOCAL_LABEL_PREFIX): Delete.
1547         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
1548         (bfin_internal_label): Delete.
1549
1550 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
1551
1552         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
1553         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
1554         otherwise define to LIBGCC2_TF_CEXT.
1555         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
1556         (LIBGCC_TF_CEXT): Ditto.
1557         (TF_SIZE): Ditto.
1558
1559 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
1560
1561         PR rtl-optimization/32339
1562         * df-scan.c (df_uses_record): Don't modify flags but just add to
1563         it for df_ref_record.
1564
1565 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1566
1567         * tree-mudflap.c: Fix whitespace issues.
1568
1569 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
1570
1571         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
1572
1573 2007-06-14  Eric Christopher  <echristo@apple.com>
1574
1575         * config/i386/sse.md (movdi_to_sse): Rewrite body.
1576         (movv4sf): Use gcc_unreachable instead of abort.
1577
1578 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1579
1580         PR target/32268
1581         * config/i386/sfp-machine.h (CMPtype): New define.
1582         (mach stubs): Use CMPtype instead of int as a return type.
1583
1584 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1585
1586         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
1587         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
1588         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
1589         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
1590         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
1591         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
1592         config/soft-fp/soft-fp.h: Update from glibc CVS.
1593
1594 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1595
1596         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
1597
1598 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1599
1600         PR target/32341
1601         * config/v850/v850.c: Include dataflow header file.
1602         (substitute_ep_register): Fix typo.
1603
1604 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1605
1606         * configure.ac: Fix earlier checkin.
1607         * configure: Regenerated.
1608
1609 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1610
1611         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
1612         * aclocal.m4: Regenerate.
1613         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
1614         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
1615         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
1616         * configure: Regenerate.
1617         * Makefile.in (LOOSE_WARN): Subst loose_warn.
1618
1619         * Makefile.in (quickstrap): Build libgcc too.
1620
1621 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1622
1623         * configure.ac: Add --enable-checking=df.  Explicitly mention that
1624         the variables are initialized as for "release".
1625         * df-core.c: Use it.
1626         * configure: Regenerate.
1627         * config.in: Regenerate.
1628
1629 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
1630
1631         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
1632         validate_replace_rtx instead of replace_rtx.
1633         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
1634
1635 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
1636
1637         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
1638         (DWARF2_UNWIND_INFO): Override default if configured with
1639         SJLJ EH disabled.
1640         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
1641         (ENDFILE_SPEC): Add crtend.o.
1642         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
1643         (ENDFILE_SPEC): Add crtend.o.
1644         (TARGET_USE_JCR_SECTION): Define.
1645         (MD_UNWIND_SUPPORT): Define for 32-bit target.
1646
1647         * config/i386/cygming-crtbegin.c: New file.
1648         * config/i386/cygming-crtend.c: New file.
1649
1650 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
1651
1652         * config/i386/w32-unwind.h: New file.
1653
1654 2007-06-13  Eric Christopher  <echristo@apple.com>
1655
1656         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
1657         the user set a value below STACK_BOUNDARY.
1658
1659 2007-06-13  Thiemo Seufer  <ths@networkno.de>
1660
1661         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
1662         imply -lpthread for -pthread.
1663
1664 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1665
1666         * basic-block.h: Remove the prototype for
1667         free_basic_block_vars.
1668         * cfglayout.h: Remove the prototype for
1669         insn_locators_initialize.
1670         * tree.h: Remove the prototype for emit_line_note.
1671
1672         * tree-ssa-pre.c (mergephitemp): Remove.
1673         (init_pre): Don't use mergephitemp.
1674
1675 2007-06-13  Eric Christopher  <echristo@apple.com>
1676
1677         * config/i386/i386.c (override_options): If we've specified
1678         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
1679
1680 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
1681
1682         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
1683         is defined.
1684
1685 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1686
1687         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
1688         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
1689         (eh_store_handler): New pattern.
1690         (eh_return): Emit it instead of a plain move.
1691
1692 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
1693
1694         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
1695         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
1696         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
1697         def_builtin_const.
1698
1699 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1700
1701         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1702         (find_next_insn_start, find_load): New functions.
1703         (bfin_reorg): Use them to deal with the fact that parallel insns are
1704         no longer represented as a SEQUENCE.
1705
1706 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1707
1708         * config/sparc/sparc.c (sparc_override_options): Initialize
1709         fpu mask correctly.
1710
1711 2007-06-13  Dave Korn  <dave.korn@artimi.com>
1712
1713         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1714         df_get_live_out.
1715
1716 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1717
1718         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1719         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
1720         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
1721         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
1722         tree-vect-transform.c: Fix comment typos.  Follow spelling
1723         conventions.
1724
1725 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1726
1727        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
1728        to the exit block use set.
1729        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
1730        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
1731        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
1732
1733 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1734
1735         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
1736         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
1737         to indicate an error.
1738         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
1739         (dbg_cnt_process_opt): Print an error on a bad argument.
1740         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
1741         * common.opt (-fdbg-cnt-list): New.
1742         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
1743
1744 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
1745
1746         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
1747         flag on ref-all pointers.
1748
1749 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1750
1751         PR middle-end/31579
1752         * expr.c (expand_expr_addr_expr_1): Call expand_expr
1753         for the offset with the modifier as EXPAND_INITIALIZER
1754         if the modifier is EXPAND_INITIALIZER.
1755         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
1756         a register if we had an overflow.
1757
1758 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1759
1760         * real.c (real_isfinite): New.
1761         (real_sqrt): Use it.
1762         * real.h (real_isfinite): New.
1763         * builtins.c: Use it.
1764
1765 2007-06-12  Ian Lance Taylor  <iant@google.com>
1766             Daniel Berlin  <dberlin@dberlin.org>
1767
1768         PR libstdc++/29286
1769         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
1770         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
1771         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
1772         (DECL_NO_TBAA_P): Define.
1773         (struct tree_decl_common): Add no_tbaa_flag field.
1774         * tree-ssa-structalias.c (struct variable_info): Add
1775         no_tbaa_pruning field.
1776         (new_var_info): Initialize no_tbaa_pruning field.
1777         (unify_nodes): Copy no_tbaa_pruning field.
1778         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1779         (dump_solution_for_var): Print no_tbaa_pruning flag.
1780         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
1781         callers.
1782         (compute_tbaa_pruning): New static function.
1783         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
1784         Call compute_tbaa_pruning.
1785         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
1786         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1787         * gimple-low.c (lower_stmt): Likewise.
1788         * tree-gimple.c (is_gimple_stmt): Likewise.
1789         * tree-ssa-operands.c (get_expr_operands): Likewise.
1790         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1791         * tree-inline.c (estimate_num_insns_1): Likewise.
1792         (copy_result_decl_to_var): Likewise.
1793         * expr.c (expand_expr_real_1): Likewise.
1794         * tree-pretty-print.c (dump_generic_node): Likewise.
1795         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
1796         * omp-low.c (omp_copy_decl_2): Likewise.
1797         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
1798         * doc/c-tree.texi (Expression trees): Document
1799         CHANGE_DYNAMIC_TYPE_EXPR.
1800
1801 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1802
1803         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
1804         with !HONOR_NANS and !HONOR_INFINITIES.
1805         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
1806
1807 2007-06-12  Tristan Gingold  <gingold@adacore.com>
1808
1809         * gcov.c: Comments updated.
1810         (source_info): Add file_time field.
1811         (source_index): New variable.
1812         (mutiple_files): New variable.
1813         (generate_results): New function extracted from process_file.
1814         (process_file): Save and restore chain of functions, generate
1815         results and free structures only if not merging results.
1816         (release_structures): File names are now freed in create_file_names
1817         (create_file_names): Free previous file names.
1818         (find_source): File date is now read here and modifications in
1819         source files is checked here.
1820         (read_graph_file): Only reverse order of functions for the current
1821         object file.
1822         (make_gcov_file_name): Do not generate long names if input_name is
1823         NULL.
1824         (output_lines): If merging results do not display graph, data and
1825         runs informations.
1826         Checking source file modification is done in find_source.
1827
1828         * doc/gcov.texi: Append an s to sourcefile.
1829
1830 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1831
1832         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
1833         (forced_nop): New pattern.
1834         * config/bfin/bfin.c: Include "df.h".
1835         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
1836         (bfin_discover_loop): Use df_get_live_in instead of
1837         global_live_at_start.
1838         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
1839         df_analyze when done.
1840         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
1841         the insns.  Use QImode for the final insn in a bundle.  Call
1842         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
1843         gen_nop.
1844         (reorder_var_tracking_notes): New function.
1845         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
1846         update_life_info.  Call df_analyze after scheduling and bundle
1847         generation.  Call reorder_var_tracking_notes if generating these notes.
1848         Call df_finish_pass at the end.
1849
1850 2007-06-12  Dirk Mueller  <dmueller@suse.de>
1851
1852         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
1853         a comparison, not an assignment.
1854
1855 2007-06-12  Olivier Hainque  <hainque@adacore.com>
1856
1857         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
1858         Request walking the subtrees only, leaving the current is_lhs/val_only
1859         untouched.
1860         (convert_non_local_reference): Likewise.
1861
1862 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
1863
1864         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
1865
1866 2007-06-12  Richard Guenther  <rguenther@suse.de>
1867
1868         PR tree-optimization/15353
1869         PR tree-optimization/31657
1870         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
1871         * timevar.def: Add TV_TREE_IFCOMBINE.
1872         * tree-pass.h (pass_tree_ifcombine): Declare.
1873         * tree-ssa-ifcombine.c: New file.
1874         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
1875         * tree-flow.h (blocks_in_phiopt_order): Declare.
1876         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
1877         (tree-ssa-ifcombine.o): New dependencies.
1878
1879 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1880
1881         PR rtl-optimization/32293
1882         * combine.c (simplify_if_then_else): Truncate return from
1883         nonzero_bits() to correct mode.
1884
1885 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1886
1887         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
1888         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
1889
1890 2007-06-11  Diego Novillo  <dnovillo@google.com>
1891
1892         * Makefile.in (reload1.o-warn): Remove.
1893
1894 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
1895
1896         * combine.c (subst): Use reg_overlap_mentioned_p
1897         instead of comparing register numbers directly.
1898
1899 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1900
1901         * reload1.c (mark_home_live_1): Use the mode parameter.
1902
1903 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1904
1905         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
1906         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
1907         word "deferred".
1908         * df-core.c: Ditto.
1909
1910 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
1911
1912         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
1913
1914 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1915
1916         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
1917         from integer registers.
1918         (FP mode splitters): Handle TFmode.
1919
1920 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
1921
1922         * tree-ssa-structalias.c (find_what_p_points_to): Return false
1923         for ref-all pointers that point-to anything.
1924
1925 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
1926
1927         * config/arm/arm.c (arm_output_dwarf_dtprel,
1928         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
1929
1930 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1931
1932         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
1933         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
1934         to memory moves.
1935
1936 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1937
1938         * gcc/tree.c (signed_or_unsigned_type_for): New.
1939         (unsigned_type_for): Use signed_or_unsigned_type_for.
1940         (signed_type_for): Use signed_or_unsigned_type_for.
1941         * gcc/tree.h (signed_or_unsigned_type_for): New.
1942         (get_signed_or_unsigned_type): Remove.
1943         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
1944         lang_hooks.types.signed_type
1945         (size_diffop): Likewise.
1946         (all_ones_mask_p): Likewise.
1947         (build_range_check): Likewise.
1948         (fold_cond_expr_with_comparison): Likewise.
1949         (fold_cond_expr_with_comparison): Likewise.
1950         (unextend): Likewise.
1951         (extract_muldiv_1): Likewise.
1952         (fold_single_bit_test_into_sign_test): Likewise.
1953         (fold_binary): Likewise.
1954         (fold_ternary): Likewise.
1955         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
1956         instead of get_signed_or_unsigned_type.
1957         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1958         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1959         * gcc/expr.c (signed_or_unsigned_type_for): Use
1960         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
1961         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
1962         (lhd_signed_or_unsigned_type): Remove.
1963         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
1964         signed_or_unsigned_type.
1965         (lhd_signed_or_unsigned_type): Remove.
1966         * gcc/expmed.c (make_tree): Use signed_type_for instead of
1967         lang_hooks.types.signed_type.
1968         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
1969         c_common_signed_type instead of lang_hooks.types.signed_type.
1970         (c_common_unsigned_type): New.
1971         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
1972         (shorten_compare): Use c_common_unsigned_type instead of
1973         c_common_signed_or_unsigned_type.
1974         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
1975         unsigned_type_for.
1976         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
1977         lang_hooks.types.signed_type.
1978         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1979         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
1980         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
1981         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
1982         instead of unsigned_type_for.
1983         * gcc/c-decl.c (groakdeclarator): Likewise.
1984         * gcc/c-typeck.c (convert_for_assignment): Likewise.
1985         * gcc/c-common.h (c_common_unsigned_type): New.
1986
1987 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1988
1989         PR target/32280
1990         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
1991         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
1992
1993 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1994
1995         PR middle-end/32279
1996         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
1997         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
1998
1999 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
2000             Sebastian Pop  <sebpop@gmail.com>
2001
2002         * lambda-code.c (remove_iv): New.
2003         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
2004
2005 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
2006
2007         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
2008         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
2009         * tree-ssa-loop-prefetch.c: Include optabs.h.
2010         (FENCE_FOLLOWING_MOVNT): New macro.
2011         (struct mem_ref): Add independent_p and storent_p fields.
2012         (record_ref): Initalize the new fields.
2013         (gather_memory_references_ref): Return true if the reference
2014         could be analysed.
2015         (gather_memory_references): Check whether all memory accesses
2016         in loop were recorded.
2017         (should_issue_prefetch_p): Return false for nontemporal stores.
2018         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
2019         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
2020         (determine_loop_nest_reuse): Detect independent memory references.
2021         (loop_prefetch_arrays): Call mark_nontemporal_stores.
2022         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
2023         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
2024         * config/i386/i386.h (x86_mfence): Declare.
2025         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
2026         * config/i386/i386.c (x86_mfence): New variable.
2027         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
2028
2029         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
2030         * optabs.c (init_optabs): Initialize storent_optab.
2031         * optabs.h (enum optab_index): Add OTI_storent.
2032         (storent_optab): Declare.
2033         * genopinit.c (optabs): Add initialization for storent_optab.
2034         * tree.h (MOVE_NONTEMPORAL): New macro.
2035         * expr.c (expand_assignment, store_expr, store_constructor_field,
2036         store_constructor, store_field, expand_expr_real_1): Propagate
2037         nontemporality of the expanded store.
2038         (emit_storent_insn): New function.
2039         * expr.h (expand_assignment, store_expr): Declaration changed.
2040         * function.c (assign_parm_setup_reg): Pass false as nontemporality
2041         to expand_assignment.
2042         * stmt.c (expand_asm_expr): Ditto.
2043         * calls.c (initialize_argument_information): Pass false as
2044         nontemporality to store_expr.
2045         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
2046         storentsi): New.
2047
2048 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
2049
2050         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
2051         parameter, use it.
2052         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
2053
2054 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
2055
2056         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
2057         and allow DECL_P here.
2058
2059 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
2060
2061         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
2062         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
2063         track of the size of the expression.
2064         * cfghooks.c (merge_blocks): Remove block from loops structure only
2065         after call of the merge_blocks hook.
2066
2067 2007-06-09  Tom Tromey  <tromey@redhat.com>
2068
2069         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
2070         (deprecated_state): Removed.
2071         (start_decl): Update.
2072         (enum deprecated_states): Moved earlier.
2073         (groktypename): Update.
2074         (push_parm_decl): Likewise.
2075         (grokfield): Likewise.
2076         (start_function): Likewise.
2077
2078 2007-06-09  Ian Lance Taylor  <iant@google.com>
2079
2080         PR tree-optimization/32169
2081         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
2082         CONVERT_EXPR, check whether min and max both converted to an
2083         overflow infinity representation.
2084
2085 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
2086
2087         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
2088         not inserted on the edge.
2089
2090 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
2091
2092         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
2093         instructions if they are supported.
2094         (__divsi3, __umodsi3, __modsi3): Likewise.
2095         (__ashldi3, __ashrdi3, __lshrdi3): New.
2096         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
2097
2098 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
2099             Tony Linthicum <tony.linthicum@amd.com>
2100
2101         * doc/extend.texi: Add fvect-cost-model flag.
2102         * common.opt (fvect-cost-model): New flag.
2103         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
2104         cost fields in stmt_vec_info struct for STMT.
2105         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
2106         fields in stmt_vec_info struct and access functions for the same.
2107         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
2108         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
2109         load, store and vector to scalar operation.
2110         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
2111         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
2112         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
2113         (TARG_VEC_STORE_COST): Define cost of vector store.
2114         (vect_estimate_min_profitable_iters): Define new function.
2115         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
2116         check to evaluate if loop iterations are less than minimum profitable
2117         iterations determined by cost model or minimum vect loop bound defined
2118         by user, whichever is more conservative.
2119         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
2120         run-time check to evaluate if loop iterations are less than minimum
2121         profitable iterations determined by cost model or minimum vect loop
2122         bound defined by user, whichever is more conservative.
2123         (vect_estimate_min_profitable_iterations): New function to estimate
2124         mimimimum iterartions required for vector version of loop to be
2125         profitable over scalar version.
2126         (vect_model_reduction_cost): New function.
2127         (vect_model_induction_cost): New function.
2128         (vect_model_simple_cost): New function.
2129         (vect_cost_strided_group_size): New function.
2130         (vect_model_store_cost): New function.
2131         (vect_model_load_cost): New function.
2132         (vectorizable_reduction): Call vect_model_reduction_cost during
2133         analysis phase.
2134         (vectorizable_induction): Call vect_model_induction_cost during
2135         analysis phase.
2136         (vectorizable_load): Call vect_model_load_cost during analysis phase.
2137         (vectorizable_store): Call vect_model_store_cost during analysis phase.
2138         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
2139         vectorizable_promotion, vectorizable_demotion): Call
2140         vect_model_simple_cost during analysis phase.
2141
2142 2007-06-08  Simon Baldwin  <simonb@google.com>
2143
2144         * reg-stack.c (get_true_reg): Readability change.  Moved default case
2145         label into direct switch statement scope.
2146
2147 2007-06-08  Simon Baldwin  <simonb@google.com>
2148
2149         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
2150         in gcc_assert() with '==' comparison.
2151
2152 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2153
2154         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
2155         TARGET_ABM handling of x86_popcnt variable.
2156
2157 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2158
2159         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
2160         __builtin_copysignq and __builtin_infq built-in functions.
2161
2162 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2163
2164         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
2165         SSE4.2 section.  Correct built-in function names in SSE4A section.
2166
2167 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2168
2169         PR tree-optimization/32243
2170         * tree-vect-transform.c (vectorizable_type_promotion): Move check
2171         for ncopies after ratio check between nunits_out and nunits_in.
2172         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
2173
2174 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
2175
2176         PR tree-optimization/32224
2177         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
2178         vectorization upon a non GIMPLE_MODIFY_STMT.
2179
2180 2007-06-08  Christian Bruel  <christian.bruel@st.com>
2181
2182         PR target/29953
2183         * config/sh/sh.md (doloop_end): New pattern and splitter.
2184         * loop-iv.c (simple_rhs_p): Check for hardware registers.
2185
2186 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
2187
2188         PR middle-end/32209
2189         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
2190         functions.
2191         (verify_dominators): Do not change dominance tree.
2192
2193 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2194
2195         * config/sh/constraints.md: New file.
2196         * config/sh/sh.c: Include tm-constrs.h.
2197         (reg_class_from_letter): Remove.
2198         (prepare_cbranch_operands): Use satisfies_constraint_*
2199         function instead of macro.
2200         (andcosts, broken_move, sh_secondary_reload): Likewise.
2201         * config/sh/predicates.md (trapping_target_operand): Likewise.
2202         (and_operand, arith_operand, arith_reg_or_0_operand,
2203         cmp_operand, logical_operand, target_operand,
2204         ua_address_operand, ua_offset, xor_operand): Likewise.
2205         * config/sh/sh.md: Include constraints.md.
2206         (*movsicc_t_false): Use satisfies_constraint_* function
2207         instead of macro.
2208         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
2209         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
2210         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
2211         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
2212         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
2213         (REG_CLASS_FROM_CONSTRAINT): Remove.
2214         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
2215         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
2216         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
2217         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
2218         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2219         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
2220         function instead of macro.
2221         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2222         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
2223         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
2224         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
2225         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
2226         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
2227         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
2228         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
2229         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
2230         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
2231         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
2232         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
2233         EXTRA_CONSTRAINT_STR): Likewise.
2234         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
2235
2236 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2237
2238         * config/i386/darwin.h (STACK_BOUNDARY): Define.
2239
2240 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
2241
2242         PR c++/30759
2243         * c-common.h (flag_cpp0x): Replaced by...
2244         (cxx_dialect): ... this new variable specifying the C++ dialect that
2245         is used.
2246         * c-common.c (flag_cpp0x): Removed.
2247         (cxx_dialect): Defined.
2248         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
2249         cxx_dialect.
2250         * c-opts.c (c_common_post_options): Likewise.
2251         (set_std_cxx98): Set cxx_dialect to cxx98.
2252         (set_std_cxx0x): Set cxx_dialect to cxx0x.
2253
2254 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2255             Hui-May Chang <hm.chang@apple.com>
2256
2257         * doc/invoke.texi (Darwin Options): Update documentation for
2258         -mmacosx-version-min.
2259         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
2260         * config/darwin-driver.c: New file.
2261         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
2262         * config/t-darwin (darwin-driver.o): New rule.
2263
2264         * config/darwin-c.c (version_as_macro): Ignore low digit.
2265
2266 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
2267
2268         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
2269         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
2270         (CSGNMODE): New mode macro.
2271         (CSGNVMODE): New mode attribute.
2272         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
2273         expander using CSGNMODE mode macro.  Handle TFmode.
2274         (copysign<mode>3_const): Rename from copysignsf3_const and
2275         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
2276         Handle TFmode.
2277         (copysign<mode>3_var): Rename from copysignsf3_var and
2278         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
2279         Handle TFmode.
2280         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
2281         mode macro.  Handle TFmode.
2282         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
2283         (iortf3, *iortf3): Ditto.
2284         (xortf3, *xortf3): Ditto.
2285         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
2286         TFmode and TImode masks.
2287         (ix86_expand_copysign): Expand TFmode copysign insn.
2288         (IX86_BUILTIN_INFQ): New.
2289         (IX86_BUILTIN_FABSQ): Ditto.
2290         (IX86_BUILTIN_COPYSIGNQ): Ditto.
2291         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
2292         [__builtin_fabsq]: Ditto.
2293         [__builtin_copysignq]: Ditto.
2294         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
2295         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
2296         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
2297         ix86_expand_binop_builtin().
2298
2299 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
2300
2301         * config/xtensa/lib1funcs.asm: Clean up whitespace.
2302
2303 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
2304
2305         PR target/31850
2306         * rtl.h (push_to_sequence2): New.
2307         * emit-rtl.c (push_to_sequence2): New.
2308         * function.c (assign_parm_data_all): Add new fields.
2309         (assign_parm_setup_block): Call push_to_sequence2 instead of
2310         push_to_sequence.
2311         (assign_parm_setup_reg): Ditto.
2312         (assign_parm_setup_stack): Ditto.
2313         (assign_parms_unsplit_complex): Ditto.
2314         (assign_parms): Change field name.
2315
2316 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
2317
2318         PR tree-optimization/32220
2319         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
2320         phi node is reached before defining statement.
2321
2322 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2323
2324         PR tree-opt/32231
2325         * tree-vect-transform.c (vectorizable_call): Call update_stmt
2326         after changing the right hand side of the assignment.
2327
2328 2007-06-06  Eric Christopher  <echristo@apple.com>
2329
2330         * config.gcc (i?86-*-darwin*): Remove arch parameter.
2331         (x86_64-*-darwin*): Ditto.
2332         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
2333         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2334
2335 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2336
2337         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
2338         coding conventions.
2339         (add_key): Likewise.
2340         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
2341         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
2342         variable names.
2343         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
2344         (add_cost_one_coalesce): Likewise.
2345         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
2346         variable names. Rename orig to orig_name for consistency.
2347         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
2348         conventions.
2349         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
2350         (record_equivalences_from_stmt): Likewise.
2351         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
2352         the coding conventions.
2353         (memory_ssa_name_same): Likewise.
2354         (dse_optimize_stmt): Likewise.
2355         (dse_record_phis): Likewise.
2356         (dse_finalize_block): Likewise.
2357         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
2358         keywords as variable names.
2359         (may_move_till): Cast according to the coding conventions.
2360         (force_move_till_expr): Avoid using C++ keywords as variable names.
2361         (force_move_till): Cast according to the coding conventions.
2362         (memref_hash): Likewise.
2363         (memref_eq): Likewise.
2364         (gather_mem_refs_stmt): Likewise.
2365         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
2366         keywords as variable names.
2367         (idx_find_step): Cast according to the coding conventions.
2368         (idx_record_use): Likewise.
2369         (find_depends): Likewise.
2370         (prepare_decl_rtl): Likewise.
2371         (mbc_entry_hash): Likewise.
2372         (mbc_entry_eq): Likewise.
2373         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
2374         (simplify_replace_tree): Avoid using C++ keywords as variable names.
2375         (idx_infer_loop_bounds): Cast according to the coding conventions.
2376         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
2377         * tree-ssa-math-opts.c (occ_new ): Likwise.
2378         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
2379         macros.
2380         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
2381         names.
2382         (add_use_op): Likewise.
2383         (add_vop): Likewise.
2384         (add_vuse_op): Likewise.
2385         (add_vdef_op): Likewise.
2386         (get_expr_operands): Likewise.
2387         (push_stmt_changes): Use type safe memory macros.
2388         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
2389         keywords as variable names.
2390         (conditional_replacement): Likewise.
2391         (minmax_replacement): Likewise.
2392         (abs_replacement): Likewise.
2393         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
2394         coding conventions.
2395         (insert_fake_stores): Avoid using C++ keywords as variable names.
2396         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
2397         conventions.
2398         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
2399         (heapvar_insert): Use type safe memory macros.
2400         (new_var_info): Cast according to the coding conventions.
2401         (new_constraint): Likewise.
2402         (remove_preds_and_fake_succs): Use type safe memory macros.
2403         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
2404         conventions.
2405         (thread_single_edge): Likewise.
2406         (thread_through_loop_header): Likewise.
2407
2408 2007-06-06  Eric Christopher  <echristo@apple.com>
2409
2410         * config/i386/i386.c (override_options): Move handling
2411         of TARGET_SUBTARGET* earlier.
2412
2413 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
2414
2415         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
2416         use %n on printf.
2417
2418 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
2419
2420         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
2421         emited outside of basic block.
2422         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
2423         the created blocks.
2424         * rtl.h (delete_insn_chain): Declaration changed.
2425         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
2426         non-removed insns.
2427         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
2428         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
2429         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
2430         to delete_insn_chain.
2431         (rtl_verify_flow_info_1): Verify that the insns in header and footer
2432         do not have bb field set.
2433         (rtl_verify_flow_info): Verify that insns between basic blocks do not
2434         have bb field set.
2435         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
2436         * cfgcleanup.c (try_optimize_cfg): Ditto.
2437
2438 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2439
2440         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
2441         (lambda_body_vector_new): Use type safe memory macros.
2442         (lambda_linear_expression_new): Likewise.
2443         (lambda_loopnest_new): Likewise.
2444         (lambda_lattice_new): Likewise.
2445         (replace_uses_equiv_to_x_with_y): Cast according to the coding
2446         conventions. Use type safe memory macros.
2447         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
2448         (lambda_body_vector_s): Likewise.
2449         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
2450         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
2451
2452 2007-06-06  Richard Guenther  <rguenther@suse.de>
2453
2454         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
2455         if we need to schedule cfg_cleanup.
2456         (tree_ssa_forward_propagate_single_use_vars): Do so.
2457
2458 2007-06-06  Ian Lance Taylor  <iant@google.com>
2459
2460         * fold-const.c (merge_ranges): If range_successor or
2461         range_predecessor fail, just return 0.
2462
2463 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2464
2465         PR tree-optimization/32216
2466         * tree-vectorizer.c (supportable_widening_operation): Determine
2467         signedness of FIX_TRUNC_EXPR from output operand.
2468         (supportable_narrowing_operation): Ditto.
2469         * tree-vect-generic.c (expand_vector_operations_1): Determine
2470         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
2471         from input operand.
2472
2473 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2474
2475         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
2476         (struct pta): ...from here. Change flags to unsigned to avoid
2477         excessive casting (as it is used as a bit mask).
2478         (override_options): Add casts according to the coding convenventions.
2479         (x86_64_elf_unique_section): Likewise.
2480         (examine_argument): Avoid using C++ keywords as variable names.
2481         (construct_container): Likewise.
2482         (legitimize_pic_address): Likewise.
2483         (get_dllimport_decl): Cast according to the coding conventions. Use
2484         type safe memory macros.
2485         (legitimize_address): Cast according to the coding conventions.
2486         (emit_i387_cw_initialization): Corrected the type of slot to enum
2487         ix86_stack_slot.
2488         (ix86_init_machine_status): Use type safe memory macros.
2489         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
2490         (bdesc_pcmpistr): Likewise.
2491         (bdesc_crc32): Likewise.
2492         (bdesc_sse_3arg): Likewise.
2493         (bdesc_2arg): Likewise.
2494         (bdesc_1arg): Likewise.
2495         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
2496         (ix86_expand_sse_pcmpistr): Likewise.
2497         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
2498         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
2499         int to match the langhook definition.
2500         (ix86_builtin_conversion): Change the type of code to unsigned init to
2501         match the langhook definition.
2502         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
2503         names.
2504         (ix86_preferred_output_reload_class): Likewise.
2505         (ix86_cannot_change_mode_class): Likewise.
2506         (ix86_memory_move_cost): Likewise.
2507         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
2508         avoid excessive casting later on.
2509         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
2510
2511 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2512
2513         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
2514         as flags setting insn.
2515         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
2516
2517 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2518
2519         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
2520         (UNSPEC_ROUND): New.
2521         ("sse4_1_round<mode>2"): New insn pattern.
2522         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
2523         SSE4.1 targets.
2524         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
2525         expander using SSEMODEF mode macro.  Expand using
2526         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2527         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
2528         expander using SSEMODEF mode macro.  Expand using
2529         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2530         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
2531         expander using SSEMODEF mode macro.  Expand using
2532         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2533         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
2534         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
2535         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
2536         UNSPEC_ROUNDS.
2537
2538 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
2539             Sebastian Pop  <sebpop@gmail.com>
2540
2541         * lambda.h (build_linear_expr): New.
2542         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
2543         Use build_linear_expr, call fold and force_gimple_operand.
2544         (lambda_loopnest_to_gcc_loopnest): Check that there is
2545         something to insert.
2546         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
2547
2548 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
2549
2550         PR preprocessor/23479
2551         * doc/extend.texi: Document the 0b-prefixed binary integer
2552         constant extension.
2553
2554 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2555
2556         PR tree-optimization/32215
2557         * tree-vectorizer.c (supportable_widening_operation): Return false
2558         for unsupported FIX_TRUNC_EXPR tree code.
2559         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
2560
2561 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
2562
2563         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
2564         register on SPE targets.  Change documentation to reflect
2565         reality.
2566         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2567         Change FIXED_SCRATCH to 14 and document why we're keeping r14
2568         out of the register allocation pool.
2569         (rs6000_reg_live_or_pic_offset_p): New function.
2570         (rs6000_emit_prologue): Move the actual saving of LR up to free
2571         r0 for holding r11.  Split saving of SPE 64-bit registers into
2572         its own case.  Ensure that offsets will always be in-range for
2573         'evstdd' by using r11 as a scratch register to point at the start
2574         of the SPE save area.  Save r11 if necessary, as it is the static
2575         chain register.
2576         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
2577         into its own case.  Ensure that offsets will always be in-range
2578         for 'evldd' by using r11 as a scratch register to point at the
2579         start of the SPE save area.  Also adjust r11 when restoring
2580         the stack pointer to compensate for pre-loading r11.
2581
2582 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
2583
2584         * cfg.c (init_flow): Use type safe memory macros.
2585         (alloc_block): Likewise.
2586         (unchecked_make_edge): Likewise.
2587         (dump_flow_info): Avoid using C++ keywords as variable names.
2588         (copy_original_table_clear): Cast according to the coding conventions.
2589         (copy_original_table_set): Likewise.
2590         * cfgexpand (label_rtx_for_bb): Likewise.
2591         (expand_gimple_basic_block): Likewise.
2592         * cfghooks.c (dump_bb): Likewise.
2593         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
2594         variable names.
2595         (lv_add_condition_to_bb): Likewise.
2596         * cfglayout (relink_block_chain): Cast according to the coding
2597         conventions.
2598         (fixup_reorder_chain): Likewise.
2599         (fixup_fallthru_exit_predecessor): Likewise.
2600         * cfgloop.c (glb_enum_p): Likewise.
2601         (get_exit_description): Likewise.
2602         (dump_recorded_exit): Likewise.
2603         * cfgloop.h (enum loop_estimation): Move out of struct scope...
2604         (struct loop): ... from here.
2605         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
2606         conventions.
2607         * cfgrtl.c (rtl_create_basic_block): Likewise.
2608         (rtl_split_block): Likewise.
2609         (rtl_dump_bb): Likewise.
2610         (cfg_layout_split_block): Likewise.
2611         (init_rtl_bb_info): Use typesafe memory macros.
2612
2613         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
2614         * graphds.h: Updated all usages of edge to graph_edge.
2615         * graphds.c: Likewise.
2616         * cfgloopanal.c: Likewise.
2617
2618 2007-06-05  Ian Lance Taylor  <iant@google.com>
2619
2620         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
2621         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
2622         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
2623         expression.
2624         (test_for_singularity): Likewise.
2625
2626 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2627
2628         * config/i386/constraints.md ("Y2"): Replaced by ...
2629         ("Yt"): This.
2630         * config/i386/i386.md: Likewise.
2631         * config/i386/mmx.md: Likewise.
2632         * config/i386/sse.md: Likewise.
2633
2634 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2635
2636         * config/i386/constraints.md ("z"): Replaced by ...
2637         ("Y0"): This.
2638         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
2639         (sse4_1_blendvps): Likewise.
2640         (sse4_1_pblendvb): Likewise.
2641         (sse4_2_pcmpestr): Likewise.
2642         (sse4_2_pcmpestrm): Likewise.
2643         (sse4_2_pcmpestr_cconly): Likewise.
2644         (sse4_2_pcmpistr): Likewise.
2645         (sse4_2_pcmpistrm): Likewise.
2646         (sse4_2_pcmpistr_cconly): Likewise.
2647
2648 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
2649
2650         * matrix-reorg.c (transform_access_sites): Fix computation.
2651         (transform_allocation_sites): Same.
2652
2653 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2654
2655         * config/i386/i386.c (override_options): Use
2656         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
2657
2658 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2659
2660         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
2661         (nonimm_not_xmm0_operand): Ditto.
2662         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
2663         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
2664         as operand[2] predicate.  Require "z" class XMM register for
2665         operand[3].  Adjust asm template.
2666         ("sse4_1_blendvpd"): Ditto.
2667         ("sse4_1_pblendvb"): Ditto.
2668         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
2669         force op2 into xmm0 register for variable blend instructions.
2670
2671 2007-06-04  Tom Tromey  <tromey@redhat.com>
2672
2673         * c-tree.h (start_enum): Update.
2674         (build_enumerator): Likewise.
2675         * c-decl.c (enum_next_value): Removed.
2676         (enum_overflow): Likewise.
2677         (start_enum): Add c_enum_contents argument.  Don't use globals.
2678         (build_enumerator): Likewise.
2679         * c-tree.h (struct c_enum_contents): New struct.
2680
2681 2007-06-04  Tom Tromey  <tromey@redhat.com>
2682
2683         * c-common.c (c_common_get_alias_set): Fix indentation.
2684
2685 2007-06-04  Ian Lance Taylor  <iant@google.com>
2686
2687         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
2688         to overflow, reduce overflow infinity to regular infinity.
2689         (vrp_var_may_overflow): New static function.
2690         (vrp_visit_phi_node): Check vrp_var_may_overflow.
2691
2692 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
2693
2694         * stor-layout.c (layout_type): Remove duplicate code.
2695
2696 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
2697
2698         PR c/32191
2699         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
2700         before build_common_builtin_nodes ().
2701
2702 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
2703
2704         PR target/31733
2705         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2706
2707 2007-06-04  Jan Hubicka  <jh@suse.cz>
2708
2709         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2710         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2711         instead of _stat version.
2712
2713 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2714
2715         PR tree-optimization/32194
2716         * tree-predcom.c (determine_offset): Check that both references have
2717         the same type.
2718
2719 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2720
2721         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
2722         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
2723         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
2724         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
2725         Add argument to iterate_fix_dominators call.
2726         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
2727         * gcse.c (hoist_code): Change domby to vector.
2728         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
2729         Add argument to iterate_fix_dominators call.
2730         * loop-doloop.c (doloop_modify): Changed recount_dominator to
2731         recompute_dominator.
2732         * lambda-code.c (perfect_nestify): Ditto.
2733         * cfgloopanal.c: Include graphds.h.
2734         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
2735         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
2736         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
2737         add_edge call.
2738         * graphds.c: New file.
2739         * graphds.h: New file.
2740         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
2741         (get_dominated_by, get_dominated_by_region): Change return type to
2742         vector.
2743         (verify_dominators): Recompute all dominators and compare the results.
2744         (recount_dominator): Renamed to ...
2745         (recompute_dominator): ... this.  Do not check that the block is
2746         dominated by entry.
2747         (iterate_fix_dominators): Reimplemented.
2748         (prune_bbs_to_update_dominators, root_of_dom_tree,
2749         determine_dominators_for_sons): New functions.
2750         * et-forest.c (et_root): New function.
2751         * et-forest.h (et_root): Declare.
2752         * Makefile.in (graphds.o): Add.
2753         (cfgloopanal.o): Add graphds.h dependency.
2754         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
2755         * basic-block.h (get_dominated_by, get_dominated_by_region,
2756         iterate_fix_dominators): Declaration changed.
2757         (recount_dominator): Renamed to ...
2758         (recompute_dominator): ... this.
2759         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
2760         (thread_through_all_blocks): Do not free dominance info.
2761
2762 2007-06-03  Andreas Schwab  <schwab@suse.de>
2763
2764         * config/m68k/m68k.c (override_options): Don't override
2765         REAL_MODE_FORMAT.
2766         * config/m68k/m68k-modes.def (SF, DF): Define to use
2767         motorola_single_format and motorola_double_format, resp.
2768         * real.c (motorola_single_format): Renamed from
2769         coldfire_single_format.
2770         (motorola_double_format): Renamed from coldfire_double_format.
2771         (encode_ieee_extended): Generate a proper canonical NaN image
2772         respecting canonical_nan_lsbs_set.
2773         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
2774         true.
2775         * real.h: Adjust declarations.
2776
2777 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2778
2779         PR target/32163
2780         * config/sh/sh.md (symGOT_load): Don't schedule insns when
2781         the symbol is generated with the stack protector.
2782
2783 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
2784
2785         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
2786         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
2787         "interrupt".
2788         * doc/extend.texi (interrupt): Mention m68k.
2789
2790 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
2791
2792         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
2793         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
2794         (ix86_expand_sse_pcmpestr): Do not check operands for
2795         "register_operand", when insn operand predicate is "register_operand".
2796         (ix86_expand_sse_pcmpistr): Ditto.
2797
2798 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
2799             Uros Bizjak  <ubizjak@gmail.com>
2800
2801         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
2802         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
2803         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
2804         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
2805         * config/i386/constraints.md ("z"): New register constraint
2806         for members of SSE_FIRST_REG class.
2807         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
2808         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
2809         SSE_FIRST_REG class.
2810         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
2811         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
2812         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
2813         (IX86_BUILTIN_PCMPESTRM128): Likewise.
2814         (IX86_BUILTIN_PCMPESTRA128): Likewise.
2815         (IX86_BUILTIN_PCMPESTRC128): Likewise.
2816         (IX86_BUILTIN_PCMPESTRO128): Likewise.
2817         (IX86_BUILTIN_PCMPESTRS128): Likewise.
2818         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
2819         (IX86_BUILTIN_PCMPISTRI128): Likewise.
2820         (IX86_BUILTIN_PCMPISTRM128): Likewise.
2821         (IX86_BUILTIN_PCMPISTRA128): Likewise.
2822         (IX86_BUILTIN_PCMPISTRC128): Likewise.
2823         (IX86_BUILTIN_PCMPISTRO128): Likewise.
2824         (IX86_BUILTIN_PCMPISTRS128): Likewise.
2825         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
2826         (struct builtin_description): Change "flag" field to unsigned.
2827         (bdesc_pcmpestr): New builtin description table.
2828         (bdesc_pcmpistr): Likewise.
2829         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
2830         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
2831         Initialize pcmp[ei]str[im] insns for SSE4.2.
2832         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
2833         (ix86_expand_sse_pcmpistr): Likewise.
2834         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
2835         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
2836         (UNSPEC_PCMPISTR): Likewise.
2837         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
2838         (sse4_2_pcmpestri):New isns pattern.
2839         (sse4_2_pcmpestrm): Likewise.
2840         (sse4_2_pcmpestr_cconly): Likewise.
2841         (sse4_2_pcmpistr): New insn patern and splitter.
2842         (sse4_2_pcmpistri):New isns pattern.
2843         (sse4_2_pcmpistrm): Likewise.
2844         (sse4_2_pcmpistr_cconly): Likewise.
2845         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
2846         in SSE4.2.
2847
2848 2007-06-01  David Daney  <ddaney@avtrex.com>
2849
2850         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
2851         LOADGP_ABSOLUTE and not binds_local_p.
2852
2853 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
2854
2855         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
2856
2857 2007-06-01  Ian Lance Taylor  <iant@google.com>
2858
2859         * tree-vrp.c (compare_name_with_value): Always set
2860         used_strict_overflow if we get a result from the variable itself.
2861
2862 2007-06-01  Ian Lance Taylor  <iant@google.com>
2863
2864         PR rtl-optimization/31455
2865         * lower-subreg.c (find_decomposable_subregs): Don't decompose
2866         subregs which have a cast between modes which are not tieable.
2867
2868 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
2869
2870         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
2871         breaks after return statements.
2872
2873 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2874
2875         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
2876         only after no_new_pseudos.
2877
2878 2007-05-31  Eric Christopher  <echristo@apple.com>
2879
2880         * expr.c (convert_move): Assert that we don't have a BLKmode
2881         operand.
2882         (store_expr): Handle BLKmode moves by calling emit_block_move.
2883
2884 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2885
2886         * c-typeck.c (build_indirect_ref): Include type in error message.
2887         (build_binary_op): Pass types to binary_op_error.
2888         * c-common.c (binary_op_error): Take two type arguments, print out
2889         types with error.
2890         * c-common.h (binary_op_error): Update prototype.
2891
2892 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2893
2894         * config/i386/i386.c: Correct coments on -mno-sse4.
2895
2896 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2897
2898         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
2899         (x86_64-*-*): Likewise.
2900         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
2901         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
2902         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
2903         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
2904         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
2905         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
2906         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
2907         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
2908         (OPTION_MASK_ISA_SSE4): Likewise.
2909         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
2910         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
2911         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
2912         (override_options): Support SSE4.2.
2913         (ix86_build_const_vector): Support SImode and DImode.
2914         (ix86_build_signbit_mask): Likewise.
2915         (ix86_expand_int_vcond): Support V2DImode.
2916         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
2917         (IX86_BUILTIN_CRC32HI): Likewise.
2918         (IX86_BUILTIN_CRC32SI): Likewise.
2919         (IX86_BUILTIN_CRC32DI): Likewise.
2920         (IX86_BUILTIN_PCMPGTQ): Likewise.
2921         (bdesc_crc32): Likewise.
2922         (bdesc_sse_3arg): Likewise.
2923         (ix86_expand_crc32): Likewise.
2924         (ix86_init_mmx_sse_builtins): Support SSE4.2.
2925         (ix86_expand_builtin): Likewise.
2926         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2927         __SSE4_2__ for -msse4.2.
2928         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
2929         (CRC32MODE): Likewise.
2930         (crc32modesuffix): Likewise.
2931         (crc32modeconstraint): Likewise.
2932         (sse4_2_crc32<mode>): Likewise.
2933         (sse4_2_crc32di): Likewise.
2934         * config/i386/i386.opt (msse4.2): New for SSE4.2.
2935         (msse4): Likewise.
2936         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
2937         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
2938         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
2939         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
2940         (vcondu<mode>): Likewise.
2941         * doc/extend.texi: Document SSE4.2 built-in functions.
2942         * doc/invoke.texi: Document -msse4.2/-msse4.
2943
2944 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2945
2946         PR tree-optimization/32160
2947         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
2948         variable as gimple reg.
2949         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
2950
2951 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
2952
2953         * gcc.c (main): Don't consider linker options when issuing the
2954         warning about a linker input file not being used.
2955
2956 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2957
2958         * tree-vrp.c (compare_names): Initialize sop.
2959
2960 2007-05-30  Dirk Mueller  <dmueller@suse.de>
2961
2962         * cgraphunit.c (cgraph_analyze_function): Remove
2963         computation of inline parameters.
2964
2965 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
2966
2967         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
2968
2969 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
2970
2971         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
2972         Add vx-common.h.  Include vxworks.h between vx-common.h and
2973         arm/vxworks.h.
2974         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
2975         redefining.
2976         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
2977         (TARGET_ASM_DESTRUCTOR): Likewise.
2978         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
2979         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
2980         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2981         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
2982         (VXWORKS_ENDIAN_SPEC): Define.
2983         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
2984         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
2985         VXWORKS_* equivalents.
2986         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
2987         (ASM_FILE_START): Delete.
2988         (TARGET_VERSION): Reformat.
2989         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
2990         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
2991         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
2992         (FPBIT, DPBIT): Define.
2993         (fp-bit.c, dp-bit.c): New rules.
2994         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
2995         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
2996         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
2997         * config/arm/arm.h: Include vxworks-dummy.h.
2998         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
2999         Mark with ATTRIBUTE_UNUSED.
3000         (arm_override_options): Do not allow VxWorks RTP PIC to be used
3001         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
3002         make it incompatible with -msingle-pic-base.
3003         (arm_function_ok_for_sibcall): Return false for calls that might
3004         go through a VxWorks PIC PLT entry.
3005         (require_pic_register): New function, split out from...
3006         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
3007         for VxWorks RTPs.
3008         (arm_load_pic_register): Handle the VxWorks RTP initialization
3009         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
3010         (arm_emit_call_insn): New function.
3011         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
3012         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
3013         (pic_offset_arm): New pattern.
3014         (call, call_value): Use arm_emit_call_insn.
3015         (call_internal, call_value_internal): New expanders.
3016         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
3017         VxWorks unless __PIC__.
3018
3019 2007-05-30  Eric Christopher  <echristo@gmail.com>
3020
3021         * genrecog.c: Include regs.h in generated file.
3022         * genemit.c: Ditto. Fix up formatting.
3023         * config/mn10300/constraints.md: New.
3024         * config/mn10300/mn10300.md: Include.
3025         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
3026         Fix up for removed macro.
3027         * config/mn10300/predicates.md (call_address_operand):  Ditto.
3028         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
3029         (CONST_OK_FOR_I): Ditto.
3030         (CONST_OK_FOR_J): Ditto.
3031         (CONST_OK_FOR_K): Ditto.
3032         (CONST_OK_FOR_L): Ditto.
3033         (CONST_OK_FOR_M): Ditto.
3034         (CONST_OK_FOR_N): Ditto.
3035         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
3036         (OK_FOR_Q): Ditto.
3037         (OK_FOR_R): Ditto.
3038         (OK_FOR_T): Ditto.
3039         (EXTRA_CONSTRAINT): Ditto.
3040
3041 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3042
3043         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
3044         Remove defines.
3045         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
3046         OPTION_MASK_ISA_64BIT.
3047         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
3048
3049 2007-05-30  Richard Guenther  <rguenther@suse.de>
3050
3051         PR middle-end/32152
3052         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
3053         types for comparison.
3054         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
3055         with original typed arguments.
3056         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
3057
3058 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
3059
3060         PR tree-optimization/31769
3061         * except.c (duplicate_eh_regions): Clear prev_try if
3062         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
3063
3064 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
3065
3066         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
3067         * tree-ssa-sink.c (statement_sink_location): Return basic block and
3068         bsi of the location where statements should be inserted.
3069         (sink_code_in_bb): Take bsi from statement_sink_location.
3070         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
3071         instead of bsi_start.
3072         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
3073         bsi_insert_after.
3074         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
3075         (bsi_move_before): Document inconsistency with bsi_move_after.
3076         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
3077
3078 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3079
3080         * config/i386/i386.h (TARGET_ABM): New define.
3081         (TARGET_POPCNT): Ditto.
3082         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
3083         New temporary defines to redefine from OPTION_ISA_* defines.
3084         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
3085         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
3086         (ix86_isa_flags): New extern int declaration.
3087         (TARGET_SUBTARGET_DEFAULT): New define.
3088         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
3089         (TARGET_SUBTARGET32_DEFAULT): Ditto.
3090         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
3091         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3092         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
3093         * config/i386/darwin.h: Change TARGET_64BIT define to
3094         OPTION_ISA_64BIT.
3095
3096         * config/i386/i386.opt (m3dnowa): Define as undocumented option
3097         using existing "ix86_isa_flags" varible.
3098         (m32, m64): Use existing "ix86_isa_flags" variable.
3099         (mmmx, m3dnow): Ditto.
3100         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
3101         (mabm): Define as non-negative option using "x86_abm" variable.
3102         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
3103
3104         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
3105         Rewrite feature test bitmap.
3106         (ix86_isa_flags): New initialized global int varible.
3107         (ix86_isa_flags_explicit): New static int variable.
3108         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
3109         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
3110         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
3111         target_flags_explicit.
3112         (override_options): Remove "target_enable" and "target_disable" fields
3113         from "struct ptt". Update processor_target_table accordingly. Remove
3114         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
3115         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
3116         "target_flags" and "ix86_isa_flags_explicit" instead of
3117         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
3118         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
3119         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
3120         to true when either of PTA_POPCNT or PTA_ABM is set in
3121         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
3122         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
3123         processor_alias_table flags entry.  Remove handling of
3124         "target_enable" and "target_disable" fields of processor_target_table.
3125         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
3126         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
3127         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
3128         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
3129         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
3130         "target_flags".
3131         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
3132
3133 2007-05-29  David Daney  <ddaney@avtrex.com>
3134
3135         PR gcc/31975
3136         * config/mips/mips.c (mips_output_mi_thunk): Emit
3137         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
3138
3139 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
3140         * config/i386/i386.c (ix86_function_regparm): Added checking of
3141         ix86_force_align_arg_pointer to determine the number of
3142         register parameters.
3143
3144 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
3145
3146         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
3147         (SET_DR_MISALIGNMENT): New.
3148         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
3149         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
3150         Use SET_DR_MISALIGNMENT.
3151         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
3152         pointer.
3153         * tree-data-ref.c (create_data_ref, compute_all_dependences,
3154         find_loop_nest): Export.
3155         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
3156         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
3157         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
3158         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
3159         New macros.
3160         (struct mem_ref): Add field reuse_distance.
3161         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
3162         Initialize reuse_distance field.
3163         (issue_prefetch_ref): Select temporality of prefetch according to
3164         reuse_distance.
3165         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
3166         self_reuse_distance, determine_loop_nest_reuse): New functions.
3167         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
3168         (tree_ssa_prefetch_arrays): Dump L2 cache size.
3169         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
3170         dependency.
3171
3172 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
3173
3174         * tree-ssa-alias.c: Add aliasing overview.
3175
3176 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
3177             Danny Smith  <dannysmith@users.sourceforge.net>
3178
3179         PR target/29498
3180         * config/i386/t-crtfm: Compile crtfastmath.o with
3181         -minline-all-stringops.
3182         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
3183         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
3184
3185 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3186
3187         * doc/md.texi: Document constraints on HP PA-RISC.
3188
3189         * pa/constraints.md: New file.
3190         * pa.md: Include constraints.md.
3191         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
3192         (integer_store_memory_operand, ldil_cint_p): New functions.
3193         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
3194         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3195         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
3196         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
3197         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
3198
3199 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
3200
3201         PR c/31339
3202         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
3203         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
3204         case POSTDECREMENT_EXPR>): Return the error_mark_node
3205         if either the real or imaginary parts would an
3206         error_mark_node.
3207
3208 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
3209
3210         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
3211         name when we remove it from a call.
3212
3213 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
3214
3215         * targhooks.c (default_narrow_bitfield): Remove.
3216         * targhooks.h: Remove the prototype for
3217         default_narrow_bitfield.
3218
3219         * langhooks-def.h: Remove the prototype for
3220         hook_get_alias_set_0.
3221         * langhooks.c (hook_get_alias_set_0): Remove.
3222
3223         * global.c (EXECUTE_IF_CONFLICT): Remove.
3224
3225 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3226
3227         PR tree-opt/32100
3228         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
3229         return true when truth_value_p is true and the type
3230         is of signed:1.
3231
3232 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
3233
3234         * doc/install.texi (Prerequisites): We no longer require Autoconf
3235         2.13 for the top-level.
3236
3237 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
3238
3239         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
3240         memory access via x86_expand_vector_move_misalign() only for
3241         TImode values on 32-bit targets.
3242
3243 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
3244
3245         * matrix-reorg.c: New file. Implement matrix flattening and
3246         transposing optimization.
3247         * tree-pass.h: Add matrix reorg pass.
3248         * common.opt: Add fipa-mreorg flag.
3249         * Makefile.in: Add matrix-reorg.c.
3250         * passes.c: Add matrix reorg pass.
3251         * varpool.c (add_new_static_var): New function.
3252         * cgraph.h (add_new_static_var): Declare.
3253
3254 2007-05-27  Eric Christopher  <echristo@apple.com>
3255
3256         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
3257         sp_offset depending on stack size. Save r12 depending
3258         on registers we're saving later.
3259         (rs6000_emit_epilogue): Update sp_offset depending only
3260         on stack size.
3261
3262 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
3263
3264         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
3265         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
3266         * ifcvt.c (if_convert): Ditto.
3267         * tree-ssa-threadupdate.c (thread_block): Ditto.
3268         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
3269         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3270         verify_loop_closed_ssa): Check number_of_loops instead of
3271         current_loops.
3272         * predict.c (tree_estimate_probability): Ditto.
3273         * tree-if-conv.c (main_tree_if_conversion): Ditto.
3274         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
3275         * modulo-sched.c (sms_schedule): Ditto.
3276         * tree-scalar-evolution.c (scev_const_prop): Ditto.
3277         (scev_finalize): Do not do anything if scev analysis was not
3278         initialized.
3279         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
3280         current_loops == NULL.
3281         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
3282         * loop-init.c (loop_optimizer_init): Do not free current_loops when
3283         there are no loops.
3284         (loop_optimizer_finalize): Assert that loops were analyzed.
3285         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
3286         rtl_doloop): Check number_of_loops instead of current_loops.
3287         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
3288         current_loops == NULL.
3289         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
3290         gate_tree_vectorize tree_linear_transform, check_data_deps,
3291         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
3292         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
3293         Check number_of_loops instead of current_loops.
3294         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
3295         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
3296         free loops if available.
3297         (execute_pre): Do not pass do_fre to fini_pre.
3298
3299 2007-05-27  Tobias Burnus  <burnus@net-b.de>
3300
3301         PR middle-end/32083
3302         * real.c (mpfr_from_real): Fix sign of -Inf.
3303
3304 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
3305
3306         * tree-vect-transform.c (vectorizable_conversion): Initialize
3307         tree_code variables to ERROR_MARK.
3308         (vectorizable_type_demotion): Likewise.
3309         (vectorizable_type_promotion): Likewise.
3310
3311 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3312
3313         PR target/32065
3314         * config/i386/i386.md (movti): Handle push operands via
3315         ix86_expand_push().
3316
3317 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3318
3319         * basic-block.h: Remove the prototype for merge_seq_blocks.
3320         * cfgcleanup.c (merge_seq_blocks): Remove.
3321
3322         * tree-flow.h: Remove the prototype for is_aliased_with.
3323         * tree-ssa-alias.c (is_aliased_with): Remove.
3324
3325 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
3326
3327         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
3328
3329         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
3330
3331         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
3332         ix86_expand_sse4_unpack if SSE4.1 is enabled.
3333         (vec_unpacks_hi_v16qi): Likewise.
3334         (vec_unpacku_lo_v16qi): Likewise.
3335         (vec_unpacks_lo_v16qi): Likewise.
3336         (vec_unpacku_hi_v8hi): Likewise.
3337         (vec_unpacks_hi_v8hi): Likewise.
3338         (vec_unpacku_lo_v8hi): Likewise.
3339         (vec_unpacks_lo_v8hi): Likewise.
3340         (vec_unpacku_hi_v4si): Likewise.
3341         (vec_unpacks_hi_v4si): Likewise.
3342         (vec_unpacku_lo_v4si): Likewise.
3343         (vec_unpacks_lo_v4si): Likewise.
3344
3345 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3346
3347         * c-typeck.c, config/arm/arm.c, config/darwin.c,
3348         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
3349         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
3350         follow spelling conventions in various
3351         warning/error/diagnostic messages.
3352
3353         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
3354         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
3355         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
3356         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
3357         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
3358         * doc/tm.texi: Follow spelling conventions.
3359
3360 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3361
3362         PR tree-opt/32090
3363         * tree-ssa-forwprop.c
3364         (forward_propagate_addr_into_variable_array_index): Remove
3365         the lhs argument.  Use the type of def_rhs instead of lhs.
3366         (forward_propagate_addr_expr_1): Update use of
3367         forward_propagate_addr_into_variable_array_index.
3368
3369 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
3370             Nigel Stephens  <nigel@mips.com>
3371
3372         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
3373         function attributes, "far" being an alias for "long_call".
3374         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
3375         (mips_near_type_p, mips_far_type_p): New.
3376         (mips_comp_type_attributes): New function to check that attributes
3377         attached to a function type are compatible.
3378         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
3379         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
3380         to the target function of the thunk.
3381         (mips_encode_section_info): Check for "near" and "far" function
3382         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
3383
3384         * config/mips/predicates.md (const_call_insn_operand): Test only
3385         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
3386
3387         * doc/extend.texi (Function Attributes): Document MIPS "near" and
3388         "far" attributes.
3389
3390         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
3391         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
3392         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
3393         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
3394
3395 2007-05-25  Eric Christopher  <echristo@apple.com>
3396
3397         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
3398         to x86-darwin configurations.
3399         * config/i386/t-darwin: Add softfp support.
3400         * config/i386/t-darwin64: Ditto.
3401         * config/i386/sfp-machine.h: If mach then don't use
3402         aliasing, emit a stub to call.
3403
3404 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
3405
3406         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
3407         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
3408         tree-predcom.c, tree-ssa-alias-warnings.c,
3409         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
3410         comment typos.  Follow spelling conventions.
3411         * doc/cpp.texi, doc/invoke.texi: Fix typos.
3412
3413 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3414
3415         PR target/32065
3416         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
3417         constants into memory.  Expand unaligned memory references for
3418         SSE modes via x86_expand_vector_move_misalign() function.
3419
3420 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
3421
3422         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
3423         "memory" attribute for "sseishft" type insn without operands[2].
3424
3425 2007-05-25  Dirk Mueller  <dmueller@suse.de>
3426             Marcus Meissner <meissner@suse.de>
3427
3428         * doc/extend.texi (alloc_size): New attribute.
3429         * c-common.c (handle_alloc_size_attribute): New.
3430         * tree-object-size.c (alloc_object_size): Use alloc_size
3431         attribute, if available.
3432
3433 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3434
3435         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
3436         with MASK_SSE2.
3437         (__builtin_ia32_vec_ext_v2di): Likewise.
3438         (__builtin_ia32_vec_ext_v4si): Likewise.
3439         (__builtin_ia32_vec_ext_v8hi): Likewise.
3440         (__builtin_ia32_vec_ext_v16qi): Likewise.
3441         (__builtin_ia32_vec_set_v8hi): Likewise.
3442
3443 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3444
3445         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
3446
3447 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
3448
3449         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
3450         (arm_is_longcall_p): Rename to...
3451         (arm_is_long_call_p): ...this.  Take a single tree argument and
3452         return a bool.
3453         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
3454         (CUMULATIVE_ARGS): Remove call_cookie.
3455         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
3456         (ENCODED_LONG_CALL_ATTR_P): Delete.
3457         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
3458         LONG_CALL_FLAG_CHAR cases.
3459         (ARM_DECLARE_FUNCTION_SIZE): Delete.
3460         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
3461         ARM_DECLARE_FUNCTION_SIZE.
3462         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
3463         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
3464         (arm_encode_call_attribute, current_file_function_operand): Delete.
3465         (arm_function_in_section_p): New function.
3466         (arm_is_longcall_p): Rename to...
3467         (arm_is_long_call_p): ...this.  Take the target function as a single
3468         argument and return a bool.  Do not rely on call cookies.  Check
3469         whether the target symbol is in the same section as the current
3470         function, not just the same compilation unit.
3471         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
3472         (arm_encode_section_info): Don't encode a call type.
3473         * config/arm/arm.md (call, call_value): Update calls to
3474         arm_is_long(_)call_p.  Simplify logic.
3475         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
3476         Update calls to arm_is_long(_)call_p.
3477
3478 2007-05-25  Richard Guenther  <rguenther@suse.de>
3479
3480         PR tree-optimization/31982
3481         * tree-ssa-forwprop.c
3482         (forward_propagate_addr_into_variable_array_index): Handle arrays
3483         with element size one.
3484
3485 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3486
3487         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
3488         (umulsi3_highpart): Likewise.
3489
3490 2007-05-24  Ian Lance Taylor  <iant@google.com>
3491
3492         PR rtl-optimization/32069
3493         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
3494         is NULL.
3495
3496 2007-05-24  Ollie Wild  <aaw@google.com>
3497
3498         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
3499         description.
3500
3501 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
3502
3503         * postreload-gcse.c (reg_changed_after_insn_p): New function.
3504         (oprs_unchanged_p): Use it to check all registers in a REG.
3505         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
3506         (reg_set_between_after_reload_p): Delete.
3507         (reg_used_between_after_reload_p): Likewise.
3508         (reg_set_or_used_since_bb_start): Likewise.
3509         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
3510         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
3511         Use reg_set_between_p instead of reg_set_between_after_reload_p.
3512         * rtlanal.c (reg_set_p): Check whether REG overlaps
3513         regs_invalidated_by_call, rather than just checking the
3514         membership of REGNO (REG).
3515
3516 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3517
3518         * doc/passes.texi: Document predictive commoning.
3519         * doc/invoke.texi (-fpredictive-commoning): Document.
3520         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
3521         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
3522         adding indices to the generated name.
3523         (schedule_sm): Pass 0 to get_lsm_tmp_name.
3524         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
3525         * tree-pretty-print.c (op_symbol_1): Renamed to ...
3526         (op_symbol_code): ... and exported.
3527         (dump_omp_clause, op_symbol): Use op_symbol_code
3528         instead of op_symbol_1.
3529         * tree-pass.h (pass_predcom): Declare.
3530         * timevar.def (TV_PREDCOM): New timevar.
3531         * tree-ssa-loop.c (run_tree_predictive_commoning,
3532         gate_tree_predictive_commoning, pass_predcom): New.
3533         * tree-data-ref.c (find_data_references_in_loop): Find the
3534         references in dominance order.
3535         (canonicalize_base_object_address): Ensure that the result has
3536         pointer type.
3537         (dr_analyze_innermost): Export.
3538         (create_data_ref): Code to fail for references with invariant
3539         address moved ...
3540         (find_data_references_in_stmt): ... here.
3541         * tree-data-ref.h (dr_analyze_innermost): Declare.
3542         * tree-affine.c: Include tree-gimple.h and hashtab.h.
3543         (aff_combination_find_elt, name_expansion_hash,
3544         name_expansion_eq, tree_to_aff_combination_expand,
3545         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
3546         New functions.
3547         * tree-affine.h (aff_combination_constant_multiple_p,
3548         tree_to_aff_combination_expand): Declare.
3549         * tree-predcom.c: New file.
3550         * common.opt (fpredictive-commoning): New option.
3551         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
3552         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
3553         * Makefile.in (tree-predcom.o): Add.
3554         (tree-affine.o): Add TREE_GIMPLE_H dependency.
3555         * passes.c (init_optimization_passes):  Add dceloop after
3556         copy propagation in loop optimizer.  Add predictive commoning
3557         to loop optimizer passes.
3558
3559 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3560
3561         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
3562         default hook.
3563
3564 2007-05-24  Jan Hubicka  <jh@suse.cz>
3565
3566         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
3567         statistics.
3568         (genheader): Include statistics.h.
3569
3570         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
3571         notes are gone.
3572         * print-rtl.c (flag_dump_unnumbered): Update comments.
3573         (print_rtl): Fix my previous change.
3574         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
3575         specific data.
3576
3577 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3578
3579         PR middle-end/32018
3580         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
3581         set_loop_copy.
3582         (thread_through_all_blocks): Call initialize_original_copy_tables
3583         and free_original_copy_tables.
3584         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
3585         Use set_loop_copy.
3586         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3587         * cfghooks.c (duplicate_block): Use get_loop_copy.
3588         * cfg.c: Include cfgloop.h.
3589         (loop_copy): New hash table.
3590         (initialize_original_copy_tables): Initialize loop_copy table.
3591         (free_original_copy_tables): Free loop_copy table.
3592         (copy_original_table_clear, copy_original_table_set,
3593         set_loop_copy, get_loop_copy): New functions.
3594         (set_bb_original, set_bb_copy): Use copy_original_table_set.
3595         * cfgloop.h (struct loop): Remove copy field.
3596         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
3597         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
3598
3599 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3600
3601         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
3602         -msse/-msse2/-msse3.
3603
3604 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3605
3606         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
3607         __builtin_ia32_vec_set_v2di with MASK_64BIT.
3608
3609 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
3610
3611         PR target/27067
3612         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
3613         * targhooks.h (default_mangle_decl_assembler_name): Declare
3614         default hook.
3615         * targhooks.c (default_mangle_decl_assembler_name): Define
3616         default hook.
3617         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
3618         default hook.
3619         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
3620         * langhooks.c (lhd_set_decl_assembler_name): Call
3621         targetm.mangle_decl_assembler_name for names with global scope.
3622
3623         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
3624         default.
3625         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
3626         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
3627         Declare.
3628         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
3629         New. Factored out of i386_pe_encode_section_info.
3630         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
3631         Move check for prior decoration of stdcall
3632         symbols to i386_pe_encode_section_info.
3633         (i386_pe_encode_section_info): Adjust call to
3634         gen_stdcall_or_fastcall_suffix.  Use
3635         i386_pe_maybe_mangle_decl_assembler_name, if needed.
3636         (i386_pe_mangle_decl_assembler_name): New. Wrap
3637         i386_pe_maybe_mangle_decl_assembler_name.
3638
3639 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3640
3641         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
3642         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
3643         * langhooks.c (get_signed_or_unsigned_type): Don't check for
3644         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
3645         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
3646         TYPE_UNSIGNED.
3647
3648 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
3649             Nigel Stephens  <nigel@mips.com>
3650             Richard Sandiford  <richard@codesourcery.com>
3651
3652         Fix up MIPS16 hard float and add support for complex.
3653
3654         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
3655         (TARGET_SOFT_FLOAT_ABI): New.
3656         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
3657         __mips_soft_float to reflect the ABI in use, not whether the
3658         FPU is directly accessible (e.g., in MIPS16 mode).
3659         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
3660         (UNITS_PER_FPVALUE): Likewise.
3661
3662         * config/mips/mips.c (mips_expand_call): Remove redundant
3663         TARGET_MIPS16 check.
3664         (mips_arg_regno): New.
3665         (function_arg_advance): When setting bits in cum->fp_code for
3666         MIPS16, don't subtract 1 from cum->arg_number, since it is now
3667         zero-based.
3668         (function_arg): Use mips_arg_regno.
3669         (mips_return_mode_in_fpr_p): New.
3670         (mips16_call_stub_mode_suffix): New.
3671         (mips16_cfun_returns_in_fpr_p): New.
3672         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
3673         (mips_output_function_prologue): Test mips16_hard_float, not
3674         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
3675         (mips_expand_epilogue): Call MIPS16 helper routines to copy
3676         return value into a floating-point register.
3677         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
3678         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
3679         (mips16_fp_args): Handle MIPS32r2 ISA which supports
3680         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
3681         word of double arguments from or to the high bits of 64-bit
3682         floating point registers.
3683         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
3684         (mips16_fpret_double): New helper function.
3685         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
3686         support for complex modes.  Fill in DECL_RESULT for stubdecl.
3687         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
3688
3689         * config/mips/mips16.S
3690         (RET, ARG1, ARG2): New.
3691         (MERGE_GPRf, MERGE_GPRt): New.
3692         (DELAYt, DELAYf): New.
3693         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
3694         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
3695         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
3696         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
3697         (SFOP): Renamed to...
3698         (OPSF3): This, and macro-ified.  Updated all uses.
3699         (SFOP2): Renamed to...
3700         (OPSF2): This, and macro-ified.  Updated all uses.
3701         (SFCMP): Renamed to...
3702         (CMPSF): This, and macro-ified.  Updated all uses.
3703         (SFREVCMP): Renamed to...
3704         (REVCMPSF): This, and macro-ified.  Updated all uses.
3705         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
3706         (LDDBL1, LDDBL2, RETDBL): Deleted.
3707         (DFOP): Renamed to...
3708         (OPDF3): This, and macro-ified.  Updated all uses.
3709         (DFOP2): Renamed to...
3710         (OPDF2): This, and macro-ified.  Updated all uses.
3711         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
3712         (DFCMP): Renamed to...
3713         (CMPDF): This, and macro-ified.  Updated all uses.
3714         (DFREVCMP): Renamed to...
3715         (REVCMPDF): This, and macro-ified.  Updated all uses.
3716         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
3717         (RET_FUNCTION): New.
3718         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
3719         (__mips16_ret_sc, __mips16_ret_dc): New.
3720         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
3721         STUB_ARGS_6, STUB_ARGS_10): New.
3722         (CALL_STUB_NO_RET): New.
3723         (__mips16_call_stub_1): Macro-ified.
3724         (__mips16_call_stub_5): Macro-ified.
3725         (__mips16_call_stub_2): Macro-ified.
3726         (__mips16_call_stub_6): Macro-ified.
3727         (__mips16_call_stub_9): Macro-ified.
3728         (__mips16_call_stub_10): Macro-ified.
3729         (CALL_STUB_RET): New.
3730         (__mips16_call_stub_sf_0): Macro-ified.
3731         (__mips16_call_stub_sf_1): Macro-ified.
3732         (__mips16_call_stub_sf_5): Macro-ified.
3733         (__mips16_call_stub_sf_2): Macro-ified.
3734         (__mips16_call_stub_sf_6): Macro-ified.
3735         (__mips16_call_stub_sf_9): Macro-ified.
3736         (__mips16_call_stub_sf_10): Macro-ified.
3737         (__mips16_call_stub_df_0): Macro-ified.
3738         (__mips16_call_stub_df_1): Macro-ified.
3739         (__mips16_call_stub_df_5): Macro-ified.
3740         (__mips16_call_stub_df_2): Macro-ified.
3741         (__mips16_call_stub_df_6): Macro-ified.
3742         (__mips16_call_stub_df_9): Macro-ified.
3743         (__mips16_call_stub_df_10): Macro-ified.
3744         (__mips16_call_stub_sc_0): New.
3745         (__mips16_call_stub_sc_1): New.
3746         (__mips16_call_stub_sc_5): New.
3747         (__mips16_call_stub_sc_2): New.
3748         (__mips16_call_stub_sc_6): New.
3749         (__mips16_call_stub_sc_9): New.
3750         (__mips16_call_stub_sc_10): New.
3751         (__mips16_call_stub_dc_0): New.
3752         (__mips16_call_stub_dc_1): New.
3753         (__mips16_call_stub_dc_5): New.
3754         (__mips16_call_stub_dc_2): New.
3755         (__mips16_call_stub_dc_6): New.
3756         (__mips16_call_stub_dc_9): New.
3757         (__mips16_call_stub_dc_10): New.
3758
3759         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
3760         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
3761         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
3762
3763 2007-05-23  Ian Lance Taylor  <iant@google.com>
3764
3765         * doc/invoke.texi (Invoking GCC): Document that the order of the
3766         -l option matters.
3767
3768 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
3769
3770         PR target/30987
3771         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
3772         * config/score/predicate.md (const_pow2, const_npow2): Remove.
3773         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
3774         undef.
3775
3776         PR target/30474
3777         * config/score/score.c (score_print_operand): Make sure that only
3778         lower bits are used.
3779
3780 2007-05-22  Ian Lance Taylor  <iant@google.com>
3781
3782         * tree-vrp.c (avoid_overflow_infinity): New static function,
3783         broken out of set_value_range_to_value.
3784         (set_value_range_to_value): Call avoid_overflow_infinity.
3785         (extract_range_from_assert): Likewise.
3786
3787 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3788
3789         PR middle-end/31095
3790          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
3791         change the type before looking for a COMPOUND_EXPR.
3792
3793 2007-05-22  Ian Lance Taylor  <iant@google.com>
3794
3795         * lower-subreg.c (decompose_multiword_subregs): If we change an
3796         insn, call remove_retval_note on it.
3797
3798 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3799
3800         * regs.h (end_hard_regno): New function.
3801         (END_HARD_REGNO, END_REGNO): New macros.
3802         (add_to_hard_reg_set): New function.
3803         (remove_from_hard_reg_set): Likewise.
3804         (in_hard_reg_set_p): Likewise.
3805         (overlaps_hard_reg_set_p): Likewise.
3806         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
3807         (note_btr_set): Use END_HARD_REGNO.
3808         * caller-save.c (setup_save_areas): Use end_hard_regno.
3809         (mark_set_regs): Use END_HARD_REGNO.
3810         (add_stored_regs): Use end_hard_regno.
3811         (mark_referenced_regs): Use add_to_hard_reg_set.
3812         * combine.c (update_table_tick): Use END_REGNO.
3813         (record_value_for_reg): Likewise.
3814         (record_dead_and_set_regs): Likewise.
3815         (get_last_value_validate): Likewise.
3816         (use_crosses_set_p): Likewise.
3817         (reg_dead_at_p_1): Likewise.
3818         (reg_dead_at_p): Likewise.
3819         (mark_used_regs_combine): Use add_to_hard_reg_set.
3820         (move_deaths): Use END_HARD_REGNO.
3821         (reg_bitfield_target_p): Use end_hard_regno.
3822         (distribute_notes): Use END_HARD_REGNO.
3823         * cse.c (mention_regs): Use END_REGNO.
3824         (insert): Use add_to_hard_reg_set.
3825         (invalidate): Use END_HARD_REGNO.
3826         (invalidate_for_call): Likewise.
3827         (exp_equiv_p): Use END_REGNO.
3828         (cse_insn): Likewise.
3829         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
3830         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
3831         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
3832         * function.c (keep_stack_depressed): Use end_hard_regno.
3833         * global.c (global_alloc): Use end_hard_regno.
3834         (global_conflicts): Use add_to_hard_reg_set instead of
3835         mark_reg_live_nc.
3836         (find_reg): Likewise.
3837         (mark_reg_store): Likewise.
3838         (mark_reg_conflicts): Likewise.
3839         (mark_reg_death): Use remove_from_hard_reg_set.
3840         (mark_reg_live_nc): Delete.
3841         (set_preference): Use end_hard_regno.
3842         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
3843         remove_from_hard_reg_set.
3844         (post_mark_life): Use add_to_hard_reg_set.
3845         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
3846         (reg_becomes_live): Use add_to_hard_reg_set.
3847         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
3848         (peep2_find_free_register): Use add_to_hard_reg_set.
3849         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
3850         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
3851         * regrename.c (note_sets): Use add_to_hard_reg_set.
3852         (clear_dead_regs): Use remove_from_hard_reg_set.
3853         (regrename_optimize): Use add_to_hard_reg_set.
3854         (find_oldest_value_reg): Use in_hard_reg_set_p.
3855         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
3856         (hard_reg_set_here_p): Use end_hard_regno.
3857         (decompose): Likewise.
3858         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
3859         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
3860         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
3861         (mark_home_live): Use end_hard_regno.
3862         (spill_hard_reg): Likewise.
3863         (clear_reload_reg_in_use): Likewise.
3864         * reorg.c (delete_prior_computation): Use END_REGNO.
3865         * resource.c (update_live_status): Use END_HARD_REGNO.
3866         (mark_referenced_resources): Use add_to_hard_reg_set.
3867         (mark_set_resources): Likewise.
3868         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
3869         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
3870         (reg_overlap_mentioned_p): Likewise.
3871         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
3872         (covers_regno_no_parallel_p): Use END_REGNO.
3873         (find_regno_note): Likewise.
3874         (find_reg_fusage): Use END_HARD_REGNO.
3875         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
3876         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
3877
3878 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3879
3880         * mode-switching.c (reg_dies): Change type of second argument to
3881         "HARD_REG_SET *".
3882         (optimize_mode_switching): Update accordingly.
3883
3884 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
3885
3886         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
3887         in favor of...
3888         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
3889         (hard_reg_set_empty_p): ...these new functions.
3890         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
3891         GO_IF_HARD_REG_SUBSET.
3892         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
3893         instead of GO_IF_HARD_REG_EQUAL.
3894         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
3895         instead of GO_IF_HARD_REG_EQUAL.
3896         * global.c (find_reg): Use hard_reg_set_empty_p instead of
3897         GO_IF_HARD_REG_SUBSET.
3898         (modify_reg_pav): Use hard_reg_set_empty_p instead of
3899         GO_IF_HARD_REG_EQUAL.
3900         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
3901         of GO_IF_HARD_REG_SUBSET.
3902         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
3903         instead of GO_IF_HARD_REG_EQUAL.
3904         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
3905         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
3906         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
3907         of GO_IF_HARD_REG_SUBSET,
3908         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
3909         GO_IF_HARD_REG_SUBSET.
3910         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
3911         instead of GO_IF_HARD_REG_EQUAL.
3912         * config/sh/sh.c (push_regs, calc_live_regs): Use
3913         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
3914         (hard_regs_intersect_p): Delete.
3915
3916 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
3917
3918         * doc/sourcebuild.texi (Test Directives) Add dg-message.
3919
3920 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
3921             Richard Henderson  <rth@redhat.com>
3922
3923         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
3924         extra_headers.
3925         (x86_64-*-*): Likewise.
3926
3927         * i386/i386-modes.def (V2QI): New.
3928
3929         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
3930         SSE4A.
3931         (override_options): Support SSE4.1.
3932         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
3933         (IX86_BUILTIN_BLENDPS): Likewise.
3934         (IX86_BUILTIN_BLENDVPD): Likewise.
3935         (IX86_BUILTIN_BLENDVPS): Likewise.
3936         (IX86_BUILTIN_PBLENDVB128): Likewise.
3937         (IX86_BUILTIN_PBLENDW128): Likewise.
3938         (IX86_BUILTIN_DPPD): Likewise.
3939         (IX86_BUILTIN_DPPS): Likewise.
3940         (IX86_BUILTIN_INSERTPS128): Likewise.
3941         (IX86_BUILTIN_MOVNTDQA): Likewise.
3942         (IX86_BUILTIN_MPSADBW128): Likewise.
3943         (IX86_BUILTIN_PACKUSDW128): Likewise.
3944         (IX86_BUILTIN_PCMPEQQ): Likewise.
3945         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
3946         (IX86_BUILTIN_PMAXSB128): Likewise.
3947         (IX86_BUILTIN_PMAXSD128): Likewise.
3948         (IX86_BUILTIN_PMAXUD128): Likewise.
3949         (IX86_BUILTIN_PMAXUW128): Likewise.
3950         (IX86_BUILTIN_PMINSB128): Likewise.
3951         (IX86_BUILTIN_PMINSD128): Likewise.
3952         (IX86_BUILTIN_PMINUD128): Likewise.
3953         (IX86_BUILTIN_PMINUW128): Likewise.
3954         (IX86_BUILTIN_PMOVSXBW128): Likewise.
3955         (IX86_BUILTIN_PMOVSXBD128): Likewise.
3956         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
3957         (IX86_BUILTIN_PMOVSXWD128): Likewise.
3958         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
3959         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
3960         (IX86_BUILTIN_PMOVZXBW128): Likewise.
3961         (IX86_BUILTIN_PMOVZXBD128): Likewise.
3962         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
3963         (IX86_BUILTIN_PMOVZXWD128): Likewise.
3964         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
3965         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
3966         (IX86_BUILTIN_PMULDQ128): Likewise.
3967         (IX86_BUILTIN_PMULLD128): Likewise.
3968         (IX86_BUILTIN_ROUNDPD): Likewise.
3969         (IX86_BUILTIN_ROUNDPS): Likewise.
3970         (IX86_BUILTIN_ROUNDSD): Likewise.
3971         (IX86_BUILTIN_ROUNDSS): Likewise.
3972         (IX86_BUILTIN_PTESTZ): Likewise.
3973         (IX86_BUILTIN_PTESTC): Likewise.
3974         (IX86_BUILTIN_PTESTNZC): Likewise.
3975         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
3976         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
3977         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
3978         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
3979         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
3980         (bdesc_ptest): New.
3981         (bdesc_sse_3arg): Likewise.
3982         (bdesc_2arg): Likewise.
3983         (bdesc_1arg): Likewise.
3984         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
3985         with 3 args.
3986         (ix86_expand_sse_4_operands_builtin): New.
3987         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
3988         smaller than 8 bits as the 2nd arg.
3989         (ix86_expand_sse_ptest): New.
3990         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
3991         (ix86_expand_vector_set): Support SSE4.1.
3992         (ix86_expand_vector_extract): Likewise.
3993
3994         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3995         __SSE4_1__ for -msse4.1.
3996
3997         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
3998         (UNSPEC_INSERTPS): Likewise.
3999         (UNSPEC_DP): Likewise.
4000         (UNSPEC_MOVNTDQA): Likewise.
4001         (UNSPEC_MPSADBW): Likewise.
4002         (UNSPEC_PHMINPOSUW): Likewise.
4003         (UNSPEC_PTEST): Likewise.
4004         (UNSPEC_ROUNDP): Likewise.
4005         (UNSPEC_ROUNDS): Likewise.
4006
4007         * config/i386/i386.opt (msse4.1): New for SSE4.1.
4008
4009         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
4010         (const_pow2_1_to_32768_operand): Likewise.
4011
4012         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
4013         file.
4014
4015         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
4016         SSE4.1.
4017         (sse4_1_insertps): Likewise.
4018         (*sse4_1_extractps): Likewise.
4019         (sse4_1_ptest): Likewise.
4020         (sse4_1_mulv2siv2di3): Likewise.
4021         (*sse4_1_mulv4si3): Likewise.
4022         (*sse4_1_smax<mode>3): Likewise.
4023         (*sse4_1_umax<mode>3): Likewise.
4024         (*sse4_1_smin<mode>3): Likewise.
4025         (*sse4_1_umin<mode>3): Likewise.
4026         (sse4_1_eqv2di3): Likewise.
4027         (*sse4_1_pinsrb): Likewise.
4028         (*sse4_1_pinsrd): Likewise.
4029         (*sse4_1_pinsrq): Likewise.
4030         (*sse4_1_pextrb): Likewise.
4031         (*sse4_1_pextrb_memory): Likewise.
4032         (*sse4_1_pextrw_memory): Likewise.
4033         (*sse4_1_pextrq): Likewise.
4034         (sse4_1_blendpd): Likewise.
4035         (sse4_1_blendps): Likewise.
4036         (sse4_1_blendvpd): Likewise.
4037         (sse4_1_blendvps): Likewise.
4038         (sse4_1_dppd): Likewise.
4039         (sse4_1_dpps): Likewise.
4040         (sse4_1_movntdqa): Likewise.
4041         (sse4_1_mpsadbw): Likewise.
4042         (sse4_1_packusdw): Likewise.
4043         (sse4_1_pblendvb): Likewise.
4044         (sse4_1_pblendw): Likewise.
4045         (sse4_1_phminposuw): Likewise.
4046         (sse4_1_extendv8qiv8hi2): Likewise.
4047         (*sse4_1_extendv8qiv8hi2): Likewise.
4048         (sse4_1_extendv4qiv4si2): Likewise.
4049         (*sse4_1_extendv4qiv4si2): Likewise.
4050         (sse4_1_extendv2qiv2di2): Likewise.
4051         (*sse4_1_extendv2qiv2di2): Likewise.
4052         (sse4_1_extendv4hiv4si2): Likewise.
4053         (*sse4_1_extendv4hiv4si2): Likewise.
4054         (sse4_1_extendv2hiv2di2): Likewise.
4055         (*sse4_1_extendv2hiv2di2): Likewise.
4056         (sse4_1_extendv2siv2di2): Likewise.
4057         (*sse4_1_extendv2siv2di2): Likewise.
4058         (sse4_1_zero_extendv8qiv8hi2): Likewise.
4059         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
4060         (sse4_1_zero_extendv4qiv4si2): Likewise.
4061         (*sse4_1_zero_extendv4qiv4si2): Likewise.
4062         (sse4_1_zero_extendv2qiv2di2): Likewise.
4063         (*sse4_1_zero_extendv2qiv2di2): Likewise.
4064         (sse4_1_zero_extendv4hiv4si2): Likewise.
4065         (*sse4_1_zero_extendv4hiv4si2): Likewise.
4066         (sse4_1_zero_extendv2hiv2di2): Likewise.
4067         (*sse4_1_zero_extendv2hiv2di2): Likewise.
4068         (sse4_1_zero_extendv2siv2di2): Likewise.
4069         (*sse4_1_zero_extendv2siv2di2): Likewise.
4070         (sse4_1_roundpd): Likewise.
4071         (sse4_1_roundps): Likewise.
4072         (sse4_1_roundsd): Likewise.
4073         (sse4_1_roundss): Likewise.
4074         (mulv4si3): Don't expand for SSE4.1.
4075         (smax<mode>3): Likewise.
4076         (umaxv4si3): Likewise.
4077         (uminv16qi3): Likewise.
4078         (umin<mode>3): Likewise.
4079         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
4080
4081         * doc/extend.texi: Document SSE4.1 built-in functions.
4082
4083         * doc/invoke.texi: Document -msse4.1.
4084
4085 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
4086
4087         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
4088         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
4089         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
4090         (ASM_SPEC): Add asm_pcrel_spec.
4091         (EXTRA_SPECS): Add asm_pcrel_spec.
4092
4093 2007-05-21  David Daney  <ddaney@avtrex.com>
4094
4095         * doc/install.texi (Building a cross compiler): Add requirements
4096         for Java cross compiler.
4097
4098 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4099
4100         PR middle-end/31995
4101         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
4102         Add loopno argument.  Use evolution_function_is_invariant_rec_p
4103         instead of evolution_function_is_constant_p.
4104         Update calls to evolution_function_is_affine_multivariate_p.
4105         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
4106         Add loopno argument.
4107         * tree-scalar-evolution.c (gather_chrec_stats): Call
4108         evolution_function_is_affine_multivariate_p with a loop
4109         number of 0.
4110         * tree-data-ref.c (analyze_miv_subscript): Likewise.
4111         (analyze_overlapping_iterations): Likewise.
4112         (access_functions_are_affine_or_constant_p): Likewise.
4113         (build_classic_dist_vector_1): If the access functions
4114         are equal, don't do anything.
4115
4116 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
4117             Paolo Carlini  <pcarlini@suse.de>
4118             Uros Bizjak  <ubizjak@gmail.com>
4119
4120         * c-cppbuiltin.c (c_cpp_builtins): Define
4121         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
4122         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
4123         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
4124         * doc/cpp.texi ([Standard Predefined Macros]): Document.
4125
4126 2007-05-21  Mike Stump  <mrs@apple.com>
4127
4128         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
4129         handling as well.
4130         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
4131
4132 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
4133
4134         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
4135         implementation if __OPTIMIZE__ is not defined.
4136         (_mm_alignr_pi8): Ditto.
4137         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4138         (_mm_inserti_si64): Ditto.
4139         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4140         (_mm_slli_epi16): Ditto.
4141         (_mm_slli_epi32): Ditto.
4142         (_mm_slli_epi64): Ditto.
4143         (_mm_srai_epi16): Ditto.
4144         (_mm_srai_epi32): Ditto.
4145         (_mm_srli_si128): Ditto.
4146         (_mm_slli_si128): Ditto.
4147         (_mm_srli_epi16): Ditto.
4148         (_mm_srli_epi32): Ditto.
4149         (_mm_srli_epi64): Ditto.
4150         (_mm_extract_epi16): Ditto.
4151         (_mm_insert_epi16): Ditto.
4152         (_mm_shufflehi_epi16): Ditto.
4153         (_mm_shufflelo_epi16): Ditto.
4154         (_mm_shuffle_epi32): Ditto.
4155         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
4156         (_m_pextrw): Ditto.
4157         (_mm_insert_pi16): Ditto.
4158         (_m_pinsrw): Ditto.
4159         (_mm_shuffle_pi16): Ditto.
4160         (_m_pshufw): Ditto.
4161         (_mm_shufle_ps): Ditto.
4162         (_mm_prefetch): Ditto.
4163
4164 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
4165
4166         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
4167         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
4168         * real.c (encode_i370_single, decode_i370_single,
4169         encode_i370_double, decode_i370_double): Functions removed.
4170         (i370_single_format, i370_double_format): Initializations removed.
4171         (real_maxval, round_for_format, exact_real_truncate, significand_size):
4172         Consider the log2_b field to always be one.
4173         (ieee_single_format, mips_single_format, coldfire_single_format,
4174         ieee_double_format, mips_double_format, coldfire_double_format,
4175         ieee_extended_motorola_format, ieee_extended_intel_96_format,
4176         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
4177         ibm_extended_format, mips_extended_format, ieee_quad_format,
4178         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
4179         decimal_single_format, decimal_double_format, decimal_quad_format,
4180         c4x_single_format, c4x_extended_format, real_internal_format): Remove
4181         initialization of log2_b.
4182         * real.h (i370_single_format, i370_double_format): Declarations removed.
4183         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
4184         field to always be one.
4185
4186 2007-05-21  Andreas Schwab  <schwab@suse.de>
4187
4188         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
4189         NOTE_INSN_BASIC_BLOCK_P.
4190         (process_for_unwind_directive): Likewise.
4191
4192 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
4193
4194         * builtins.c (expand_builtin_setjmp_setup): Update comment.
4195         * function.h (struct function): Move va_list_gpr_size,
4196         va_list_fpr_size, function_frequency to front of bitfields.  Add
4197         calls_unwind_init.
4198         (current_function_calls_unwind_init): New.
4199         * except.c (expand_builtin_unwind_init): Set
4200         current_function_calls_unwind_init not
4201         current_function_has_nonlocal_label.
4202         * reload1.c (has_nonexceptional_receiver): New.
4203         (reload): Use it and current_function_calls_unwind_init to
4204         determine whether call-saved regs must be saved.
4205
4206 2007-05-20  Jan Hubicka  <jh@suse.cz>
4207
4208         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
4209         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4210         * ddg.c (create_ddg): LIkewise.
4211         * final.c (final): Remove hunk moving line numbernotes around since
4212         they are no longer present at this stage.
4213         (final_scan_insn): Use NOTE_KIND instead of
4214         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4215         (output_asm_label): Likewise.
4216         * reorg.c (dbr_schedule): Likewise.
4217         * haifa-sched.c (unlink_other_notes): Likewise.
4218         * mode-switching.c (optimize_mode_switching): Likewise.
4219         * graph.c (start_bb): Likewise.
4220         * rtl.def (NOTE): Update description.
4221         * jump.c (squeeze_notes): Delete.
4222         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
4223         NOTE_INSN_BASIC_BLOCK_P when possible.
4224         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
4225         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
4226         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4227         (dwarf2out_var_location): Likewise.
4228         * cfgbuild.c (make_edges): Likewise.
4229         (find_basic_blocks_1): Likewise.
4230         * function.c (reorder_blocks_1): Likewise.
4231         (epilogue_done): Likewise.
4232         (reposition_prologue_and_epilogue_notes): Likewise.
4233         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
4234         notes.
4235         (print_rtl): Likewise.
4236         (print_rtl_single): Likewise.
4237         * gcse.c (insert_insn_start_bb): Likewise.
4238         * alias.c (init_alias_analysis): Likewise.
4239         * calls.c (fixup_tail_calls): Likewise.
4240         * except.c (sjlj_emit_function_enter): Likewise.
4241         * emit-rtl.c (add_insn_after): Likeiwse.
4242         (emit_label_before): Likewise.
4243         (emit_label_after): Likewise.
4244         (emit_note_before, emit_note_after, emit_note): Update
4245         parameter to be enum insn_note; do not deal with source
4246         files.
4247         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
4248         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
4249         when possible.
4250         (merge_blocks_move_successor_nojumps): Simplify now when
4251         we don't have BLOCK notes.
4252         (try_optimize_cfg): Likewise.
4253         * cfglayout.c (skip_insns_after_block): Likewise.
4254         (record_effective_endpoints): Likewise.
4255         (duplicate_insn_chain): Likewise.
4256         * varasm.c (output_constant_pool_1): Likewise.
4257         * sched-deps.c (sched_analyze): Likewise.
4258         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
4259         Exterminate.
4260         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
4261         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
4262         (SET_INSN_DELETED): Simplify.
4263         (NOTE_LINE_NUMBER): Exterminate.
4264         (NOTE_LINE_KIND): New.
4265         (NOTE_INSN_BASIC_BLOCK_P): Update.
4266         (enum insn_note): Simplify.
4267         (GET_NOTE_INSN_NAME) Simplify.
4268         (emit_note_before, emit_note_after, emit_note): Update prototype.
4269         (squeeze_notes): Remove.
4270         * sched-int.h (NOTE_NOT_BB_P): Update.
4271         * resource.c (mark_target_live_regs): Update.
4272         * sched-rgn.c (debug_dependencies): Update.
4273         * sched-vis.c (print_insn): Update.
4274         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
4275         * config/i386/i386.c (ix86_output_function_epilogue): Update.
4276         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
4277         (TARGET_ADJUST_UNROLL_MAX): Likewise.
4278         (split_branches): Update.
4279         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
4280         4.0.0.
4281         (sh_adjust_unroll_max): Exterminate.
4282         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
4283         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
4284         (m68hc11_reorg): Likewise.
4285         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
4286         (emit_predicate_relation_info): Update.
4287         (process_for_unwind_directive): Update.
4288         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
4289         (output_call): Update.
4290         * config/pa/pa.c (output_lbranch): Update.
4291         (output_millicode_call): Update.
4292         (output_call): Update.
4293         (pa_combine_instructions): Update.
4294         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
4295         * config/bfin/bfin.c (gen_one_bundle): Update.
4296         * cfgrtl.c (can_delete_note_p): Update.
4297         (delete_insn): Update.
4298         (rtl_merge_blocks): Update.
4299         (commit_one_edge_insertion): Update.
4300         (rtl_verify_flow_info): Update.
4301         * stmt.c (expand_case): Do not call squeeze_notes.
4302
4303 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4304
4305         PR middle-end/7651
4306         PR c++/11856
4307         PR c/12963
4308         PR c/23587
4309         PR other/29694
4310         * c.opt (Wtype-limits): New.
4311         * doc/invoke.texi (Wtype-limits): Document it.
4312         (Wextra): Enabled by -Wextra.
4313         * c-opts.c (c_common_post_options): Enabled by -Wextra.
4314         * c-common.c (shorten_compare): Warn with Wtype-limits.
4315
4316 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4317
4318         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
4319         inlined function, not as a macro.
4320         (_mm_alignr_pi8): Ditto.
4321         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4322         (_mm_inserti_si64): Ditto.
4323         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4324         (_mm_extract_epi16): Ditto.
4325         (_mm_insert_epi16): Ditto.
4326         (_mm_shufflehi_epi16): Ditto.
4327         (_mm_shufflelo_epi16): Ditto.
4328         (_mm_shuffle_epi32): Ditto.
4329         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
4330         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
4331         all functions.
4332         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
4333         float constant.
4334         (_m_to_float): Use C89 compatible assignment.
4335
4336 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
4337
4338         PR target/32007
4339         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
4340
4341 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4342
4343         PR middle-end/7651
4344         * doc/invoke.texi (Wreturn-type): Complete description.
4345         (Wextra): Delete item about return-type warning.
4346         * c-decl.c: Delete redundant Wextra warning.
4347
4348 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4349
4350         PR target/31585
4351         * config/i386/pmmintrin.h: Do not include xmmintrin.h
4352         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
4353         inlined function, not as a macro.
4354         (_mm_prefetch): Ditto.
4355         (_m_pextrw): Ditto.
4356         (_mm_insert_pi16): Ditto.
4357         (_m_pinsrw): Ditto.
4358         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
4359         (_m_pshufw): Ditto. Add const to __N argument.
4360         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
4361         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
4362         (_mm_slli_epi32): Ditto.
4363         (_mm_srli_si128): Implement as always inlined function, not as a macro.
4364         Add __inline to function declaration.
4365         (_mm_slli_si128): Ditto.
4366
4367 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
4368
4369         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
4370         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
4371         New constants.
4372         (struct fenv): New structure.
4373         (FP_HANDLE_EXCEPTIONS): New define.
4374         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
4375         (_FP_DECL_EXP): New define.
4376         (FP_INIT_ROUNDMODE): New define.
4377         (FP_ROUNDMODE): New define.
4378
4379 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4380
4381         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
4382         (Wconversion): Update description.
4383         (Wconversion-sign): New.
4384         * c.opt (Wconversion-sign): New.
4385         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
4386         means disabled for C++. Otherwise, take the status of Wconversion.
4387         * c-common.c (conversion_warning): Warn with either Wconversion or
4388         Wconversion-sign.
4389         (warnings_for_convert_and_check): Conditions are already checked by
4390         conversion_warning.
4391         (convert_and_check): Don't check warnings if the conversion failed.
4392
4393 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
4394            Anatoly Sokolov <aesok@dol.ru>
4395
4396         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
4397         avr_epilogue_uses) : Add declaration.
4398         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
4399         * config/avr/constraints.md (R): New constraint.
4400         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
4401         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
4402         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
4403         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
4404         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
4405         call_prologue_saves, epilogue_restores, return_from_epilogue,
4406         return_from_main_epilogue, return_from_interrupt_epilogue,
4407         return_from_naked_epilogue, prologue, epilogue): New patterns.
4408         (jump): Handle symbol reference.
4409         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
4410         avr_output_function_prologue, avr_output_function_epilogue): Remove
4411         functions.
4412         (avr_init_machine_status, expand_prologue, expand_epilogue,
4413         avr_asm_function_end_prologue, avr_epilogue_uses,
4414         avr_asm_function_begin_epilogue): New functions.
4415         (prologue_size, epilogue_size, jump_tables_size): Remove global
4416         variables.
4417         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
4418         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
4419         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
4420         (avr_override_options): Initialise init_machine_status.
4421         (output_movhi): Handle all stack pointer loads.
4422         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
4423         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
4424         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
4425         (EPILOGUE_USES) Redefine.
4426         (machine_function) Declare.
4427
4428 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
4429
4430         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
4431         Use a single return statement.
4432
4433 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4434
4435         PR middle-end/30250
4436         * builtins.c (do_mpfr_lgamma_r): New.
4437         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
4438         * tree.h (CASE_FLT_FN_REENT): New.
4439
4440 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
4441
4442         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
4443         (output_die): Use 'unsigned long' with %x.
4444         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
4445         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
4446         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
4447
4448         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
4449
4450 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
4451
4452         PR target/31989
4453         PR target/31681
4454         PR target/31666
4455         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
4456         true if function has no argument.
4457
4458 2007-05-18  DJ Delorie  <dj@redhat.com>
4459
4460         * config/mips/mips.c (mips_offset_within_alignment_p): New.
4461         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
4462
4463 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4464
4465         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
4466         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
4467         count_trailing_zeros.
4468         (__i386__): Implement count_leading_zeros using __builtin_clz().
4469         Implement count_trailing_zeros usign __builtin_ctz().
4470
4471 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
4472
4473         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
4474
4475 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4476
4477         PR middle-end/31344
4478         * expr.c (emit_move_change_mode): Change mode of push operands here.
4479
4480 2007-05-17  Ian Lance Taylor  <iant@google.com>
4481
4482         PR tree-optimization/31953
4483         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
4484         Change all callers.
4485         (set_value_range_to_null): Call set_value_range_to_value.
4486         (extract_range_from_comparison): Likewise.
4487
4488 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4489
4490         * toplev.c (print_version): Output GMP/MPFR version info.
4491
4492         * builtins.c (CASE_MATHFN_REENT): New macro.
4493         (mathfn_built_in): Use it.
4494         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
4495         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
4496         BUILT_IN_LGAMMAL_R): New.
4497         * doc/extend.texi: Document new builtins.
4498
4499         PR middle-end/31796
4500         * builtins.c (do_mpfr_remquo): New.
4501         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
4502         (fold_builtin_3): Handle BUILT_IN_REMQUO.
4503
4504         PR middle-end/30251
4505         * builtins.c (fold_builtin_1): Handle y0, y1.
4506         (fold_builtin_2): Handle yn.
4507
4508         PR middle-end/30251
4509         * builtins.c (do_mpfr_bessel_n): New.
4510         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
4511         (fold_builtin_2): Handle BUILT_IN_JN.
4512
4513 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
4514
4515         PR target/31965
4516         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
4517         TYPE_PRECISION (intmax_type_node).
4518
4519 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
4520
4521         PR target/31850
4522         * reload.c (subst_reloads): Remove checking.
4523
4524 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
4525
4526         PR rtl-optimization/31691
4527         * combine.c (simplify_set): Build a new src pattern instead of
4528         substituting its operands in the COMPARE case.
4529
4530 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
4531
4532         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
4533         (execute_vrp): Preserve loops through jump threading.
4534         * tree-ssa-threadupdate.c (thread_single_edge,
4535         dbds_continue_enumeration_p, determine_bb_domination_status,
4536         thread_through_loop_header): New functions.
4537         (create_edge_and_update_destination_phis,
4538         create_edge_and_update_destination_phis): Set loops for the new blocks.
4539         (prune_undesirable_thread_requests): Removed.
4540         (redirect_edges): Do not pretend that redirect_edge_and_branch can
4541         create new blocks.
4542         (thread_block): Do not call prune_undesirable_thread_requests.
4543         Update loops.
4544         (mark_threaded_blocks): Select edges to thread here.
4545         (thread_through_all_blocks): Take may_peel_loop_headers argument.
4546         Thread edges through loop headers independently.
4547         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
4548         * tree-pass.h (TODO_mark_first_instance): New.
4549         (first_pass_instance): Declare.
4550         * cfghooks.c (duplicate_block): Put the block to the original loop
4551         if copy is not specified.
4552         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
4553         jump threading.  Pass may_peel_loop_headers to
4554         thread_through_all_blocks according to first_pass_instance.
4555         * cfgloop.h (create_preheader): Declare.
4556         * tree-flow.h (thread_through_all_blocks): Declaration changed.
4557         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
4558         * passes.c (first_pass_instance): New variable.
4559         (next_pass_1): Set TODO_mark_first_instance.
4560         (execute_todo): Set first_pass_instance.
4561
4562 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
4563
4564         PR tree-optimization/24659
4565         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
4566         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
4567         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
4568         OTI_vec_pack_ufix_trunc.
4569         (vec_unpacks_float_hi_optab): Define new macro.
4570         (vec_unpacks_float_lo_optab): Ditto.
4571         (vec_unpacku_float_hi_optab): Ditto.
4572         (vec_unpacku_float_lo_optab): Ditto.
4573         (vec_pack_sfix_trunc_optab): Ditto.
4574         (vec_pack_ufix_trunc_optab): Ditto.
4575         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
4576         and vec_pack_[s|u]fix_trunc_optab using
4577         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
4578         * tree-vectorizer.c (supportable_widening_operation): Handle
4579         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
4580         (supportable_narrowing_operation): New function.
4581         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
4582         * tree-vect-transform.c (vectorizable_conversion): Handle
4583         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
4584         (vect_gen_widened_results_half): Move before vectorizable_conversion.
4585         (vectorizable_type_demotion): Call supportable_narrowing_operation()
4586         to check for target support.
4587         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
4588         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
4589         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
4590         for VEC_PACK_FIX_TRUNC_EXPR.
4591         (expand_binop): Special case mode of the result for
4592         vec_pack_[u|s]fix_trunc_optab.
4593         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
4594         vec_pack_[u|s]fix_trunc_optab.
4595
4596         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
4597         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
4598         * tree-pretty-print.c (dump_generic_node): Handle
4599         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
4600         VEC_PACK_FIX_TRUNC_EXPR.
4601         (op_prio): Ditto.
4602         * expr.c (expand_expr_real_1): Ditto.
4603         * tree-inline.c (estimate_num_insns_1): Ditto.
4604         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
4605
4606         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
4607         (vec_unpacks_float_lo_v8hi): Ditto.
4608         (vec_unpacku_float_hi_v8hi): Ditto.
4609         (vec_unpacku_float_lo_v8hi): Ditto.
4610         (vec_unpacks_float_hi_v4si): Ditto.
4611         (vec_unpacks_float_lo_v4si): Ditto.
4612         (vec_pack_sfix_trunc_v2df): Ditto.
4613
4614         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
4615         Document.
4616         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
4617         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
4618         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
4619         [vec_pack_ufix_trunc]: Ditto.
4620         [vec_unpacks_float_hi]: Ditto.
4621         [vec_unpacks_float_lo]: Ditto.
4622         [vec_unpacku_float_hi]: Ditto.
4623         [vec_unpacku_float_lo]: Ditto.
4624
4625 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
4626
4627         * soft-fp/README: Update for new files.
4628         * soft-fp/floattisf.c: New file.
4629         * soft-fp/floattidf.c: New file.
4630         * soft-fp/floattitf.c: New file.
4631         * soft-fp/floatuntisf.c: New file.
4632         * soft-fp/floatuntidf.c: New file.
4633         * soft-fp/floatuntitf.c: New file.
4634         * soft-fp/fixsfti.c: New file.
4635         * soft-fp/fixdfti.c: New file.
4636         * soft-fp/fixtfti.c: New file.
4637         * soft-fp/fixunssfti.c: New file.
4638         * soft-fp/fixunsdfti.c: New file.
4639         * soft-fp/fixunstfti.c: New file.
4640         * soft-fp/extendxftf.c: New file.
4641         * soft-fp/trunctfxf.c: New file.
4642
4643         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
4644         (__trunctfxf2): Ditto.
4645
4646         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
4647         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
4648         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
4649         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
4650         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
4651         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
4652
4653         * config/i386/t-fprules-softfp64: New file.
4654         * config/i386/sfp-machine.h: New file.
4655         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
4656         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
4657         and soft-fp/t-softfp to tmake_file.
4658         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
4659         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
4660
4661         * config/i386/t-linux64 (softfp_wrap_start): New.
4662         (softfp_wrap_end): New.
4663         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
4664         supported for TARGET_64BIT.
4665
4666 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
4667
4668         * c-common.c (c_common_signed_or_unsigned_type): Emulate
4669         c_common_unsigned_type behavior.
4670
4671 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
4672
4673         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
4674         calls as pure.
4675
4676 2007-05-16  Eric Christopher  <echristo@apple.com>
4677
4678         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
4679         saving after stack push. Set sp_offset whenever we push.
4680         (rs6000_emit_epilogue): Move altivec register restore before
4681         stack push.
4682
4683 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4684
4685         * configure.ac: Allow sysroots to be relocated under $prefix as
4686         well as $exec_prefix.
4687         * configure: Regenerate.
4688
4689 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4690
4691         Revert:
4692
4693         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4694
4695         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4696         (gcc_tooldir): Likewise.
4697         * configure: Regenerate.
4698         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4699         old configure.ac gcc_tooldir setting.
4700         (prefix_to_exec_prefix): New variable.
4701         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4702         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4703
4704 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
4705
4706         * c-typeck.c (build_binary_op): Return early for error.
4707
4708 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
4709
4710         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
4711         struct nb_iter_bound.
4712         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
4713         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
4714         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
4715         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
4716         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
4717         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
4718         (del_scev_info): Use ggc_free.
4719         (scev_initialize): Allocate scalar_evolution_info in gc memory.
4720         * loop-init.c: Include ggc.h.
4721         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
4722         (loop_optimizer_finalize): Use ggc_free.
4723         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
4724         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
4725         pass_iv_optimize): Add TODO_ggc_collect.
4726         * function.h (struct function): Remove skip marker from x_current_loops.
4727         * cfgloop.c: Include ggc.h.
4728         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
4729         memory.
4730         (establish_preds): Vector superloops is gc allocated.
4731         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
4732         loop->exits list.
4733         (flow_loops_find): Vector larray is gc allocated.
4734         (loop_exit_free): Use ggc_free.
4735         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
4736         that head of exits list is now not a part of struct loop.
4737         (record_loop_exits): Allocate exits table in gc memory.
4738         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
4739         head of exits list is now not a part of struct loop.
4740         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
4741         struct loop_exit): Add GTY marker.
4742         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
4743         Add skip marker to aux field.  Make head of exits list a separate
4744         object.
4745         (struct loops): Add GTY marker.  Make larray vector gc allocated.
4746         Add param marker to exits table.
4747         (get_loops): Type changed.
4748         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
4749         dependency.
4750         (cfgloop.o, loop-init.o): Add ggc.h dependency.
4751         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
4752         * basic-block.h (struct basic_block_def): Remove skip marker from
4753         loop_father field.
4754
4755 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
4756
4757         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
4758         of 0 in the call to expand_expr().
4759         (expand_builtin_mathfn_3): Ditto.
4760         (expand_builtin_interclass_mathfn): Ditto.
4761         (expand_builtin_cexpi): Ditto.
4762         (expand_builtin_int_roundingfn): Ditto.
4763         (expand_builtin_int_roundingfn_2): Ditto.
4764         (expand_builtin_pow): Ditto.
4765         (expand_builtin_powi): Ditto.
4766         (expand_builtin_bswap): Ditto.
4767         (expand_builtin_unop): Ditto.
4768         (expand_builtin_fabs): Ditto.
4769         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
4770         the call to expand_expr().
4771         (expand_builtin_sync_operation): Ditto.
4772         (expand_builtin_compare_and_swap): Ditto.
4773         (expand_builtin_lock_test_and_set): Ditto.
4774         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
4775         instead of 0 in the call to expand_expr().
4776         (expand_builtin_extract_return_addr): Ditto.
4777         (expand_builtin_eh_return): Ditto.
4778         (expand_eh_return): Ditto.
4779         * explow.c (expr_size): Ditto.
4780         * expr.c (optimize_bitfield_assignment_op): Ditto.
4781         (expand_assignement): Ditto.
4782         (store_expr): Ditto.
4783         (store_field): Ditto.
4784         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
4785         the call to expand_expr().
4786         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
4787         in the call to expand_expr().
4788         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
4789         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
4790         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
4791         of expand_expr().
4792         * optabs.c (expand_vec_shift_expr): Ditto.
4793         (expand_vec_cond_expr): Ditto.
4794         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
4795         call to expand_expr().
4796         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
4797         in the call to expand_expr().
4798
4799 2007-05-14  Dave Korn  <dave.korn@artimi.com>
4800
4801         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
4802
4803 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
4804
4805         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
4806         instead of c_common_unsigned_type.
4807         (c_common_unsigned_type): Remove.
4808         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
4809         c_common_unsigned_type.
4810         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
4811         c_common_unsigned_type.
4812         * c-common.h (c_common_unsigned_type): Remove.
4813         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
4814         c_common_unsigned_type.
4815         * c-format.c (check_format_types): Use unsigned_type_for instead of
4816         c_common_unsigned_type.
4817         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4818         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
4819         c_common_unsigned_type.
4820         * convert.c (convert_to_integer): Use unsigned_type_for instead of
4821         lang_hooks.types.unsigned_type.
4822         * expmed.c (make_tree): Use unsigned_type_for instead of
4823         lang_hooks.types.unsigned_type.
4824         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
4825         lang_hooks.types.unsigned_type.
4826         (build_range_check): Likewise.
4827         (fold_unary): Likewise.
4828         (fold_binary): Likewise.
4829         (fold_ternary): Likewise.
4830         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4831         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
4832         * tree.c (get_unsigned_type): New.
4833         (unsigned_type_for): Use get_unsigned_type instead of
4834         lang_hooks.types.unsigned_type.
4835
4836 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
4837
4838         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
4839         to m68k_get_function_kind.  Update its prototype.
4840         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
4841         interrupt_thread.
4842         (m68k_interrupt_function_p): Return enum m68k_function_type
4843         instead of bool.  Rename to m68k_get_function_kind.
4844         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
4845         target is not fido.
4846         (m68k_compute_frame_layout): Don't mark any register for save
4847         if an interrupt_thread attribute is specified.
4848         (m68k_hard_regno_rename_ok): Update a use of
4849         m68k_interrupt_function_p.
4850         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
4851         m68k_interrupt_function_p.
4852         (m68k_function_type): New.
4853         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
4854         for a function with an interrupt_thread attribute.
4855         * doc/extend.texi: Document the interrupt_thread attribute.
4856
4857 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
4858
4859         Fix PR tree-optimization/31911
4860         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
4861         if they didn't change the expression.
4862
4863 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
4864
4865         * tree-scalar-evolution.c (resolve_mixers): Exported.
4866         * tree-scalar-evolution.h (resolve_mixers): Declare.
4867         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
4868         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
4869         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
4870         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
4871         init_array_ref, init_pointer_ref, analyze_indirect_ref,
4872         strip_conversion, analyze_offset_expr, address_analysis,
4873         object_analysis, analyze_offset): Removed.
4874         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
4875         split_constant_offset, canonicalize_base_object_address,
4876         object_address_invariant_in_loop_p, disjoint_objects_p,
4877         dr_may_alias_p, dr_address_invariant_p): New functions.
4878         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
4879         and dr_analyze_alias.
4880         (initialize_data_dependence_relation): Use dr_may_alias_p
4881         and object_address_invariant_in_loop_p.
4882         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
4883         is chrec_dont_know.
4884         (find_data_references_in_stmt): Restrict the analysis of data references
4885         to the given loop nest.
4886         (find_data_references_in_loop): Made static.  Pass loop nest to
4887         find_data_references_in_stmt.
4888         (compute_data_dependences_for_loop): Use DR_VOPS.
4889         (free_data_ref): Free DR_VOPS.
4890         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
4891         (struct innermost_loop_behavior): ... new.
4892         (struct base_object_info): Replaced by ...
4893         (struct indices): ... new.
4894         (struct dr_alias): New.
4895         (enum data_ref_type): Removed.
4896         (struct data_reference): Consist of struct innermost_loop_behavior,
4897         struct indices and struct dr_alias.
4898         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
4899         (DR_MEMTAG): Renamed to ...
4900         (DR_SYMBOL_TAG): ... this.
4901         (find_data_references_in_loop): Declaration removed.
4902         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
4903         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
4904         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
4905         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
4906
4907 2007-05-13  Revital Eres  <eres@il.ibm.com>
4908
4909         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
4910         which walks virtual def-use chains to find redundant stores.
4911         (dse_optimize_stmt): Call it.
4912
4913 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4914
4915         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
4916         * passes.c (init_optimization_passes): Move pass_jump_bypass
4917         after loop2.
4918
4919         * basic-block.h (bb_has_eh_pred): Fix style issue.
4920
4921 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4922
4923         PR rtl-optimization/31848
4924         * loop-invariant.c (move_invariant_reg): If we move an insn
4925         with a REG_EQUAL note, and that insn is not always executed,
4926         remove the REG_EQUAL note.
4927
4928 2007-05-12  Richard Guenther  <rguenther@suse.de>
4929
4930         PR tree-optimization/31797
4931         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
4932         propagate into a stmt that has volatile ops.
4933
4934 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4935
4936         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4937         (gcc_tooldir): Likewise.
4938         * configure: Regenerate.
4939         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4940         old configure.ac gcc_tooldir setting.
4941         (prefix_to_exec_prefix): New variable.
4942         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4943         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4944
4945 2007-05-11  Silvius Rus  <rus@google.com>
4946
4947         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
4948         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
4949         * c-common.h (strict_aliasing_warning): Change return type.
4950         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
4951         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
4952         (build_c_cast): Condition call to strict_aliasing_warning.
4953         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
4954         * flags.h (set_Wstrict_aliasing): Declare.
4955         * opts.c (set_Wstrict_alising): Define, add call to.
4956         * tree-flow.h (strict_aliasing_warning_backend): Declare.
4957         * tree-ssa-alias-warnings.c: New file.
4958         * tree-ssa-alias.c (compute_may_aliases): Add call to
4959         strict_aliasing_warning_backend.
4960
4961 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
4962
4963         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
4964         Use loop_depth and loop_outer accessor functions.
4965         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
4966         determine_invariantness_stmt, move_computations_stmt): Ditto.
4967         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
4968         add_loop, loopify, unloop, fix_loop_structure): Ditto.
4969         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
4970         * tree-scalar-evolution.c (interpret_loop_phi,
4971         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
4972         instantiate_parameters_1, scev_const_prop): Ditto.
4973         * cfghooks.c (make_forwarder_block): Ditto.
4974         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
4975         * modulo-sched.c (loop_canon_p): Ditto.
4976         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
4977         slpeel_can_duplicate_loop_p): Ditto.
4978         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
4979         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4980         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
4981         cancel_loop, verify_loop_structure): Ditto.
4982         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
4983         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
4984         superloops vector instead of "pred" array.
4985         (establish_preds): Take father loop as an argument.  Initialize the
4986         superloops vector.
4987         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
4988         initialize loop->outer.
4989         (flow_loop_tree_node_remove): Truncate the superloops vector.
4990         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
4991         "pred" merged to "superloops" vector.
4992         (loop_depth, loop_outer): New.
4993         (fel_init): Use loop_outer.
4994
4995 2007-05-11  Jan Hubicka  <jh@suse.cz>
4996
4997         * cgraphunit.c: Include gt-cgraphunit.h
4998         (static_ctors, static_dtors): New static vars.
4999         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
5000         based on implementation in c-common.c
5001         (cgraph_finalize_function): Call record_cdtor_fn.
5002         (cgraph_optimize): Call cgraph_build_cdtor_fns.
5003         * decl.c (finish_function): Do not call c_record_cdtor_fn.
5004         (c_write_global_declarations): Do not call c_build_cdtor_fns.
5005         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
5006         build_cdtor, c_build_cdtor_fns): Remove.
5007         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
5008         c_build_cdtor_fns): Remove prototype.
5009
5010 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
5011
5012         PR other/31852
5013         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
5014         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
5015         * builtins.c (fold_builtin_memchr): New.
5016         (expand_builtin_memchr): Call the latter.
5017         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
5018         * doc/extend.texi ([Other built-in functions provided by GCC]):
5019         Document memchr.
5020
5021 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
5022
5023         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
5024         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
5025         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
5026         PFPO_OP1_TYPE_SHIFT): Constants added.
5027         (DFP_ALL): Mode macro defined.
5028         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
5029         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
5030         Insn definitions added.
5031         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
5032         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
5033         Expanders added.
5034
5035 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
5036
5037         PR tree-optimization/31885
5038         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
5039         to be undetermined.
5040         (automatically_generated_chrec_p): Return false for NULL.
5041
5042 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
5043
5044         * config/bfin/bfin.h (MOVE_RATIO): Define.
5045
5046 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
5047
5048         * config.gcc (sparc-wrs-vxworks): New target.
5049         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
5050         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
5051         * config/sparc/sparc.h: Include vxworks-dummy.h.
5052         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
5053         include LABEL_REFs too.
5054         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
5055         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
5056         VxWorks.
5057         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
5058         on VxWorks.
5059         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
5060         (sparc_emit_call_insn): New function.
5061         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
5062         functions when generating VxWorks PIC.
5063         * config/sparc/sparc.md (vxworks_load_got): New pattern.
5064         (call, call_value): Use sparc_emit_call_insn instead of
5065         emit_call_insn.
5066
5067 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
5068
5069         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
5070
5071 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
5072
5073         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
5074         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
5075         instead of operand_subword.
5076
5077 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
5078
5079         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
5080         * config/bfin/bfin.c (bfin_local_alignment): New function.
5081         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
5082
5083 2007-05-08  Chao-ying Fu  <fu@mips.com>
5084
5085         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
5086         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
5087         (smsub_widen_optab, umsub_widen_optab): Define.
5088         * optabs.c (init_optabs): Initialize smsub_widen_optab and
5089         umsub_widen_optab.
5090         * genopinit.c (optabs): Fill in smsub_widen_optab and
5091         umsub_widen_optab.
5092         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
5093         and umsub_widen_optab to implement multiply-subtract sequences.
5094         * config/mips/mips.md (*msac<u>_di): Rename to...
5095         (<u>msubsidi4): ...this.  Extend condition to include
5096         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
5097         of operand 0 to "ka" and use the three-operand form of msub<u>
5098         for TARGET_DSPR2.
5099         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
5100         to define_expands.
5101
5102 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
5103
5104         PR rtl-optimization/28011
5105         * reload.c (push_reload): Set dont_share if IN appears in OUT
5106         also when IN is a PLUS rtx.
5107         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
5108         are same PLUS rtx.
5109
5110 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
5111
5112         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
5113         call unshare_all_decls.
5114         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
5115         (unshare_all_decls): Remove.
5116
5117 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
5118
5119         PR 31847
5120         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
5121         dumps.
5122
5123 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
5124             Nigel Stephens  <nigel@mips.com>
5125
5126         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
5127         Update comments and all uses.
5128         (MIN_FPRS_PER_FMT): Define.
5129         * config/mips/mips.c (function_arg): Fix to correctly handle
5130         the -mips32r2 -mfp64 -mabi=32 case.
5131         (override_options): Enable use of odd-numbered registers for
5132         SFmode values on MIPS32.
5133         (mips_save_reg_p): Save whole floating-point register pair if
5134         either half is used.
5135         (compute_frame_size): Fix comment.
5136
5137 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
5138
5139         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
5140         argument of type bool.
5141         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
5142         argument. Safely select temporary P register according to it.
5143         (do_link): Change call site of add_to_reg accordingly.
5144         (do_unlink): Add epilogue_p as a fourth argument and pass it
5145         to add_to_reg.
5146         (expand_interrupt_handler_epilogue): Change call of do_unlink
5147         accordingly.
5148         (bfin_expand_prologue): Add a third argument sibcall_p.
5149         * config/bfin/bfin.md (epilogue): Change call of
5150         bfin_expand_epilogue accordingly.
5151         (sibcall_epilogue): Likewise.
5152         (eh_return_internal): Likewise.
5153
5154         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
5155         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
5156         * config/bfin/bfin.c (bfin_handle_option): Handle
5157         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
5158         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
5159         Support bf534, bf536 and bf561.
5160         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
5161
5162 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
5163
5164         PR target/31854
5165         * config/i386/i386.c (ix86_function_regparm): Process local
5166         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
5167
5168 2007-05-07  Mike Stump  <mrs@apple.com>
5169
5170         * doc/invoke.texi (Warning Options): Document that -Wempty-body
5171         also checks for and while statements in C++.
5172
5173 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
5174
5175         * gcc.c (at_file_supplied): New variable.
5176         (main): Set it if we expanded argv.
5177         (do_spec_1): Pass an @-file to the linker if we were called with
5178         an @-file argument and HAVE_GNU_LD.
5179         * collect2.c (at_file_supplied): New variable.
5180         (response_file): New variable.
5181         (collect_exit): Unlink response_file if necessary.
5182         (handler): Likewise.
5183         (do_wait): Likewise.
5184         (main): Set at_file_supplied if we expanded argv.
5185         (collect_execute): Pass an @-file to subprocesses if we were called
5186         with an @-file argument.
5187         * configure.ac: Add define for HAVE_GNU_LD.
5188         * configure: Regenerate.
5189         * config.in: Regenerate.
5190
5191 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
5192
5193         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
5194         operand to HI mode.
5195         (mulsi3): New.
5196         (divsi3): New.
5197         (udivsi3): New.
5198
5199 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
5200
5201         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
5202         (TARGET_ENCODE_SECTION_INFO): Re-define.
5203         (m32c_encode_section_info): New
5204         (function_vector_handler): New
5205         (current_function_special_page_vector): New
5206         (m32c_special_page_vector_p): New.
5207         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
5208         Prototype.
5209         * config/m32c/jump.md: Added instruction JSRS for functions
5210         with attribute "function_vector".
5211         * doc/extend.texi (function_vector): Added description
5212         for M16C, M32C targets.
5213
5214 2007-05-07  DJ Delorie  <dj@redhat.com>
5215
5216         PR 31794
5217         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
5218         ashrpsi3, lshrpsi3): Update shift count constraint.
5219
5220 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
5221             Nathan Froyd  <froydnj@codesourcery.com>
5222
5223         PR 22133
5224         * c-incpath.c (add_path): Strip trailing path separators.
5225
5226 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
5227
5228         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
5229         Free dominance info before purging EH edges.
5230         (eliminate_degenerate_phis): Likewise.
5231         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
5232
5233 2007-05-07  Jan Hubicka  <jh@suse.cz>
5234
5235         * gimplify.c (gimplify_expr): Do not crash when folding
5236         (void *)(int)&a + 4.
5237
5238 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5239
5240         PR driver/31694
5241         * c-opts.c (lang_fortran): Make it non static.
5242         * c-common.h (lang_fortran): New prototype.
5243         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
5244         -lang-fortran option was passed by the driver.
5245
5246 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
5247
5248         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
5249         of ASSERT_CHECKING.  Tweak message.
5250
5251 2007-05-06  Revital Eres  <eres@il.ibm.com>
5252
5253         PR 30957
5254         * loop-unroll.c (insert_var_expansion_initialization):
5255         Initialize the expansions with -zero instead of +zero.
5256
5257 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
5258
5259         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
5260         into pic and non-pic versions. Mark r19 as used for
5261         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
5262         for tgd_load, tld_load and tie_load .
5263         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
5264         version of tgd_load, tld_load and tie_load depending on the
5265         value of flag_pic.
5266
5267 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
5268             Jakub Jelinek  <jakub@redhat.com>
5269
5270         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
5271         (__do_global_dtors_aux): Use more paranoid loop to run
5272         destructors if HIDDEN_DTOR_LIST_END.
5273         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
5274
5275 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
5276
5277         * varasm.c (align_variable): Don't increase alignment for
5278         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
5279         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
5280
5281 2007-05-04  Josh Conner  <jconner@apple.com>
5282
5283         * basic-block.h (cdi_direction): Assign values to all enumeration
5284         constants.
5285         (dom_computed): Remove.
5286         (dom_info_state): New.
5287         (set_dom_info_availability): New.
5288         * tree-ssa-loop-im.c (determine_invariantness): Initialize
5289         walk_data.dom_direction.
5290         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
5291         instead of dom_computed[].
5292         (split_edge): Likewise.
5293         (create_basic_block): Likewise.
5294         (merge_blocks): Likewise.
5295         * ifcvt.c (find_if_header): Likewise.
5296         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
5297         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
5298         * tree-ssa.c (verify_ssa): Likewise.
5299         * tree-cfg.c (tree_verify_flow_info): Likewise.
5300         (remove_edge_and_dominated_blocks): Likewise.
5301         * dominance.c (dom_computed): Make static.
5302         (calc_dfs_tree_nonrec): Change third param to a bool.
5303         (calc_dfs_tree): Change second param to a bool.
5304         (calc_idioms): Change second param to a bool.  Use
5305         dom_convert_dir_to_idx.
5306         (init_dom_info): Validate dir before using.
5307         (dom_convert_dir_to_idx): New.
5308         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
5309         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
5310         (free_dominance_info): Use dom_convert_dir_to_idx.
5311         (get_immediate_dominator): Likewise.
5312         (set_immediate_dominator): Likewise.
5313         (get_dominated_by): Likewise.
5314         (redirect_immediate_dominators): Likewise.
5315         (nearest_common_denominator): Likewise.
5316         (dominated_by_p): Likewise.
5317         (bb_dom_dfs_in): Likewise.
5318         (bb_dom_dfs_out): Likewise.
5319         (recount_dominator): Likewise.
5320         (iterate_fix_dominators): Likewise.
5321         (add_to_dominance_info): Likewise.
5322         (delete_from_dominance_info): Likewise.
5323         (first_dom_son): Likewise.
5324         (next_dom_son): Likewise.
5325         (dom_info_available_p): Likewise.
5326         (dom_info_state): New.
5327         (set_dom_info_availability): New.
5328
5329 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5330
5331         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
5332         Expander removed.
5333         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
5334
5335 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
5336
5337         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
5338         (subdi3, subdi_carry): Delete.
5339
5340 2007-05-04  Jan Hubicka  <jh@suse.cz>
5341             Richard Guenther  <rguenther@suse.de>
5342
5343         * opts.c (decode_options): Do not fiddle with inlining
5344         parameters in case of optimizing for size.
5345         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
5346         for size do nothing.
5347         (cgraph_decide_inlining_of_small_function): When optimizing for
5348         size never inline functions increasing caller size.
5349         (cgraph_early_inlining): Inline for size when optimizing for size.
5350
5351 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
5352
5353         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
5354         logical operations piecewise.
5355         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
5356         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
5357         subdi_sesidi_di): Delete.
5358         (add_with_carry): Produce carry in CC instead of a DREG to shorten
5359         the generated sequence.  Allow three-reg add in constraints.  Rewrite
5360         the rtl expression for carry to avoid zero_extend of a constant.
5361         (sub_with_carry): New pattern.
5362         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
5363         different sequence not involving jumps.
5364         (notbi): Now a named pattern.
5365
5366 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
5367
5368         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
5369         Add the note about a significant loss of accuracy of some
5370         mathematical routines when these options are used.
5371
5372 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5373
5374         * haifa-sched.c (rtx_vec_t): New typedef.
5375         (contributes_to_priority_p): Extract piece of priority () into new
5376         static function.
5377         (priority): Use the function.  Add assertion.
5378         (rank_for_schedule, set_priorities): Add assertion to check that
5379         insn's priority is initialized.
5380         (clear_priorities, calc_priorities): Change signature.  Make it update
5381         all relevant insns.  Update all callers ('add_to_speculative_block ()'
5382         and 'create_block_check_twin ()').
5383         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
5384         Add new field 'priority_status'.
5385         (INSN_PRIORITY_STATUS): New macro.
5386         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
5387
5388 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5389
5390         * sched-ebb.c (debug_ebb_dependencies): New static function.
5391         (init_ready_list): Use it.
5392
5393         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
5394         with changed signature and 'debug_rgn_dependencies ()'.
5395         (debug_rgn_dependencies): New static function.
5396         (init_ready_list): Use it.
5397
5398         * sched-int.h (debug_dependencies): Declare.
5399
5400 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5401
5402         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
5403
5404 2007-05-04  Dirk Mueller  <dmueller@suse.de>
5405
5406         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
5407
5408 2007-05-03  Jan Hubicka  <jh@suse.cz>
5409
5410         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
5411         for pointer type in more cases than before.
5412
5413         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
5414
5415         * tree-object-size.c (plus_expr_object_size): When operand size is
5416         unknown, return unknown.
5417
5418 2007-05-03  Dirk Mueller  <dmueller@suse.de>
5419
5420         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
5421
5422         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
5423         options.
5424
5425         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
5426
5427 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
5428
5429         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
5430
5431 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
5432
5433         * config/soft-fp/double.h, config/soft-fp/extended.h,
5434         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
5435         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
5436         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
5437         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
5438         glibc CVS.
5439
5440 2007-05-03  Ian Lance Taylor  <iant@google.com>
5441
5442         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
5443         MASK_PPC_GFXOPT for 8540 or 8548.
5444
5445 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5446
5447         * tree-vect-transform.c (vect_update_inits_of_drs): Use
5448         vect_print_dump_info() to output debug information.
5449
5450 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5451
5452         PR target/31768
5453         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
5454         operands of size 2 when operand is not MEM_P.
5455
5456 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5457
5458         PR tree-optimization/30565
5459         * lambda-code.c (perfect_nestify): Fix updating of dominators.
5460
5461 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5462
5463         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
5464         (umulsi3_highpart): Use them.
5465         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
5466         for final accumulator to D regisster tranfser.
5467
5468 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
5469
5470         PR tree-optimization/31699
5471         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
5472         code.
5473         (vect_enhance_data_refs_alignment): Compute peel amount using
5474         TYPE_VECTOR_SUBPARTS instead of vf.
5475         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
5476
5477 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
5478
5479         PR bootstrap/31776
5480         * system.h: Remove inclusion of double-int.h
5481         * tree.h: Include double-int.h
5482         * gengtype.c: Likewise
5483         * cfgloop.h: Likewise
5484         * Makefile.in: Adjust dependencies on double-int.h
5485
5486 2007-05-02  Eric Christopher  <echristo@apple.com>
5487
5488         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
5489         -shared to -Zdynamiclib.
5490
5491 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
5492
5493         PR c++/31663
5494         * c-common.c (strip_pointer_or_array_types): New function.
5495         * c-common.h (strip_pointer_or_array_types): New function declaration.
5496
5497 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5498
5499         PR tree-optimization/31771
5500         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
5501
5502 2007-05-02  Paul Brook  <paul@codesourcery.com>
5503
5504         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
5505
5506 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5507
5508         PR middle-end/29715
5509         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
5510         transformation.
5511
5512 2007-05-02  Nick Clifton  <nickc@redhat.com>
5513
5514         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
5515
5516 2007-05-02  Richard Guenther  <rguenther@suse.de>
5517
5518         PR tree-optimization/31146
5519         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
5520         argument, single_use_p.  If we have a single use that is
5521         a conversion to the definition rhs type, propagate that rhs.
5522         (forward_propagate_addr_expr): Pass single_use_p argument
5523         to forward_propagate_addr_expr_1.
5524
5525 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
5526
5527         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
5528         variable.
5529
5530 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5531
5532         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
5533         'AMD Family 10 core'.
5534
5535 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5536
5537         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
5538         and athlon64-sse3 as improved versions of k8, opteron and athlon64
5539         with SSE3 instruction set support.
5540         * doc/invoke.texi: Likewise.
5541
5542 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5543
5544         * config/i386/i386.c (override_options): Tuning 32-byte loop
5545         alignment for amdfam10 architecture. Increasing the max loop
5546         alignment to 24 bytes.
5547
5548 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
5549
5550         * config/m68k/constraints.md: New.
5551         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
5552         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
5553         EXTRA_CONSTRAINT): Remove.
5554         * config/m68k/m68k.md: Include constraints.md.
5555         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
5556
5557 2007-05-01  Ian Lance Taylor  <iant@google.com>
5558
5559         PR tree-optimization/31739
5560         * tree-vrp.c (vrp_val_is_max): New static function.
5561         (vrp_val_is_min): New static function.
5562         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
5563         copying the node.
5564         (set_value_range): Use vrp_val_is_{max,min}.
5565         (extract_range_from_assert): Likewise.
5566         (extract_range_from_binary_expr): Likewise.
5567         (extract_range_from_unary_expr): Likewise.
5568         (dump_value_range, vrp_meet): Likewise.
5569         (vrp_visit_phi_node): Likewise.
5570         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
5571
5572 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
5573
5574         * config/i386/gmon-sol2.c (size_t): New type.
5575         (intptr_t): Likewise.
5576         (s_textsize): Declare as size_t.
5577         (sbrk): Declare.
5578         (monstartup): Use size_t for sizes.
5579         (_mcount): Save and restore registers.
5580         (internal_mcount): Pass 0 as the first argument to monstartup
5581         in 64-bit mode.
5582         (moncontrol): Convert pointer to appropriately sized integer
5583         before passing to profil.
5584
5585 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5586
5587         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
5588         __NO_FPRS__, not just if _SOFT_DOUBLE.
5589         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
5590         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
5591         also for E500 double.
5592         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
5593         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
5594         && !TARGET_FPRS).
5595
5596 2007-05-01  Richard Guenther  <rguenther@suse.de>
5597
5598         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
5599         is NULL.
5600
5601 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5602
5603         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
5604
5605 2007-05-01  Jan Hubicka  <jh@suse.cz>
5606
5607         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
5608         invariant.
5609
5610 2007-05-01  Jan Hubicka  <jh@suse.cz>
5611
5612         * tree.h (maybe_fold_offset_to_component_ref): Remove.
5613         (maybe_fold_offset_to_reference): Declare.
5614         * fold-const.c (fold_unary): Do not fold
5615         (type *)&A into &A->field_of_type_and_offset_0
5616         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
5617         size is unknown, give up.
5618         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
5619         offsets.
5620         (maybe_fold_offset_to_reference): New.
5621         (maybe_fold_stmt_indirect): Use it.
5622         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
5623         * gimplify.c (gimplify_conversion): Canonicalize conversions to
5624         field references.
5625         (gimplify_expr): Likewise for plus_expr.
5626
5627 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
5628
5629         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
5630         bsi_after_labels.  Always insert statements before bsi.
5631         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
5632         * predict.c (apply_return_prediction): Check for empty blocks.
5633         * cfgexpand.c (lab_rtx_for_bb): New variable.
5634         (label_rtx_for_bb): Do not create new tree labels.
5635         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
5636         (tree_expand_cfg): Initialize lab_rtx_for_bb.
5637         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
5638         creating edges.
5639         (label_for_bb): Add field used.
5640         (update_eh_label, main_block_label): Mark the label used.
5641         (cleanup_dead_labels): Remove unused labels.
5642
5643 2007-05-01  Richard Guenther  <rguenther@suse.de>
5644
5645         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
5646         if it is not about to be set.
5647         (get_value_range): Do not pre-allocate equiv bitmap.
5648         (update_value_range): No need to clear equiv field.
5649         (add_equivalence): Change prototype to get bitmap pointer.
5650         Allocate bitmap here if it is not already.
5651         (extract_range_from_assert): Do not allocate bitmap here.
5652         Update callers to add_equivalence.
5653         (extract_range_from_ssa_name): Likewise.
5654         (get_vr_for_comparison): New static helper.
5655         (compare_name_with_value): Handle NULL equiv bitmap by
5656         peeling the first iteration of the comparison loop.
5657         Use get_vr_for_comparison.
5658         (compare_names): Handle NULL equiv bitmaps by using fake
5659         ones.  Use get_vr_for_comparison.
5660
5661 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
5662
5663         * double-int.c (mpz_set_double_int): Moved from
5664         tree-ssa-loop-niter.c.
5665         (mpz_get_double_int): Likewise; also, add option to wrap
5666         out-of-range integers.
5667         * double-int.h: New prototypes for above.
5668         * tree.c (get_static_type_bounds): Moved from
5669         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
5670         TYPE_MAX_VALUE if they exist..
5671         * tree.h: New prototype for above.
5672         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
5673         get_type_bounds calls.
5674         (mpz_set_double_int): Move to double-int.c.
5675         (get_type_bounds): Move to tree.c, rename to
5676         get_static_type_bounds.
5677         (mpz_to_double_int): Move to double-int.c, rename to
5678         mpz_get_double_int.
5679
5680 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
5681
5682         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
5683         DIV0 exception can fall through to a normal return.
5684
5685 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
5686
5687         PR middle-end/22156
5688         Temporarily revert:
5689         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
5690         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
5691         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5692         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5693         initialize align to silence bogus warning.
5694         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5695         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5696         all_no_warning.
5697         (struct sra_walk_fns): Remove use_all parameter from use.
5698         (sra_hash_tree): Handle BIT_FIELD_REFs.
5699         (sra_elt_hash): Don't hash bitfld blocks.
5700         (sra_elt_eq): Skip them in parent compares as well.  Handle
5701         BIT_FIELD_REFs.
5702         (sra_walk_expr): Don't maintain or pass down use_all_p.
5703         (scan_use): Remove use_all parameter.
5704         (scalarize_use): Likewise.  Re-expand assignment to
5705         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5706         output, and re-scalarize after output.  Don't mark anything
5707         for no warning.
5708         (scalarize_ldst): Adjust.
5709         (scalarize_walk_gimple_modify_statement): Likewise.
5710         (build_element_name_1): Handle BIT_FIELD_REFs.
5711         (instantiate_element): Don't warn for any element whose parent
5712         is used as a whole.
5713         (instantiate_missing_elements_1): Return the sra_elt.
5714         (canon_type_for_field): New.
5715         (try_instantiate_multiple_fields): New.
5716         (instantiate_missing_elemnts): Use them.
5717         (mark_no_warning): Removed.
5718         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5719         (REPLDUP, sra_build_elt_assignment): New.
5720         (generate_copy_inout): Use them.
5721         (generate_element_copy): Likewise.  Handle bitfld differences.
5722         (generate_element_zero): Don't recurse for blocks.  Use
5723         sra_build_elt_assignment.
5724         (generate_one_element_int): Take elt instead of var.  Use
5725         sra_build_elt_assignment.
5726         (generate_element_init_1): Adjust.
5727         (scalarize_use, scalarize_copy): Use REPLDUP.
5728         (scalarize_ldst): Move assert before dereference.
5729         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5730
5731 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5732
5733         PR C++/31721
5734         * tree.c (reconstruct_complex_type): Reconstruct a reference
5735         correctly.
5736         Also use the same mode for the pointer as the old pointer type.
5737
5738 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
5739
5740         * doc/trouble.texi (Interoperation): Remove note about Ultrix
5741         Fortran compiler.
5742
5743 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
5744
5745         PR rtl-optimization/31676
5746         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
5747         (df_refs_record): Call it.
5748
5749 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5750
5751         * rtl.def (SS_ABS): New code.
5752         * config/bfin/bfin.c (print_operand): New modifier 'v'.
5753         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
5754         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
5755         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
5756         (bfin_init_builtins): Define them.
5757         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
5758         (bfin_expand_builtin): ... and handle the others here.
5759         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
5760         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
5761         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
5762         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
5763         operand is only HImode.
5764
5765 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
5766
5767         * regclass.c (scan_one_insn): Remove splitting of
5768         two address insns.
5769
5770 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
5771             Nigel Stephens  <nigel@mips.com>
5772
5773         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
5774
5775 2007-04-28  Jan Hubicka  <jh@suse.cz>
5776
5777         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
5778         insn_locators_alloc instead of insn_locators_initialize;
5779         call reset_block_changes.
5780         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5781         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
5782         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
5783         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5784         * config/score/score.c (th_output_mi_thunk): Likewise.
5785         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5786         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
5787         tolerate uninitialized locator info.
5788
5789         Re-apply:
5790         * function.c (init_function_start): Don't init line number info.
5791         (expand_function_end): Update.
5792         (reset_block_changes, record_block_change, finalize_block_changes,
5793         check_block_change, free_block_changes): Kill.
5794         * function.h (reset_block_changes, record_block_change,
5795         finalize_block_changes, check_block_change, free_block_changes): Remove
5796         prototypes.
5797         (struct function): Remove ib_boundaries_block.
5798         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5799         Use curr_insn_locator to initialize locator.
5800         (emit_line_note): Remove.
5801         * cfgexpand.c (expand_gimple_cond_expr): Update.
5802         (construct_exit_block): Likewise.
5803         (tree_expand_cfg): Initialize/finalize locators.
5804         * expr.c (expand_expr_real): Update.
5805         * cfglayout.c (line_locators_locs, line_locators_lines,
5806         file_locators_locs, file_locators_files): Remove.
5807         (set_block_levels): Move to cfgexpand.c.
5808         (insn_locators_initialize): Remove.
5809         (pass_insn_locators_initialize): Remove.
5810         (locations_locators_locs, locations_locators_vals): New static vars.
5811         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5812         Likewise.
5813         (insn_locators_alloc, insn_locators_finalize,
5814         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5815         New functions.
5816         (locator_location): New.
5817         (locator_line, locator_file): Rewrite.
5818         * rtl.h (emit_line_note): Kill.
5819         (insn_locators_alloc, insn_locators_finalize,
5820         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5821         Declare.
5822         * tree-inline.c (initialize_cfun): Do not initialize
5823         ib_boundaries_block.
5824         * passes.c (pass_insn_locators_initialize): Remove.
5825
5826 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
5827
5828         * tree-cfg.c (move_block_to_fn): Release bb from dominance
5829         info.  Update last_basic_block correctly.
5830
5831 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5832
5833         PR target/31701
5834         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
5835         register itself to hold the offset constant.  Tell flow the use
5836         of r4 and r5 when they are used.
5837
5838 2007-04-27  Richard Guenther  <rguenther@suse.de>
5839
5840         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
5841         if we simplified anything.
5842         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
5843         warnings until we did a simplification and the stmt was not
5844         marked as TREE_NO_WARNING.
5845
5846 2007-04-27  Mike Stump  <mrs@apple.com>
5847
5848         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
5849
5850 2007-04-27  Ian Lance Taylor  <iant@google.com>
5851
5852         PR middle-end/31710
5853         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
5854         TYPE_MAX_VALUE exist, convert them to the new type.
5855
5856 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5857
5858         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
5859         if it claims to be available.
5860         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
5861         edge is redirected.
5862         (perform_tree_ssa_dce): Always free postdominators.
5863
5864 2007-04-27  Richard Henderson  <rth@redhat.com>
5865
5866         * config/alpha/predicates.md (aligned_memory_operand): Mark
5867         as define_special_predicate.
5868         (unaligned_memory_operand, normal_memory_operand): Likewise.
5869         (reg_or_unaligned_mem_operand): Remove.
5870         (any_memory_operand): Match the documentation and check for
5871         non-renumbered pseudos during reload.
5872         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
5873         alpha_secondary_reload_class, update to new interface, make static.
5874         Handle CQImode like HImode.  Remove FP subreg check.
5875         (alpha_expand_mov): Use replace_equiv_address.
5876         (alpha_expand_mov_nobwx): Use any_memory_operand.
5877         (TARGET_SECONDARY_RELOAD): New.
5878         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
5879         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
5880         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
5881         * config/alpha/alpha.md: ... here.
5882         (RELOAD12, reloadmode): New.
5883         (movcqi): New.
5884         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
5885         Don't handle the aligned case here.
5886         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
5887         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
5888         reload_inhi_help.  Don't expect a scratch register.
5889         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
5890         reload_outhi_help.
5891         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
5892
5893 2007-04-27  Richard Guenther  <rguenther@suse.de>
5894
5895         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
5896
5897 2007-04-27  Richard Guenther  <rguenther@suse.de>
5898
5899         PR tree-optimization/30965
5900         PR tree-optimization/30978
5901         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
5902         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
5903         (find_equivalent_equality_comparison): Likewise.
5904         (simplify_cond): Likewise.
5905         (get_prop_source_stmt): New helper.
5906         (get_prop_dest_stmt): Likewise.
5907         (can_propagate_from): Likewise.
5908         (remove_prop_source_from_use): Likewise.
5909         (combine_cond_expr_cond): Likewise.
5910         (forward_propagate_comparison): New function.
5911         (forward_propagate_into_cond): Rewrite to use fold for
5912         tree combining.
5913         (tree_ssa_forward_propagate_single_use_vars): Call
5914         forward_propagate_comparison to propagate comparisons.
5915
5916 2007-04-27  Richard Guenther  <rguenther@suse.de>
5917
5918         PR tree-optimization/31715
5919         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
5920         sure to do computation on the offset in an appropriate
5921         signed type.
5922
5923 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
5924
5925         * reload.h (elimination_target_reg_p): Declare.
5926         * reload.c (find_reloads): Don't apply the reg_rtx move
5927         optimization if the SET_DEST satisfies elimination_target_reg_p.
5928         * reload1.c (elimination_target_reg_p): New function.
5929         (gen_reload): In the move/add2 fallback, make sure that op0
5930         does not overlap the destination register.
5931
5932 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5933
5934         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
5935         transform only GIMPLE_MODIFY_STMTs.
5936         * tree-complex.c (expand_complex_operations_1): Ditto.
5937         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
5938         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
5939         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
5940         branches.
5941         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5942         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
5943         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
5944         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
5945         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
5946         slpeel_add_loop_guard): Ditto.
5947         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
5948         * lambda-code.c (perfect_nestify): Ditto.
5949         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
5950         before the first statement.
5951         * tree-optimize.c (execute_free_datastructures): Fix comments.
5952         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
5953         * tree-flow.h (disband_implicit_edges): Declaration removed.
5954         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
5955         branches.
5956         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
5957         without gotos.
5958         (disband_implicit_edges, has_label_p): Removed.
5959         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
5960         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
5961         branches.
5962         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
5963         side effects.
5964         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
5965         also for COND_EXPRs.
5966         * cfgexpand.c (label_rtx_for_bb): New function.
5967         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
5968         Use label_rtx_for_bb to find the labels.
5969         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
5970         last block.  Detect fallthru edges.
5971
5972 2007-04-26  Ian Lance Taylor  <iant@google.com>
5973
5974         PR target/28675
5975         * reload.c (find_reloads_subreg_address): If the address was valid
5976         in the original mode but not in the new mode, reload the whole
5977         address.
5978
5979 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5980
5981         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
5982         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
5983         (cleanup_control_expr_graph): Do not invalidate dominance info.
5984         Record altered blocks.
5985         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
5986         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
5987         cleanup_tree_cfg_bb): New functions.
5988         (remove_forwarder_block): Do not maintain the worklist of blocks.
5989         Record altered blocks.
5990         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
5991         not over whole cfg.
5992         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
5993         delete_unreachable_blocks if dominators are not available.
5994         * tree-inline.c (optimize_inline_calls): Free dominance information
5995         earlier.
5996         * tree-flow.h (remove_edge_and_dominated_blocks,
5997         cfgcleanup_altered_bbs): Altered.
5998         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
5999         blocks.
6000         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
6001         functions.
6002         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
6003         do not invalidate dominators.
6004
6005 2007-04-26  Anatoly Sokolov <aesok@post.ru>
6006
6007         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
6008         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
6009         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
6010         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
6011
6012 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
6013
6014         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
6015
6016 2007-04-26  Richard Guenther  <rguenther@suse.de>
6017
6018         PR tree-optimization/31703
6019         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
6020         the right type for the target of the bittest.
6021
6022 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6023
6024         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
6025         ix86_sol10_return_in_memory.
6026
6027 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6028
6029         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
6030         variables.
6031
6032 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
6033
6034         PR c++/31598
6035         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
6036
6037         PR tree-optimization/30558
6038         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
6039         clear this_state.prev_try.
6040
6041 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6042             Mark Mitchell  <mark@codesourcery.com>
6043
6044         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
6045         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
6046         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
6047
6048 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
6049
6050         PR driver/31107
6051         * doc/invoke.texi (%:print-asm-header): Document.
6052         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
6053         and -ftarget-help.
6054         (static_spec_functions): Add print-asm-header.
6055         (main): Print a banner before the --target-help linker options.
6056         (print_asm_header_spec_function): New function.
6057
6058 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
6059
6060         PR target/31403
6061         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
6062         (movsf_ie): Likewise.
6063
6064 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
6065
6066         * doc/extend.texi ([Type Traits]): Adjust per N2255.
6067
6068 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
6069
6070         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
6071         for divide-by-zero.
6072         (__umodsi3, __modsi3): Likewise.
6073
6074 2007-04-25  Dirk Mueller  <dmueller@suse.de>
6075
6076         * c-typeck.c (build_compound_expr): Annotate warning()
6077         call with OPT_Wunused_value.
6078         * tree-ssa.c (warn_uninit): Annotate warning with
6079         OPT_Wunintialized.
6080         * c-common.c (handle_sentinel_attribute): Annotate warning
6081         call with OPT_Wattributes.
6082
6083 2007-04-25  Thiemo Seufer  <ths@mips.com>
6084
6085         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
6086         (mips16): Fix typo.
6087         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
6088         on to the assembler.  Improve handling of -mno-mips16.  Add handling
6089         of -mno-mips3d, -mno-dsp, -mno-dspr2.
6090         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
6091         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
6092         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
6093
6094 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
6095
6096         PR target/31680
6097         * config/i386/winnt.c (i386_pe_file_end): Strip only
6098         USER_LABEL_PREFIX when writing export name.
6099
6100 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
6101
6102         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
6103         sh/elf.h, vx-common.h and vxworks.h.
6104         * config/sh/sh.h: Include config/vxworks-dummy.h.
6105         (SUBTARGET_OVERRIDE_OPTIONS): Define.
6106         (OVERRIDE_OPTIONS): Use it.
6107         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
6108         (vxworks_picreg): New pattern.
6109         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
6110         VXWORKS_OS_CPP_BUILTINS.
6111         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
6112         to their VXWORKS_* equivalents.
6113         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
6114         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
6115         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
6116         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
6117         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
6118         -mrtp/-fPIC multilibs.
6119         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
6120         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
6121         (MULTILIB_OSDIRNAMES): Delete.
6122
6123 2007-04-25  Anatoly Sokolov <aesok@post.ru>
6124
6125         PR target/18989
6126         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
6127
6128 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
6129
6130         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
6131         rounding mode to be specified by the caller.
6132         (real_to_mpfr) Likewise.
6133         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
6134         include new arguments.
6135         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
6136
6137 2007-04-24  Ian Lance Taylor  <iant@google.com>
6138
6139         PR tree-optimization/31605
6140         * tree-vrp.c (set_value_range): Check that min and max are not
6141         both overflow infinities.
6142         (set_value_range_to_value): New static function.
6143         (extract_range_from_binary_expr): Call set_value_range_to_value.
6144         (extract_range_from_cond_expr): Likewise.
6145         (extract_range_from_expr): Likewise.
6146         (extract_range_from_unary_expr): Likewise.  Don't create a range
6147         which overflows on both sides.
6148         (vrp_meet): Check for a useless range.
6149         (vrp_visit_phi_node): If we see a constant which looks like an
6150         overflow infinity, turn off the TREE_OVERFLOW flag.
6151
6152 2007-04-24  Ian Lance Taylor  <iant@google.com>
6153
6154         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
6155
6156 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
6157
6158         PR diagnostic/25923
6159         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
6160         diagnostic message is being built.
6161         * tree-pretty-print.c (dump_generic_node): Only write the
6162         formatted text into BUFFER's stream if we are not building a
6163         diagnostic message.
6164         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
6165         dump_generic_node.
6166         * Makefile.in (toplev.o): Depend on tree-pass.h.
6167
6168 2007-04-24  Ian Lance Taylor  <iant@google.com>
6169
6170         PR tree-optimization/31602
6171         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
6172         conditionals in the copied loop header.
6173         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
6174         warnings if TREE_NO_WARNING is set.
6175         * doc/invoke.texi (Warning Options): Clarify that
6176         -Wstrict-overflow does not warn about loops.
6177
6178 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
6179
6180         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
6181         expand on the comment about _Decimal128 arguments and check the
6182         integer result of the modulus operation; for 64-bit ELF ABI, ensure
6183         that _Decimal128 argument uses even/odd register pair.
6184         (function_arg): Ditto.
6185
6186 2007-04-24  Hui-May Chang <hm.chang@apple.com>
6187
6188         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
6189         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
6190
6191 2007-04-24  Richard Guenther  <rguenther@suse.de>
6192             Olga Golovanevsky  <olga@il.ibm.com>
6193
6194         * fold-const.c (multiple_of_p): Check for bottom
6195         to be zero.
6196
6197 2007-04-24  Richard Henderson  <rth@redhat.com>
6198
6199         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
6200         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
6201         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
6202         looking for non-zero bits shifted out.  Avoid a recursive call
6203         when constructing the scalar.
6204         (__floatundisf): Likewise.
6205
6206 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
6207
6208         * dwarf2out.c (field_byte_offset): Move the existing logic
6209         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
6210         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
6211
6212 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6213
6214         PR target/31641
6215         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
6216         argument of 0 for memset.
6217         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
6218         unsigned shift instead of the signed variant.
6219
6220 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6221
6222         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
6223         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
6224         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
6225         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
6226         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
6227         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
6228         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
6229         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
6230         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
6231         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
6232         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
6233         "mul<mode>3", "div<mode>3"): Insn definitions added.
6234         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
6235         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
6236         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
6237         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
6238         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
6239         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
6240         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
6241         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
6242         TARGET_FLOAT_FORMAT): Macro definitions removed.
6243         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
6244         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
6245         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
6246         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
6247         (s390_gen_rtx_const_DI): Function removed.
6248         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
6249
6250 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
6251
6252         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
6253         over an external ffs function.
6254
6255 2007-04-24  Chao-ying Fu  <fu@mips.com>
6256             Richard Sandiford  <richard@nildram.co.uk>
6257
6258         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
6259         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
6260         (smadd_widen_optab, umadd_widen_optab): Define.
6261         * optabs.c (init_optabs): Initialize smadd_widen_optab and
6262         umadd_widen_optab.
6263         * genopinit.c (optabs): Fill in smadd_widen_optab and
6264         umadd_widen_optab.
6265         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
6266         and umadd_widen_optab to implement multiply-add sequences.
6267         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
6268         (<u>maddsidi4): ...this.  Extend condition to include
6269         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
6270         of operand 0 to "ka" and use the three-operand form of madd<u>
6271         for TARGET_DSPR2.
6272         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
6273         to define_expands.
6274         * config/mips/constraints.md (ka): New register constraint.
6275
6276 2007-04-24  Jan Hubicka  <j@suse.cz>
6277
6278         Revert:
6279
6280         2007-04-23  Jan Hubicka  <jh@suse.cz>
6281         * function.c (init_function_start): Don't init line number info.
6282         (expand_function_end): Update.
6283         (reset_block_changes, record_block_change, finalize_block_changes,
6284         check_block_change, free_block_changes): Kill.
6285         * function.h (reset_block_changes, record_block_change,
6286         finalize_block_changes, check_block_change, free_block_changes): Remove
6287         prototypes.
6288         (struct function): Remove ib_boundaries_block.
6289         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6290         Use curr_insn_locator to initialize locator.
6291         (emit_line_note): Remove.
6292         * cfgexpand.c (expand_gimple_cond_expr): Update.
6293         (construct_exit_block): Likewise.
6294         (tree_expand_cfg): Initialize/finalize locators.
6295         * expr.c (expand_expr_real): Update.
6296         * cfglayout.c (line_locators_locs, line_locators_lines,
6297         file_locators_locs, file_locators_files): Remove.
6298         (set_block_levels): Move to cfgexpand.c.
6299         (insn_locators_initialize): Remove.
6300         (pass_insn_locators_initialize): Remove.
6301         (locations_locators_locs, locations_locators_vals): New static vars.
6302         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6303         Likewise.
6304         (insn_locators_alloc, insn_locators_finalize,
6305         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6306         New functions.
6307         (locator_location): New.
6308         (locator_line, locator_file): Rewrite.
6309         * rtl.h (emit_line_note): Kill.
6310         (insn_locators_alloc, insn_locators_finalize,
6311         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6312         Declare.
6313         * tree-inline.c (initialize_cfun): Do not initialize
6314         ib_boundaries_block.
6315         * passes.c (pass_insn_locators_initialize): Remove.
6316
6317 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
6318
6319         * doc/invoke.texi: Removed leading '-' from option index entries.
6320
6321 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
6322
6323         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
6324         Use phi_nodes_ptr.
6325         (create_phi_node): Use set_phi_nodes.
6326         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
6327         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
6328         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
6329         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
6330         (bsi_start, bsi_last): Use bb_stmt_list.
6331         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
6332         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
6333         Traverse the statements using tsi iterator.
6334         * basic-block.h (struct basic_block_def): Fields stmt_list
6335         and phi_nodes moved to ...
6336         (struct tree_bb_info): ... new structure.
6337         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
6338         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
6339         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
6340         (tree_verify_flow_info): Verify that il.tree is not set for
6341         entry and exit block.
6342         (tree_split_block): Use set_bb_stmt_list.
6343
6344 2007-04-23  Mike Stump  <mrs@apple.com>
6345
6346         * config/i386/i386.c (ix86_tune_features
6347         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
6348         nocona and core2.
6349
6350 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6351
6352         * config/i386/i386.md (prefix_extra): New attribute.
6353         (length): Add prefix_extra.
6354
6355         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
6356         (sse2_movntv2di): Likewise.
6357         (sse2_cvtps2dq): Likewise.
6358         (sse2_cvtpd2pi): Likewise.
6359         (sse2_cvttpd2pi): Likewise.
6360         (*sse2_cvtpd2ps): Likewise.
6361         (*add<mode>3): Likewise.
6362         (sse2_ssadd<mode>3): Likewise.
6363         (sse2_usadd<mode>3): Likewise.
6364         (*sub<mode>3): Likewise.
6365         (sse2_sssub<mode>3): Likewise.
6366         (sse2_ussub<mode>3): Likewise.
6367         (*mulv8hi3): Likewise.
6368         (*smulv8hi3_highpart): Likewise.
6369         (*umulv8hi3_highpart): Likewise.
6370         (sse2_umulv2siv2di3): Likewise.
6371         (sse2_pmaddwd): Likewise.
6372         (ashr<mode>3): Likewise.
6373         (lshr<mode>3): Likewise.
6374         (ashl<mode>3): Likewise.
6375         (sse2_ashlti3): Likewise.
6376         (sse2_lshrti3): Likewise.
6377         (*umaxv16qi3): Likewise.
6378         (*smaxv8hi3): Likewise.
6379         (*uminv16qi3): Likewise.
6380         (*sminv8hi3): Likewise.
6381         (sse2_eq<mode>3): Likewise.
6382         (sse2_gt<mode>3): Likewise.
6383         (*and<mode>3): Likewise.
6384         (sse2_nand<mode>3): Likewise.
6385         (*ior<mode>3): Likewise.
6386         (*xor<mode>3): Likewise.
6387         (sse2_packsswb): Likewise.
6388         (sse2_packssdw): Likewise.
6389         (sse2_packuswb): Likewise.
6390         (sse2_punpckhbw): Likewise.
6391         (sse2_punpcklbw): Likewise.
6392         (sse2_punpckhwd): Likewise.
6393         (sse2_punpcklwd): Likewise.
6394         (sse2_punpckhdq): Likewise.
6395         (sse2_punpckldq): Likewise.
6396         (sse2_punpckhqdq): Likewise.
6397         (sse2_punpcklqdq): Likewise.
6398         (*sse2_pinsrw): Likewise.
6399         (*sse2_pextrw): Likewise.
6400         (sse2_pshufd_1): Likewise.
6401         (sse2_uavgv16qi3): Likewise.
6402         (sse2_uavgv8hi3): Likewise.
6403         (sse2_psadbw): Likewise.
6404         (sse2_pmovmskb): Likewise.
6405         (*sse2_maskmovdqu): Likewise.
6406         (*sse2_maskmovdqu_rex64): Likewise.
6407         (sse4a_extrqi): Likewise.
6408         (sse4a_extrq): Likewise.
6409         (sse3_lddqu): Set prefix_rep.
6410         (sse3_addsubv4sf3): Likewise.
6411         (sse3_haddv4sf3): Likewise.
6412         (sse3_hsubv4sf3): Likewise.
6413         (sse_cvtss2si): Likewise.
6414         (sse_cvtss2si_2): Likewise.
6415         (sse_cvtss2siq): Likewise.
6416         (sse_cvtss2siq_2): Likewise.
6417         (sse_cvttss2si): Likewise.
6418         (sse_cvttss2siq): Likewise.
6419         (sse2_cvttps2dq): Likewise.
6420         (sse3_movshdup): Likewise.
6421         (sse3_movsldup): Likewise.
6422         (sse2_cvtsd2si): Likewise.
6423         (sse2_cvtsd2si_2): Likewise.
6424         (sse2_cvtsd2siq): Likewise.
6425         (sse2_cvtsd2siq_2): Likewise.
6426         (sse2_cvttsd2si): Likewise.
6427         (sse2_cvttsd2siq): Likewise.
6428         (*sse2_cvtpd2dq): Likewise.
6429         (*sse2_cvttpd2dq): Likewise.
6430         (sse2_pshuflw_1): Likewise.
6431         (sse2_pshufhw_1): Likewise.
6432         (sse4a_insertqi): Likewise.
6433         (sse4a_insertq): Likewise.
6434         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
6435         (ssse3_phadddv4si3): Likewise.
6436         (ssse3_phaddswv8hi3): Likewise.
6437         (ssse3_phsubwv8hi3): Likewise.
6438         (ssse3_phsubdv4si3): Likewise.
6439         (ssse3_phsubswv8hi3): Likewise.
6440         (ssse3_pmaddubswv8hi3): Likewise.
6441         (ssse3_pmulhrswv8hi3): Likewise.
6442         (ssse3_pshufbv16qi3): Likewise.
6443         (ssse3_psign<mode>3): Likewise.
6444         (ssse3_palignrti): Likewise.
6445         (abs<mode>2): Likewise.
6446         (ssse3_phaddwv4hi3): Set prefix_extra.
6447         (ssse3_phadddv2si3): Likewise.
6448         (ssse3_phaddswv4hi3): Likewise.
6449         (ssse3_phsubwv4hi3): Likewise.
6450         (ssse3_phsubdv2si3): Likewise.
6451         (ssse3_phsubswv4hi3): Likewise.
6452         (ssse3_pmaddubswv4hi3): Likewise.
6453         (ssse3_pmulhrswv4hi3): Likewise.
6454         (ssse3_pshufbv8qi3): Likewise.
6455         (ssse3_psign<mode>3): Likewise.
6456         (ssse3_palignrdi): Likewise.
6457         (abs<mode>2): Likewise.
6458         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
6459         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
6460         (sse2_pmovmskb): Set mode to SI instead of V2DF.
6461
6462 2007-04-23  Nick Clifton  <nickc@redhat.com>
6463
6464         * params.def: Fix formatting of emacs local variables.
6465
6466 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6467
6468         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
6469         move if inter-unit move isn't allowed.
6470         Don't split moving the first element of V2DI to DI to inter-unit
6471         move if inter-unit move isn't allowed.
6472
6473 2007-04-23  Richard Guenther  <rguenther@suse.de>
6474
6475         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
6476         and CDI_POST_DOMINATORS separately.
6477
6478 2007-04-23  Nick Clifton  <nickc@redhat.com>
6479
6480         * c.opt (Wformat-contains-nul): Add warning attribute.
6481
6482 2007-04-23  Jan Hubicka  <jh@suse.cz>
6483
6484         * function.c (init_function_start): Don't init line number info.
6485         (expand_function_end): Update.
6486         (reset_block_changes, record_block_change, finalize_block_changes,
6487         check_block_change, free_block_changes): Kill.
6488         * function.h (reset_block_changes, record_block_change,
6489         finalize_block_changes, check_block_change, free_block_changes): Remove
6490         prototypes.
6491         (struct function): Remove ib_boundaries_block.
6492         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6493         Use curr_insn_locator to initialize locator.
6494         (emit_line_note): Remove.
6495         * cfgexpand.c (expand_gimple_cond_expr): Update.
6496         (construct_exit_block): Likewise.
6497         (tree_expand_cfg): Initialize/finalize locators.
6498         * expr.c (expand_expr_real): Update.
6499         * cfglayout.c (line_locators_locs, line_locators_lines,
6500         file_locators_locs, file_locators_files): Remove.
6501         (set_block_levels): Move to cfgexpand.c.
6502         (insn_locators_initialize): Remove.
6503         (pass_insn_locators_initialize): Remove.
6504         (locations_locators_locs, locations_locators_vals): New static vars.
6505         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6506         Likewise.
6507         (insn_locators_alloc, insn_locators_finalize,
6508         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6509         New functions.
6510         (locator_location): New.
6511         (locator_line, locator_file): Rewrite.
6512         * rtl.h (emit_line_note): Kill.
6513         (insn_locators_alloc, insn_locators_finalize,
6514         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6515         Declare.
6516         * tree-inline.c (initialize_cfun): Do not initialize
6517         ib_boundaries_block.
6518         * passes.c (pass_insn_locators_initialize): Remove.
6519
6520 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6521
6522         PR middle-end/31448
6523         * expr.c (reduce_to_bit_field_precision): Handle
6524         CONST_INT rtx's.
6525
6526 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
6527
6528         PR tree-optimization/24659
6529         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
6530         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
6531         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
6532         * genopinit.c (optabs): Rename vec_pack_mod_optab
6533         to vec_pack_trunc_optab.
6534         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
6535         early for scalar floating point operands for NOP_EXPR.
6536         (vectorizable_type_promotion): Ditto.
6537         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
6538         vec_pack_trunc_optab.
6539         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
6540
6541         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
6542         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
6543         Rename from VEC_PACK_MOD_EXPR.
6544         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
6545         * expr.c (expand_expr_real_1): Ditto.
6546         * tree-inline.c (estimate_num_insns_1): Ditto.
6547         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
6548
6549         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
6550         (vec_unpacks_lo_v4sf): Ditto.
6551         (vec_pack_trunc_v2df): Ditto.
6552         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
6553         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6554         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
6555
6556         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
6557         vec_pack_mod_v8hi.
6558         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6559
6560         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
6561         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
6562         packing of floating point operands.
6563         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
6564         represent unpacking of floating point operands.
6565         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
6566         [vec_unpacks_hi]: Ditto.
6567         [vec_unpacks_lo]: Ditto.
6568
6569 2007-04-22  Jan Hubicka  <jh@suse.cz>
6570
6571         * final.c (rest_of_handle_final): Call
6572         targetm.asm_out.constructor/targetm.asm_out.destructor
6573         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
6574         proper priority via decl_*_priority_insert.
6575         * c-common.c (c_expand_body): Likewise.
6576
6577 2007-04-22  Richard Guenther  <rguenther@suse.de>
6578
6579         PR tree-optimization/29789
6580         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
6581         (rewrite_reciprocal): New helper split out from
6582         determine_invariantness_stmt.
6583         (rewrite_bittest): Likewise.
6584         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
6585         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
6586         is not.
6587
6588 2007-04-22  Revital Eres  <eres@il.ibm.com>
6589
6590         * loop-unroll.c (var_to_expand): New field to support also
6591         insns of the form x = something + x.
6592         (analyze_insn_to_expand_var): Use it.
6593         (expand_var_during_unrolling): Likewise.
6594
6595 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6596
6597         * predict.c: Include pointer-set.h.
6598         (bb_predictions): New variable.
6599         (tree_predicted_by_p, tree_predict_edge,
6600         remove_predictions_associated_with_edge): Use bb_predictions map
6601         instead of bb->predictions.
6602         (clear_bb_predictions, assert_is_empty): New functions.
6603         (combine_predictions_for_bb): Use bb_predictions map.  Call
6604         clear_bb_predictions.
6605         (tree_estimate_probability): Create and free bb_predictions map.
6606         * Makefile.in (predict.o): Add pointer-set.h dependency.
6607         * basic-block.h (struct basic_block_def): Remove predictions
6608         field.
6609         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
6610
6611 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6612
6613         PR target/31480
6614         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
6615         is null.
6616
6617 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6618
6619         * timevar.c (timevar_print): Change reference of --disable-checking to
6620         --enable-checking=release.  Also warn if assert checking is disabled.
6621
6622 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6623
6624         PR C/30265
6625         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
6626         decl as addressable if the compound literal was marked as
6627         addressable.
6628         Mark the decl as a gimple register if it is a complex or
6629         vector decl and does not live in memory.
6630
6631 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6632
6633         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
6634         (GENERIC_NEXT): New function macro.
6635         (PHI_CHAIN): Use phi_node's new chain variable.
6636         (tree_phi_node): Change tree_common to tree_base
6637         and add the chain field.
6638         * tree-phinodes.c (make_phi_node): Don't set
6639         TREE_TYPE on the new node.
6640         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
6641         instead of checking GIMPLE_TUPLE_P in chain_next.
6642         * tree-vect-transform.c
6643         (get_initial_def_for_induction): Look at
6644         PHI_RESULT_TREE for the type of the phi node.
6645         (update_vuses_to_preheader): Use PHI_CHAIN
6646         instead of TREE_CHAIN on the phi node.
6647         * tree-ssa-structalias.c (compute_points_to_sets):
6648         Likewise.
6649         (ipa_pta_execute): Likewise.
6650
6651 2007-04-21  Richard Guenther  <rguenther@suse.de>
6652
6653         PR middle-end/31136
6654         * fold-const.c (fold_unary): Call fold_convert_const on the
6655         original tree.
6656
6657 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
6658
6659         * gcse.c (store_killed_in_insn): Handle PARALLELs.
6660         (store_killed_in_pat): New.
6661
6662 2007-04-20  Richard Henderson  <rth@redhat.com>
6663
6664         PR target/31628
6665         * config/i386/i386.c (type_has_variadic_args_p): Look for any
6666         TREE_LIST with a void_type_node value, not void_list_node exactly.
6667
6668 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
6669
6670         * doc/standards.texi: Re-arrange into language-specific
6671         subsections. Add a C++ section, documenting which standards we
6672         support.
6673
6674 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6675
6676         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
6677         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
6678
6679 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
6680
6681         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
6682         ecrti.o and crtbegin.o.
6683         (LIB_DEFAULT_SPEC): Include -lc.
6684         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
6685
6686 2007-04-20  Richard Henderson  <rth@redhat.com>
6687
6688         PR target/28623
6689         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
6690         argument; update all callers.
6691         (get_unaligned_offset): New.
6692         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
6693         get_unaligned_address, just pass on the address directly.
6694         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
6695         the subreg in the helper patterns.
6696         (unaligned_extendqidi_le): Use get_unaligned_offset.
6697         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
6698         (unaligned_extendhidi_be): Likewise.
6699         (unaligned_extendhidi): Tidy.
6700         * config/alpha/alpha-protos.h: Update.
6701
6702 2007-04-20  Richard Henderson  <rth@redhat.com>
6703
6704         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
6705         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
6706         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
6707         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6708         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6709         (CPP_SPEC): Don't include %(cpp_subtarget).
6710         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
6711         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6712         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
6713
6714 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
6715
6716         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
6717         for __builtin_ia32_cmpordss.
6718
6719         PR tree-optimization/31632
6720         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
6721         and arg1 for optimizations of comparison against min/max values.
6722         Fold arg0 to arg1's type for optimizations of comparison against
6723         min+1 and max-1 values.
6724
6725 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
6726
6727         * reload.c (combine_reloads): When trying to use a dying register,
6728         check whether it's uninitialized and don't use if so.
6729
6730 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
6731
6732         * fold-const.c: Remove prototypes for native_encode_expr and
6733         native_interpret_expr.
6734         (native_encode_expr): Make non-static.
6735         (native_interpret_expr): Likewise.
6736         * tree.h: Add prototypes for the above.
6737
6738 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6739
6740         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
6741         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
6742         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
6743         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
6744         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
6745         Add length attributes.
6746
6747 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
6748
6749         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
6750         not that it is 1.
6751
6752         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
6753         __STDC_WANT_DEC_FP__.
6754
6755 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6756
6757         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
6758         for long double compatibility.
6759         * configure: Regenerate.
6760
6761 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
6762
6763         PR rtl-optimization/29841
6764         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
6765         trap instructions.
6766         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
6767         that may cause control flow transfer from being moved.
6768
6769 2007-04-18  Jan Hubicka  <jh@suse.cz>
6770
6771         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
6772         types.
6773
6774 2007-04-18  Eric Christopher  <echristo@apple.com>
6775
6776         * config/rs6000/darwin.md (load_macho_picbase): Use link register
6777         only. Update operands.
6778         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
6779         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
6780         link register to pic register.
6781
6782 2007-04-18  Dirk Mueller  <dmueller@suse.de>
6783
6784         PR diagnostic/31227
6785         * tree-vrp.c (search_for_addr_array): New.
6786         (check_array_bounds): Suppress warning about
6787         address taken of array refs if its not de-referenced.
6788
6789 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6790
6791         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
6792         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
6793
6794         * tree-vectorizer.h (NITERS_KNOWN_P): New.
6795         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
6796         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
6797
6798         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
6799         dump print.
6800         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
6801         print message.
6802         (vect_analyze_scalar_cycles): Fix indentation.
6803         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
6804         (vect_mark_relevant): Include phis in relevance analysis.
6805
6806         * tree-vect-transform.c (vect_transform_loop): Add an assert.
6807
6808 2007-04-18  Anatoly Sokolov <aesok@post.ru>
6809
6810         * config/avr/avr.c (ptrreg_to_str): Replace error() with
6811         output_operand_lossage().
6812
6813 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6814
6815         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
6816         the unused code for reduction without adjust-in-epilog to simplify the
6817         function.
6818
6819 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
6820
6821         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
6822         (S390_TDC_NEGATIVE_ZERO): New constant.
6823         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
6824         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
6825         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
6826         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
6827         (S390_TDC_POSITIVE_INFINITY): New constant.
6828         (S390_TDC_NEGATIVE_INFINITY): New constant.
6829         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
6830         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
6831         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
6832         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
6833         (S390_TDC_INFINITY): New constant.
6834         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
6835         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
6836         optimization for UNSPEC_CCZ_TO_INT.
6837         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
6838         ("*ccz_to_int"): New insn.
6839         ("isinf<mode>2"): New insn.
6840         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
6841         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
6842         (UNSPEC_CCZ_TO_INT): New constant.
6843
6844 2007-04-18  Richard Guenther  <rguenther@suse.de>
6845
6846         PR tree-optimization/19431
6847         PR tree-optimization/21463
6848         * tree-pass.h (pass_phiprop): Declare.
6849         * passes.c (init_optimization_passes): New phiprop pass.
6850         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
6851         (phivn_valid_p): New helper function.
6852         (phiprop_insert_phi): Likewise.
6853         (propagate_with_phi): Likewise.
6854         (tree_ssa_phiprop): New propagator propagating loads
6855         through phi nodes if profitable.
6856
6857 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6858
6859         * tree-vect-analyze.c (process_use): New function.
6860         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
6861         Check phis in all bbs.
6862         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
6863         assert.
6864
6865 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6866
6867         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
6868         we use REG_EQUAL.
6869
6870 2007-04-17  Anatoly Sokolov <aesok@post.ru>
6871
6872         PR target/30483
6873         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
6874         error().
6875
6876 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
6877
6878         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
6879         on "0".
6880         (sse_vmmulv4sf3): Likewise.
6881         (sse2_vmaddv2df3): Likewise.
6882         (sse2_vmmulv2df3): Likewise.
6883
6884 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
6885
6886         PR rtl-optimization/31360
6887         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
6888         (target_reg_cost): New.
6889         (init_set_costs): Initialize target_reg_cost.  Add comments
6890         regarding the rationale of the costs.
6891         (global_cost_for_size): Renamed to...
6892         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
6893         of register pressure.
6894         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
6895         estimate_reg_pressure_cost.  Add number of ivs.
6896         (determine_set_costs): Dump target_reg_cost.
6897         * loop-invariant.c (gain_for_invariant):  Use
6898         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
6899         (best_gain_for_invariant, find_invariants_to_move): Remove
6900         n_inv_uses.
6901         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
6902         (target_reg_cost): Declare.
6903         (global_cost_for_size): Declaration removed.
6904         (estimate_reg_pressure_cost): Declare.
6905
6906 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
6907
6908         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
6909         regnos into even/odd register pairs.
6910         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
6911         TDmode similar to the other floating point modes.
6912         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
6913         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
6914         define_expand's.
6915         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
6916         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
6917         (movdd_hardfloat64): Use TARGET_MFPGPR.
6918
6919 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
6920
6921         * reload1.c (delete_output_reload): Don't count output in n_inherited.
6922
6923         Revert
6924         2005-01-05  Richard Henderson  <rth@redhat.com>
6925         PR rtl-opt/10692
6926         * reload1.c (do_input_reload): Restrict the optimization deleteing
6927         a previous output reload to RELOAD_FOR_INPUT.
6928
6929 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
6930
6931         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
6932         induc_vec_info_type.
6933         (vectorizable_induction): New function declaration.
6934         * tree-vect-transform.c (get_initial_def_for_induction): No need to
6935         check if already vectorized.  Find first place in BB where new stmts
6936         can be inserted.  Takes only one argument.
6937         (vectorizable_induction): New function.
6938         (vect_transform_stmt): Add case for induc_vec_info_type to call
6939         vectorizable_induction.
6940         (vect_transform_loop): Consider phis for vectorization.
6941         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
6942         condition.
6943         (analyze_operations): Call vectorizable_induction when analyzing phis.
6944         Fix comment.
6945         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
6946         (vect_mark_relevant): Include phis in relevance analysis.
6947         (vect_mark_stmts_to_be_vectorize): Likewise.
6948         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
6949
6950 2007-04-16  Lawrence Crowl  <crowl@google.com>
6951
6952         * doc/invoke.texi (Debugging Options): Add documentation for the
6953         -femit-struct-debug options -femit-struct-debug-baseonly,
6954         -femit-struct-debug-reduced, and
6955         -femit-struct-debug-detailed[=...].
6956
6957         * c-opts.c (c_common_handle_option): Add
6958         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
6959         and OPT_femit_struct_debug_detailed_.
6960         * c.opt: Add specifications for
6961         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
6962         and -femit-struct-debug-detailed[=...].
6963         * opts.c (set_struct_debug_option): Parse the
6964         -femit-struct-debug-... options.
6965         * opts.c (matches_main_base, main_input_basename,
6966         main_input_baselength, base_of_path, matches_main_base): Add
6967         variables and functions to compare header base name to compilation
6968         unit base name.
6969         * opts.c (should_emit_struct_debug): Add to determine to emit a
6970         structure based on the option.
6971         (dump_struct_debug) Also disabled function to debug this
6972         function.
6973         * opts.c (handle_options): Save the base name of the
6974         compilation unit.
6975
6976         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
6977         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
6978         This hook indicates if a type is generic.  Set it by default
6979         to "never generic".
6980         * langhooks.h (struct lang_hooks_for_types): Add a new hook
6981         to determine if a struct type is generic or not.
6982         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
6983         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
6984         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
6985         with live C++ hook.
6986
6987         * flags.h (enum debug_info_usage): Add an enumeration to describe
6988         a program's use of a structure type.
6989         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
6990         to indicate the program's usage of the type.  Filter structs based
6991         on the -femit-struct-debug-... specification.
6992         (gen_type_die): Split into two routines, gen_type_die and
6993         gen_type_die_with_usage.  gen_type_die is now a wrapper
6994         that assumes direct usage.
6995         (gen_type_die_with_usage): Replace calls to gen_type_die
6996         with gen_type_die_with_usage adding the program usage of
6997         the referenced type.
6998         (dwarf2out_imported_module_or_decl): Suppress struct debug
6999         information using should_emit_struct_debug when appropriate.
7000
7001 2007-04-16  Ian Lance Taylor  <iant@google.com>
7002
7003         PR tree-optimization/31522
7004         * tree-vrp.c (vr_phi_edge_counts): New static variable.
7005         (vrp_initialize): Allocate vr_phi_edge_counts.
7006         (vrp_visit_phi_node): Don't push to infinity if we saw a new
7007         executable edge.  Drop test for all constants.
7008         (vrp_finalize): Free vrp_phi_edge_counts.
7009
7010         * doc/cpp.texi (Common Predefined Macros): Clarify description of
7011         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
7012
7013         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
7014         predecessors at head rather than tail.
7015
7016 2007-04-16  Matthias Klose  <doko@debian.org>
7017
7018         * config/alpha/linux.h (CPP_SPEC): Define.
7019         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
7020
7021 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
7022
7023         * function.h: Remove sequence_stack extern declaration.
7024
7025 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
7026
7027         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
7028         TARGET_FIDOA.
7029         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
7030         defined.
7031
7032 2007-04-16  Anatoly Sokolov <aesok@post.ru>
7033
7034         * config/avr/avr.c (avr_arch_types): Rearranging  array.
7035         (enum avr_arch): Add.
7036         (avr_mcu_types): Use avr_arch enumeration constants instead of
7037         numbers.
7038         * config/avr/avr.h (LINK_SPEC): Simplify.
7039
7040 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
7041
7042         * config/m68k/m68k.c (m68k_libcall_value,
7043         m68k_function_value): Use macros for register names more.
7044
7045         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
7046         instead.
7047         (M68K_REGNAME): Use A6_REG.
7048         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
7049
7050 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7051
7052         PR middle-end/28071
7053         * sched-int.h (struct deps): Split field 'pending_lists_length' into
7054         'pending_read_list_length' and 'pending_write_list_length'.  Update
7055         comment.
7056         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
7057         to handle two length counters instead of one.  Update all uses.
7058         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
7059         two length counters instead of one.
7060         * sched-rgn.c (propagate_deps): Update to handle two length counters
7061         instead of one.
7062
7063 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
7064
7065         PR target/31582
7066         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
7067         copy of source, pass it to ix86_expand_vector_set and return
7068         it as target.
7069
7070 2007-04-16  David Ung  <davidu@mips.com>
7071             Joseph Myers  <joseph@codesourcery.com>
7072
7073         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
7074         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
7075         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
7076         Add 74K processor information.
7077         * config/mips/mips.md: Include 74k.md.
7078         (cpu): Add 74kc,74kf,74kx.
7079         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
7080         * config/mips/74k.md: New.
7081         * doc/invoke.texi (MIPS Options): Document 74K support.
7082
7083 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
7084
7085         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
7086         vectorizable_* functions.
7087         * tree-vect-transform.c (vectorizable_call): Add check for
7088         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
7089         (vectorizable_store): likewise.
7090         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
7091         Add comments.
7092         (vectorizable_operation, vectorizable_type_demotion): Likewise.
7093         (vectorizable_type_promotion, vectorizable_load): Likewise.
7094         (vectorizable_live_operation, vectorizable_condition): Likewise.
7095         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
7096         STMT_VINFO_LIVE_P.
7097         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
7098
7099 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7100
7101         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
7102         register numbers more.
7103         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
7104         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
7105         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
7106         FUNCTION_VALUE_REGNO_P): Likewise.
7107         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
7108         STATIC_CHAIN_REGNUM): Likewise.
7109         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
7110         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
7111         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
7112         * config/m68k/m68k.md (FP_REG): New.
7113
7114 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7115
7116         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
7117         alignment on fido.
7118
7119 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7120
7121         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
7122         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
7123         comment typos.
7124
7125 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7126
7127         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
7128         cold loops.
7129
7130 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7131
7132         PR c/31520
7133         * c-decl.c (finish_decl): Grab the type of the decl after the call
7134         to store_init_value.
7135
7136 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
7137
7138         * common.opt (fforward-propagate): Fix "Optimization" annotation.
7139
7140 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
7141
7142         PR c++/25874
7143         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
7144         post dominators and cleanup cfg before returning.
7145
7146 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7147
7148         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
7149         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
7150
7151 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
7152
7153         * config.gcc: Recognize fido.
7154         * config/m68k/m68k-devices.def (fidoa): New.
7155         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
7156         __mfido__.
7157         (FL_FIDOA, TARGET_FIDOA): New.
7158         * config/m68k/m68k.opt (mfidoa): New.
7159
7160 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7161
7162         PR middle-end/31322
7163         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
7164         when a personality function is used.
7165
7166 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
7167
7168         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
7169
7170 2007-04-13  Mike Stump  <mrs@apple.com>
7171
7172         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
7173         we can...
7174         * config/darwin.opt (fapple-kext): Make C++ only.
7175         * config/darwin.c (darwin_override_options): Remove code to ensure
7176         -fapple-kext is given for C++ only.
7177
7178 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
7179
7180         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
7181         * config/mips/mips.c (override_options): Call
7182         SUBTARGET_OVERRIDE_OPTIONS, if defined.
7183
7184 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
7185
7186         * config/i386/i386.opt (msvr3-shlib): Removed.
7187
7188         * doc/invoke.texi: Remove -msvr3-shlib.
7189
7190 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
7191
7192         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
7193         with "popcnt" instruction.
7194
7195 2007-04-13  Richard Guenther  <rguenther@suse.de>
7196
7197         PR tree-optimization/21258
7198         * tree-vrp.c (compare_case_labels): New helper.
7199         (find_switch_asserts): New function.
7200         (find_assert_locations): Call it for SWITCH_EXPRs.
7201
7202 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
7203
7204         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
7205         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
7206         check is now implied in X87_FLOAT_MODE_P.
7207         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7208         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7209         (fix_trunc<mode>_i386_fisttp): Ditto.
7210         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7211         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7212         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7213         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7214         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7215         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7216         (unnamed_splitters): Ditto.
7217         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
7218         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
7219         FIRST_SSE_REG for local functions when SSE math is enabled or
7220         for functions with sseregparm attribute.
7221         (standard_80387_constant_p): Return -1 if mode is not
7222         X87_FLOAT_MODE_P.
7223         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
7224         (ix86_expand_compare): Ditto.
7225         (ix86_expand_carry_flag_compare): Ditto.
7226         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
7227         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
7228         DECIMAL_FLOAT_MODE_P.
7229         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
7230         of SCALAR_FLOAT_MODE_P.
7231         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
7232         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
7233         checks before FLOAT_MODE_P.
7234         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
7235         before FLOAT_MODE_P.
7236         [DIV]: Ditto.
7237         [NEG]: Ditto.
7238         [ABS]: Ditto.
7239         [SQRT]: Ditto.
7240         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
7241
7242 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
7243             Charles Wilson  <libtool@cwilson.fastmail.fm>
7244
7245         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
7246         (libgcc.mvars): Don't depend on them.
7247         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
7248         * exec-tool.in: New.
7249
7250 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
7251
7252         * doc/invoke.text (--help): Document --help=common.
7253
7254 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
7255
7256         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
7257
7258 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7259
7260         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
7261         * genemit.c (main): Emit #include "integrate.h".
7262         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
7263         (LOADGP_RTP): New mips_loadgp_style.
7264         * config/mips/mips.h: Include config/vxworks-dummy.h.
7265         (TARGET_RTP_PIC): New macro.
7266         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
7267         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
7268         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
7269         for TARGET_RTP_PIC.
7270         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
7271         -mvxworks-pic when using -mrtp and a PIC option.
7272         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
7273         for RTP PIC.
7274         (mips_symbolic_constant_p, mips_symbolic_address_p)
7275         (mips_symbol_insns): Handle SYMBOL_HALF.
7276         (override_options): Warn about -G and -mrtp being used together.
7277         Initialize mips_lo_relocs[SYMBOL_HALF].
7278         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
7279         (mips_emit_loadgp): Handle LOADGP_RTP.
7280         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
7281         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
7282         (tablejump): Handle function-relative case table entries if
7283         TARGET_RTP_PIC.
7284         * config/mips/predicates.md (symbol_ref_operand): New predicate.
7285
7286 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7287
7288         * config/mips/mips.md (load_call<mode>): Allow any general register.
7289         destination.
7290         (sibcall_value_internal, sibcall_value_multiple_internal)
7291         (call_value_internal, call_value_split, call_value_multiple_internal)
7292         (call_value_multiple_split): Remove constraints from operand 0.
7293
7294 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7295
7296         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
7297         rather than loadgp_noshared.
7298         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
7299         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
7300         gen_loadgp.
7301         * config/mips/mips.md (loadgp): Rename to...
7302         (loadgp_newabi): ...this.
7303         (loadgp_noshared): Rename to...
7304         (loadgp_absolute): ...this.
7305
7306 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7307
7308         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
7309         false for locally-binding symbols.
7310         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
7311
7312 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7313
7314         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
7315         (SYMBOL_GOT_PAGE_OFST): ...this.
7316         (SYMBOL_GOT_GLOBAL): Rename to...
7317         (SYMBOL_GOT_DISP): ...this.
7318         (SYMBOL_GOTOFF_GLOBAL): Rename to...
7319         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
7320         * config/mips/mips.c (mips_global_symbol_p): New function.
7321         (mips_symbol_binds_local_p): Likewise.
7322         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
7323         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
7324         and mips_symbol_binds_local_p.
7325         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
7326         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
7327         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
7328         SYMBOL_GOTOFF_DISP.
7329         (mips_ok_for_lazy_binding_p): New function.
7330         (mips_load_call_address, mips_expand_call): Use it.
7331         (mips_dangerous_for_la25_p): Likewise.
7332         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
7333         (*got_disp<mode>): Use got_disp_operand instead of
7334         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
7335         SYMBOL_GOTOFF_GLOBAL.
7336         (*got_page<mode>): Use got_page_ofst_operand instead of
7337         local_got_operand.
7338         * config/mips/predicates.md (const_call_insn_operand): Use
7339         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
7340         (global_got_operand): Rename to...
7341         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
7342         SYMBOL_GOT_GLOBAL.
7343         (local_got_operand): Rename to...
7344         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
7345         of SYMBOL_GOT_LOCAL.
7346
7347 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7348
7349         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
7350         TARGET_CALL_CLOBBERED_GP.
7351         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7352         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
7353         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
7354         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
7355         of TARGET_ABICALLS && !TARGET_NEWABI.
7356         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7357         * config/mips/mips.c (mips_load_call_address): Check
7358         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7359         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7360         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7361         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
7362         TARGET_ABICALLS && TARGET_NEWABI.
7363         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
7364         TARGET_ABICALLS.
7365         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
7366         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
7367         TARGET_ABICALLS && TARGET_NEWABI.
7368         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
7369         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
7370         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
7371         whether indirect calls must use $25.
7372         (mips_extra_live_on_entry): Check TARGET_GOT instead of
7373         TARGET_ABICALLS.
7374         * config/mips/mips.md (jal_macro): Check flag_pic and
7375         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
7376         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
7377         instead of TARGET_ABICALLS.
7378         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
7379         TARGET_ABICALLS && TARGET_OLDABI.
7380         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7381         (sibcall): In the comment above the define_insn, mention
7382         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
7383         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
7384         instead of TARGET_ABICALLS.
7385
7386 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
7387
7388         * doc/md.texi (Blackfin family constraints): Document PA and PB.
7389         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
7390         (MACFLAGS_MATCH_P): New macro.
7391         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
7392         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
7393         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
7394         the other MACFLAG constants.
7395         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
7396         (flag_machi): Tighten constraints.  Renumber some of the operands.
7397         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
7398         output template.
7399         (flag_machi_parts_acconly): New pattern.
7400         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
7401         used.
7402         (flag_macinit1hi): Tighten constraints.
7403         (flag_mul_macv2hi_parts_acconly): New pattern.
7404
7405         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
7406         Use a more efficient implementation.
7407         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
7408         inline sequences when not optimizing for size.
7409
7410         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
7411         movhi_high2low): Delete, merge functionality into...
7412         (packv2hi): ... this pattern.
7413
7414         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
7415         * config/bfin/bfin.opt (msim): New option.
7416         (mcpu=): New option.
7417         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
7418         (bfin_cpu_t): Typedef of enum bfin_cpu.
7419         (bfin_cpu_type): New declaration.
7420         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
7421         -msim and -mcpu= options.
7422         (LIB_SPEC): Likewise.
7423         * config/bfin/bfin.c (bfin_cpu_type): Define.
7424         (bfin_handle_option): Handle -mcpu= option.
7425         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
7426         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
7427         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
7428
7429 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7430
7431         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
7432         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
7433         (powerpc-wrs-vxworksae): Use ${tm_file}.
7434         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
7435         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
7436         * config/i386/vx-common.h: New file.
7437
7438 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7439
7440         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
7441         of crt0.o%s.
7442
7443 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
7444
7445         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
7446         ldxtr.
7447
7448 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
7449
7450         PR c++/31078
7451         PR c++/31103
7452         * c-common.c (c_build_qualified_type): Set canonical type
7453         appropriately.
7454
7455 2007-04-12  Richard Guenther  <rguenther@suse.de>
7456
7457         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
7458         lower bound and element size if lower bound is not zero
7459         or either of the ARRAY_REF operands is set.
7460
7461 2007-04-12  Richard Guenther  <rguenther@suse.de>
7462
7463         PR tree-optimization/24689
7464         PR tree-optimization/31307
7465         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
7466         indices by value.
7467         * gimplify.c (canonicalize_addr_expr): To be consistent with
7468         gimplify_compound_lval only set operands two and three of
7469         ARRAY_REFs if they are not gimple_min_invariant.  This makes
7470         it never at this place.
7471         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7472
7473 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7474
7475         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
7476         null before emitting a .nsubspa directive.
7477
7478 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7479
7480         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
7481         need_to_partition_p if there are no memory statements in the
7482         function.
7483
7484 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7485
7486         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
7487         (gcd_of_steps_may_divide_p): New function.
7488         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
7489
7490 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7491
7492         * reload.c (find_reloads_toplev, find_reloads_address,
7493         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
7494         not a pointer equality test, to decide if we need to call
7495         push_reg_equiv_alt_mem.
7496
7497 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
7498
7499         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
7500         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
7501         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
7502
7503 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7504
7505         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
7506         vector to be positive.
7507
7508 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7509
7510         PR 30735
7511         PR 31090
7512         * doc/invoke.texi: Document --params max-aliased-vops and
7513         avg-aliased-vops.
7514         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
7515         debug_memory_partitions): Move to tree-flow.h
7516         * params.h (AVG_ALIASED_VOPS): Define.
7517         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
7518         users.
7519         (mp_info_t): Likewise.
7520         (get_mem_sym_stats_for): New.
7521         (set_memory_partition): Move from tree-flow-inline.h.
7522         (mark_non_addressable): Only clear the set of symbols for the
7523         partition if it exists.
7524         (dump_memory_partitions): Move from tree-ssa-operands.c
7525         (debug_memory_partitions): Likewise.
7526         (need_to_partition_p): New.
7527         (dump_mem_ref_stats): New.
7528         (debug_mem_ref_stats): New.
7529         (dump_mem_sym_stats): New.
7530         (debug_mem_sym_stats): New.
7531         (update_mem_sym_stats_from_stmt): New.
7532         (compare_mp_info_entries): New.
7533         (mp_info_cmp): Call it.
7534         (sort_mp_info): Change argument to a list of mem_sym_stats_t
7535         objects.
7536         (get_mpt_for): Move from tree-ssa-operands.c.
7537         (find_partition_for): New.
7538         (create_partition_for): Remove.
7539         (estimate_vop_reduction): New.
7540         (update_reference_counts): New.
7541         (build_mp_info): New.
7542         (compute_memory_partitions): Refactor.
7543         Document new heuristic.
7544         Call build_mp_info, update_reference_counts,
7545         find_partition_for and estimate_vop_reduction.
7546         (compute_may_aliases): Populate virtual operands before
7547         calling debugging dumps.
7548         (delete_mem_sym_stats): New.
7549         (delete_mem_ref_stats): New.
7550         (init_mem_ref_stats): New.
7551         (init_alias_info): Call it.
7552         (maybe_create_global_var): Remove alias_info argument.
7553         Get number of call sites and number of pure/const call sites
7554         from gimple_mem_ref_stats().
7555         (dump_alias_info): Call dump_memory_partitions first.
7556         (dump_points_to_info_for): Show how many times a pointer has
7557         been dereferenced.
7558         * opts.c (decode_options): For -O2 set --param
7559         max-aliased-vops to 500.
7560         For -O3 set --param max-aliased-vops to 1000 and --param
7561         avg-aliased-vops to 3.
7562         * fortran/options.c (gfc_init_options): Remove assignment to
7563         MAX_ALIASED_VOPS.
7564         * tree-flow-inline.h (gimple_mem_ref_stats): New.
7565         * tree-dfa.c (dump_variable): Dump memory reference
7566         statistics.
7567         Dump NO_ALIAS* settings.
7568         (referenced_var_lookup): Tidy.
7569         (mem_sym_stats): New.
7570         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
7571         and ORIG are different SSA names for a memory partition.
7572         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
7573         * tree-flow.h (struct mem_sym_stats_d): Define.
7574         (mem_sym_stats_t): Define.
7575         (struct mem_ref_stats_d): Define.
7576         (struct gimple_df): Add field mem_ref_stats.
7577         (enum noalias_state): Define.
7578         (struct var_ann_d): Add bitfield noalias_state.
7579         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
7580         debug_mem_ref_stats, debug_memory_partitions,
7581         debug_mem_sym_stats): Declare.
7582         * tree-ssa-structalias.c (update_alias_info): Update call
7583         sites, pure/const call sites and asm sites in structure
7584         returned by gimple_mem_ref_stats.
7585         Remove local variable IS_POTENTIAL_DEREF.
7586         Increase NUM_DEREFS if the memory expression is a potential
7587         dereference.
7588         Call update_mem_sym_stats_from_stmt.
7589         If the memory references memory, call
7590         update_mem_sym_stats_from_stmt for all the direct memory
7591         symbol references found.
7592         (intra_create_variable_infos): Set noalias_state field for
7593         pointer arguments according to the value of
7594         flag_argument_noalias.
7595         * tree-ssa-structalias.h (struct alias_info): Remove fields
7596         num_calls_found and num_pure_const_calls_found.
7597         (update_mem_sym_stats_from_stmt): Declare.
7598         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
7599         Set default value to 100.
7600         (PARAM_AVG_ALIASED_VOPS): Define.
7601
7602 2007-04-11  Richard Guenther  <rguenther@suse.de>
7603
7604         PR middle-end/31530
7605         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
7606         a * -b + c as c - a * b if we honor sign dependent rounding.
7607
7608 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7609
7610         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
7611         bfin_expand_strmov.
7612         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
7613         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
7614         variables.
7615         (initialize_trampoline): Don't use old-style function definition.
7616         (bfin_secondary_reload): Mark IN_P argument as unused.
7617
7618 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
7619
7620         PR tree-optimization/31343
7621         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
7622         (build_polynomial_chrec): Return a scalar when the evolution is zero.
7623         * testsuite/gcc.dg/vect/pr31343.c: New.
7624
7625 2007-04-10  Eric Christopher  <echristo@apple.com>
7626
7627         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
7628         * config/i386/i386.md (*cmpfp0): Use.
7629         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7630         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7631         (fix_trunc<mode>_i386_fisttp): Ditto.
7632         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7633         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7634         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7635         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7636         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7637         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7638         (unnamed_splitters): Ditto.
7639         * config/i386/i386.c (output_fix_trunc): Assert that
7640         we're not being passed a TFmode operand.
7641
7642 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
7643
7644         PR tree-optimization/31526
7645         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
7646         n_basic_blocks to find newly added blocks.
7647
7648 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
7649
7650         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
7651         alternative.
7652         (fix_trunc<mode>si_sse): Ditto.
7653         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
7654         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
7655         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
7656         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
7657         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
7658         expander using SSEMODEF mode macro.
7659         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
7660         expander using SSEMODEF mode macro.
7661         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
7662         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
7663         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
7664         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
7665         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
7666         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
7667         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
7668         Macroize insn using X87MODEF mode macro.
7669
7670 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7671
7672         * config/i386/sse.md (sse2_pinsrw): Removed.
7673         (sse2_pextrw): Renamed to ...
7674         (*sse2_pextrw): This.
7675
7676 2007-04-09  Jan Hubicka  <jh@suse.cz>
7677
7678         PR target/27869
7679         * config/i386/sse.md
7680         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
7681         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
7682         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
7683         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
7684
7685 2007-04-09  Jan Hubicka  <jh@suse.cz>
7686
7687         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
7688         multiple fields of union.
7689
7690 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
7691
7692         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
7693         (create_preheaders): Check that loops are available.
7694         (fix_loop_structure): Clean up, improve comments.
7695         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
7696         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
7697         state flags.
7698         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
7699         * predict.c (tree_estimate_probability): Do not call
7700         calculate_dominance_info.  Call create_preheaders.
7701         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
7702         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
7703         flags.
7704         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
7705         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
7706         * tree-cfg.c (tree_split_edge): Make an assert more precise.
7707         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
7708         arguments.
7709
7710 2007-04-08  Jan Hubicka  <jh@suse.cz>
7711
7712         * tree.h (maybe_fold_offset_to_component_ref): Declare.
7713         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
7714         * fold-const.c (fold_unary): Use it.
7715
7716 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7717
7718         * varasm.c (assemble_variable): Remove call to
7719         lang_hooks.decls.prepare_assemble_variable.
7720         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
7721         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
7722         * langhooks.h (lang_hooks_for_decls): Remove
7723         prepare_assemble_variable.
7724
7725 2007-04-08  Mike Stump  <mrs@apple.com>
7726
7727         * config/i386/i386.c: Use inc/dec on Core2.
7728
7729 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
7730
7731         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
7732         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7733         lhd_tree_inlining_end_inlining): Remove.
7734         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
7735         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
7736         end_inlining hooks.
7737         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
7738         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7739         lhd_tree_inlining_end_inlining): Remove prototypes.
7740         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
7741         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
7742         LANG_HOOKS_TREE_INLINING_START_INLINING,
7743         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
7744
7745         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
7746         not set it.
7747
7748 2007-04-08  Anatoly Sokolov <aesok@post.ru>
7749
7750         PR target/29932
7751         * config/avr/predicates.md (io_address_operand): Delete predicate.
7752         (low_io_address_operand): Don't use 'mode' argument.
7753         (higth_io_address_operand): Rename ...
7754         (high_io_address_operand): ... to this. Don't use 'mode' argument.
7755         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
7756         for above change.
7757
7758 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
7759
7760         Revert change removing staticp.
7761
7762 2007-04-07  Anatoly Sokolov <aesok@post.ru>
7763
7764         PR target/30289
7765         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
7766         earlyclobber.
7767
7768 2007-04-07  Bruce Korb  <bkorb@gnu.org>
7769
7770         * c.opt: Add -Wformat-contains-nul.
7771         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
7772           -Wformat setting.
7773         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
7774         the NUL byte warning.
7775
7776 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
7777
7778         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
7779
7780 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7781
7782         * tree.c (staticp): No longer use staticp langhook.
7783         * langhooks.c (lhd_staticp): Removed.
7784         * langhooks.h (struct lang_hooks): Remove staticp.
7785         * c-common.c (c_staticp): Remove.
7786         * c-common.h (c_staticp): Ditto.
7787         * langhooks-defs.h (lhd_staticp): Ditto.
7788         (LHD_HOOKS_STATICP): Ditto
7789         * tree.h (gcc_assert_lowered): New macro.
7790
7791 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
7792
7793         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
7794         argument "reliable".
7795         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
7796         Add argument "reliable".  Propagate it through calls.
7797         (infer_loop_bounds_from_undefined):  Derive number of iterations
7798         estimates from references in blocks that do not dominate loop latch.
7799         (gcov_type_to_double_int): New function.
7800         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
7801         and expected_loop_iterations_unbounded.
7802         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
7803         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
7804         * tree-data-ref.c (estimated_loop_iterations): Export.
7805         (get_references_in_stmt): Fix -- do not return addresses of local
7806         objects.
7807         * cfgloop.h (expected_loop_iterations_unbounded,
7808         estimated_loop_iterations): Declare.
7809
7810 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
7811
7812         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7813
7814 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7815
7816         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
7817         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
7818         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
7819         Use output_387_reg_move().
7820         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
7821         expander using X87MODEF12 mode macro.
7822         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
7823         choosing register preferences.  Use output_387_reg_move().
7824         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
7825         instead of "x".  Use output_387_reg_move().
7826         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
7827         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
7828         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
7829         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
7830         Use output_387_reg_move().
7831         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
7832         mode macro.
7833         (*truncxf?f_i387 splitter): Ditto.
7834
7835 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7836
7837         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
7838         LANG_HOOKS_SAFE_FROM_P.
7839         * expr.c (safe_from_p): Remove langhook call.
7840         * langhooks.h (lang_hooks): Remove safe_from_p.
7841         (lhd_safe_from_p): Remove prototype.
7842         * langhooks.c (lhd_safe_from_p): Remove.
7843
7844 2007-04-06  Jan Hubicka  <jh@suse.cz>
7845
7846         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
7847         functions.
7848
7849 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7850
7851         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
7852         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
7853         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
7854         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
7855         alternative.
7856         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
7857         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
7858
7859 2007-04-05  Richard Henderson  <rth@redhat.com>
7860
7861         * config/alpha/alpha.c (print_operand) [+]: Remove.
7862         (alpha_end_function): Print nop if call at end of function.
7863         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
7864         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
7865         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
7866         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
7867         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
7868         the call pattern. Update peepholes to match.
7869
7870 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
7871
7872         * doc/extend.texi (Other Builtins): Add decimal float variants
7873         of signbit.
7874         * builtins.def: Ditto.
7875         * builtins.c (expand_builtin): Ditto.
7876
7877 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
7878             H.J. Lu  <hongjiu.lu@intel.com>
7879
7880         PR target/31478
7881         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
7882         of V8HImode when calling ix86_binary_operator_ok.
7883         (sse2_pmaddwd): Call ix86_binary_operator_ok.
7884         (sdot_prodv8hi): Operands 1 and 2 must be register.
7885
7886 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7887
7888         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
7889         initialize align to silence bogus warning.
7890
7891 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7892
7893         PR middle-end/22156
7894         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
7895         all_no_warning.
7896         (struct sra_walk_fns): Remove use_all parameter from use.
7897         (sra_hash_tree): Handle BIT_FIELD_REFs.
7898         (sra_elt_hash): Don't hash bitfld blocks.
7899         (sra_elt_eq): Skip them in parent compares as well.  Handle
7900         BIT_FIELD_REFs.
7901         (sra_walk_expr): Don't maintain or pass down use_all_p.
7902         (scan_use): Remove use_all parameter.
7903         (scalarize_use): Likewise.  Re-expand assignment to
7904         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
7905         output, and re-scalarize after output.  Don't mark anything
7906         for no warning.
7907         (scalarize_ldst): Adjust.
7908         (scalarize_walk_gimple_modify_statement): Likewise.
7909         (build_element_name_1): Handle BIT_FIELD_REFs.
7910         (instantiate_element): Don't warn for any element whose parent
7911         is used as a whole.
7912         (instantiate_missing_elements_1): Return the sra_elt.
7913         (canon_type_for_field): New.
7914         (try_instantiate_multiple_fields): New.
7915         (instantiate_missing_elemnts): Use them.
7916         (mark_no_warning): Removed.
7917         (generate_one_element_ref): Handle BIT_FIELD_REFs.
7918         (REPLDUP, sra_build_elt_assignment): New.
7919         (generate_copy_inout): Use them.
7920         (generate_element_copy): Likewise.  Handle bitfld differences.
7921         (generate_element_zero): Don't recurse for blocks.  Use
7922         sra_build_elt_assignment.
7923         (generate_one_element_int): Take elt instead of var.  Use
7924         sra_build_elt_assignment.
7925         (generate_element_init_1): Adjust.
7926         (scalarize_use, scalarize_copy): Use REPLDUP.
7927         (scalarize_ldst): Move assert before dereference.
7928         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
7929
7930 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7931
7932         * regmove.c: Fix unused variable warnings due to previous commit.
7933
7934 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7935
7936         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
7937         (regmove_bb_head): Remove.
7938         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
7939         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
7940         problems with fixup_match_1.
7941         Don't initialize/free regmove_bb_head.
7942
7943         (reg_is_remote_constant_p): If an insn is in the same basic block
7944         but not before INSN, consider it remote, too.
7945
7946 2007-04-05  Anatoly Sokolov <aesok@post.ru>
7947
7948         PR target/25448
7949         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
7950         DECL_ASSEMBLER_NAME, not the DECL_NAME.
7951
7952 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
7953
7954         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
7955         (CONDITIONAL_REGISTER_USAGE): Likewise.
7956
7957 2007-04-04  Richard Henderson  <rth@redhat.com>
7958
7959         * config/alpha/lib1funcs.asm: Remove unused file.
7960
7961 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7962
7963         PR other/31356
7964         * opts.c (print_specific_help): Fix --help=<language>
7965         header line.
7966         (common_handle_option): Support --help=common.
7967
7968 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7969
7970         PR other/31353
7971         * gcc.c (main): Do not run the linker if
7972         print_subprocess_help indicates that it shouldn't be
7973         run.
7974
7975 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7976
7977         PR doc/31355
7978         * doc/invoke.texi (--help=): Document <languages> value, fix
7979         formatting in tables of values.
7980
7981 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
7982
7983         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
7984         dllimport attribute of virtual methods.
7985
7986 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
7987
7988         * config/score/crti.asm: Change _bss_start to __bss_start.
7989         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
7990         (OUTGOING_REG_PARM_STACK_SPACE) update.
7991         * config/score/score.opt: add options to make backend support
7992         score5, score5u, score7 and score7d.
7993         * config/score/score.md: Likewise.
7994         * config/score/misc.md: Likewise.
7995         * config/score/mac.md: Likewise.
7996         * doc/invoke.texi: Likewise.
7997         * doc/md.texi: update constraints define.
7998
7999 2007-04-03  Richard Henderson  <rth@redhat.com>
8000
8001         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
8002         an appropriate type, use the mode instead.
8003
8004 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
8005
8006         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
8007         Set the default --with-arch setting to mips2.
8008         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
8009         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
8010         (MULTILIB_OSDIRNAMES): Delete.
8011         (MULTILIB_DIRNAMES): Define.
8012         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
8013         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
8014         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
8015         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
8016         VXWORKS_OS_CPP_BUILTINS.
8017         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
8018         (MIPS_DEBUGGING_INFO): Undefine.
8019         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
8020
8021 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
8022
8023         PR middle-end/30704
8024         * fold-const.c (native_encode_real): Encode real.c provided longs
8025         as a series of 32-bit native integers.
8026         (native_interpret_real): Interpret buffer as a series of 32-bit
8027         native integers.
8028
8029 2007-04-03  Richard Guenther  <rguenther@suse.de>
8030
8031         * genpreds.c (write_insn_constraint_len): Write function
8032         optimized for CONSTRAINT_LEN implementation.
8033         (write_tm_preds_h): Output insn_constraint_len inline and
8034         use it for CONSTRAINT_LEN.
8035         (write_insn_preds_c): Don't output insn_constraint_len.
8036         * doc/md.texi (define_register_constraint): Document multi-letter
8037         constraints shall have the same length if they start with the same
8038         letter.
8039
8040 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
8041
8042         PR target/31175
8043         * config/i386/i386.md (isinf<mode>2): Expand only when
8044         TARGET_C99_FUNCTIONS is set.
8045
8046 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
8047
8048         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
8049         (x86_64-*-linux*): Ditto.
8050         * config/i386/i386.opt (mpc): New option.
8051         * config/i386/i386.c (overrride_options): Handle
8052         ix87_precision_string.
8053         * config/i386/crtprec.c: New file.
8054         * config/i386/t-crtpc: Ditto.
8055         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
8056         and -mpc80 options.
8057         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
8058         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
8059         crtprec32.o, crtprec64.o and crtprec80.o.
8060
8061         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
8062         and -mpc80 options.
8063         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
8064
8065 2007-04-02  Eric Christopher  <echristo@apple.com>
8066
8067         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
8068         limitations on darwin.
8069
8070 2007-04-02  Anatoly Sokolov <aesok@post.ru>
8071
8072         PR target/31137
8073         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
8074
8075 2007-04-02  Dave Korn  <dave.korn@artimi.com>
8076
8077         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
8078
8079 2007-04-02  Dave Korn  <dave.korn@artimi.com>
8080
8081         * libgcc2.h (exception_descriptor): Don't forward-declare.
8082         (__get_eh_table_language, __get_eh_table_version): Delete
8083         prototypes of long-dead functions.
8084
8085 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
8086
8087         * ebitmap.h: New file
8088         * ebitmap.c: New file
8089         * Makefile.in (ebitmap.o): New target.
8090
8091 2007-04-01  Jan Hubicka  <jh@suse.cz>
8092
8093         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
8094         before very first instruction.
8095
8096 2007-04-01  Jan Hubicka  <jh@suse.cz>
8097
8098         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
8099         waring on 64bit hosts.
8100         * bitmap.h: Fix typo in bitmap_head_def.
8101
8102 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
8103
8104         PR rtl-optimization/31391
8105         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
8106         into a DELETED_LABEL note, and the label is in an empty basic
8107         block, update BB_END as well as BB_HEAD.
8108
8109 2007-04-01  Richard Henderson  <rth@redhat.com>
8110
8111         PR tree-optimization/31169
8112         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
8113         to varying if the range is outside [0,  prec-1].
8114
8115 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
8116
8117         PR target/31388
8118         * config/mips/mips.md (load_const_gp): New insn.
8119         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
8120         the MIPS16 GP pseudo register if no_new_pseudos.
8121         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
8122
8123 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8124
8125         PR target/31364
8126         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
8127         secureplt.
8128         (call_value): Likewise.
8129
8130 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
8131             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8132
8133         PR 14737
8134         * doc/invoke.texi: (optimization options): Reword description
8135         of -ffast-math. Document its primary purpose.
8136
8137 2007-03-31  Richard Guenther  <rguenther@suse.de>
8138
8139         * omp-low.c (splay-tree.h): Include.
8140         (lookup_decl): Replace splay-tree usage by pointer-map.
8141         (maybe_lookup_decl): Likewise.
8142         (new_omp_context): Likewise.
8143         (delete_omp_context): Likewise.
8144         * gimplify.c (splay-tree.h): Include.
8145         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
8146         pointer-map.
8147         (remap_ssa_name): Likewise.
8148         (remap_decl): Likewise.
8149         (remap_type_1): Likewise.
8150         (remap_type): Likewise.
8151         (copy_body_r): Likewise.
8152         (expand_call_inline): Likewise.
8153         (clone_body): Likewise.
8154         (copy_tree_r): Likewise.
8155         (remap_save_expr): Likewise.
8156         (unsave_r): Likewise.
8157         (unsave_expr_now): Likewise.
8158         (tree_function_versioning): Likewise.
8159         (build_duplicate_type): Likewise.
8160         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
8161         (struct copy_body_data): Replace splay-tree by pointer-map.
8162         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
8163         not $(SPLAY_TREE_H).
8164         (gimplify.o): Depend on $(SPLAY_TREE_H).
8165         (omp-low.p): Likewise.
8166
8167 2007-03-31  Anatoly Sokolov <aesok@post.ru>
8168
8169         * config/avr/predicates.md (even_register_operand,
8170         odd_register_operand): New predicates.
8171         * config/avr/avr.md (movw peephole2): New.
8172         (movw_r peephole2): New.
8173
8174 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
8175
8176         * tree.h (get_signed_or_unsigned_type): New.
8177         * fold-const.c (operand_equal_for_comparison_p): Use
8178         get_signed_or_unsigned_type instead of
8179         lang_hooks.types.signed_or_unsigned_type.
8180         * expr.c (store_expr): Ditto.
8181         * langhooks.c (get_signed_or_unsigned_type): New.
8182         (lhd_signed_or_unsigned_type): New.
8183         * langhooks.h (lhd_signed_or_unsigned_type): New.
8184         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
8185
8186 2007-03-30  Richard Henderson  <rth@redhat.com>
8187
8188         * tree-ssa-loop-ivopts.c: Include target.h.
8189         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
8190         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
8191         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
8192         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
8193
8194 2007-03-30  Richard Henderson  <rth@redhat.com>
8195             Kai Tietz  <kai.tietz@onevision.com>
8196
8197         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
8198         default for 64-bit.
8199         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
8200         (TARGET_64BIT_MS_ABI): New.
8201         (DBX_REGISTER_NUMBER): Handle 64-bit.
8202         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
8203         (LONG_TYPE_SIZE): Force to 32.
8204         (REG_PARM_STACK_SPACE): New.
8205         (OUTGOING_REG_PARM_STACK_SPACE): New.
8206         (REGPARM_MAX, SSE_REGPARM_MAX): New.
8207         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
8208         (STACK_BOUNDARY): Use 128 for 64-bit.
8209         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
8210         Add 64-bit implementation.
8211         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
8212         argument unused.
8213         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
8214         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
8215         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
8216         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
8217         (ix86_handle_cconv_attribute): Don't warn when ignoring if
8218         TARGET_64BIT_MS_ABI.
8219         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
8220         (ix86_pass_by_reference): Likewise.
8221         (ix86_function_value_regno_p): Likewise.
8222         (ix86_build_builtin_va_list): Likewise.
8223         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
8224         (function_arg_advance_ms_64): New.
8225         (function_arg_advance): Call it.
8226         (function_arg_ms_64): New.
8227         (function_arg): Call it.
8228         (function_value_ms_64): New.
8229         (ix86_function_value_1): Call it.
8230         (return_in_memory_ms_64): New.
8231         (ix86_return_in_memory): Call it.
8232         (setup_incoming_varargs_ms_64): New.
8233         (ix86_setup_incoming_varargs): Call it.
8234         (ix86_expand_prologue): Handle 64-bit stack probing.
8235         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
8236         (output_pic_addr_const): Likewise.
8237         (x86_this_parameter): Likewise.
8238         (x86_output_mi_thunk): Likewise.
8239         (x86_function_profiler): Likewise.
8240         (TARGET_STRICT_ARGUMENT_NAMING): New.
8241         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
8242         (TARGET_64BIT_MS_ABI): New.
8243         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
8244         * config/i386/i386.md (allocate_stack_worker): Remove.
8245         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
8246         describe the clobber of eax without a match_scratch.
8247         (allocate_stack_worker_postreload): Remove.
8248         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
8249         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
8250         (allocate_stack_worker_rex64_postreload): Remove.
8251         (allocate_stack): Handle 64-bit.
8252         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
8253         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
8254         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
8255         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
8256         (STANDARD_STARTFILE_PREFIX_1): Likewise.
8257         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
8258         * config.build (x86_64-*-mingw*): New host.
8259         * config.host (x86_64-*-mingw*): New host.
8260         * config.gcc (x86_64-*-mingw*): New target.
8261         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
8262
8263 2007-03-30  Richard Henderson  <rth@redhat.com>
8264             Kai Tietz  <kai.tietz@onevision.com>
8265
8266         * c-pragma.c (struct def_pragma_macro_value): New.
8267         (struct def_pragma_macro): New.
8268         (pushed_macro_table): New.
8269         (dpm_hash, dpm_eq): New.
8270         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
8271         (init_pragma): Install them.
8272         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
8273
8274 2007-03-30  Anatoly Sokolov <aesok@post.ru>
8275
8276         * config/avr/avr.c (avr_override_options): Clear
8277         'flag_delete_null_pointer_checks'.
8278
8279 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
8280
8281         PR c++/26099
8282         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
8283         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
8284         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
8285         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
8286         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
8287         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
8288         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
8289         C++ extensions.
8290         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
8291
8292 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
8293
8294         * regmove.c: Move all of pass_stack_adjustments from here...
8295         * combine-stack-adj.c: ...to this new file.
8296         * Makefile.in: Add rules for combine-stack-adj.o.
8297
8298 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
8299
8300         PR tree-optimization/31383
8301         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
8302         to have the same length.
8303
8304 2007-03-30  Jan Hubicka  <jh@suse.cz>
8305
8306         PR middle-end/30700
8307         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
8308         availablility; add more sanity checking; ask varpool only about
8309         VAR_DECL.
8310
8311 2007-03-29  Richard Henderson  <rth@redhat.com>
8312
8313         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
8314         to decide, but __SIZEOF_LONG_LONG__.
8315
8316 2007-03-29  Richard Henderson  <rth@redhat.com>
8317
8318         * emutls.c (struct __emutls_array): New.
8319         (emutls_destroy): Use it instead of casting element 0 from void*.
8320         (__emutls_get_address): Likewise.
8321
8322 2007-03-29  Richard Henderson  <rth@redhat.com>
8323
8324         * varasm.c (initializer_constant_valid_p): Don't deny
8325         DECL_DLLIMPORT_P on functions.
8326
8327         * config/i386/cygming.h: Remove function declarations.
8328         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
8329         (ASM_OUTPUT_LABELREF): Remove.
8330         (COMMON_ASM_OP): Remove.
8331         (ASM_OUTPUT_COMMON): Remove.
8332         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
8333         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
8334         (ASM_DECLARE_FUNCTION_NAME): Likewise.
8335         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
8336         Rename from TARGET_ENCODE_SECTION_INFO.
8337         * config/i386/netware.h: Likewise.
8338         * config/i386/i386-protos.h: Update.
8339         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
8340         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
8341         (legitimate_constant_p): Reject dllimports.
8342         (dllimport_map, get_dllimport_decl): New.
8343         (legitimize_dllimport_symbol): New.
8344         (legitimize_address, ix86_expand_move): Use it.
8345         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
8346         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
8347         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
8348         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
8349         * config/i386/predicates.md (constant_call_address_operand): Only
8350         accept symbols; reject dllimport_p symbols.
8351         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
8352         i386_pe_maybe_record_exported_symbol.
8353         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
8354         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
8355         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
8356         trust the setting of DECL_DLLIMPORT_P.
8357         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
8358         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
8359         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
8360         tidy the argument scanning loop.
8361         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
8362         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
8363         (i386_pe_strip_name_encoding): Remove.
8364         (i386_pe_binds_local_p): New.
8365         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
8366         (i386_pe_output_labelref): Remove.
8367         (i386_pe_asm_output_aligned_decl_common): New.
8368         (i386_pe_maybe_record_exported_symbol): Rename from
8369         i386_pe_record_exported_symbol; check for dllexported symbols.
8370
8371 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
8372
8373         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
8374         add comment explaining why vsnprintf cannot be used.
8375
8376 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
8377
8378         PR tree-optimization/30666
8379         * tree.c (build_complex_type): When creating type names for DWARF2
8380         debug info, create TYPE_DECLs for TYPE_NAME instead of
8381         IDENTIFIER_NODEs.
8382         (build_common_tree_nodes_2): Use build_complex_type when building
8383         predefined complex types, to preserve canonical types.
8384
8385 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
8386
8387         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
8388         (noce_get_alt_condition): Look at it to determine whether to
8389         reverse the condition or not.
8390         (noce_get_condition): Substitute the truth for lies.
8391         (noce_find_if_block): Set the then_else_reversed field.
8392
8393 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
8394
8395         * config/fr30/fr30.md (movdi): Do not accept immediates as the
8396         destination of this insn.
8397         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
8398         than calling gen_rtx_SET directly.  Use r0 to hold the value of
8399         'address + 4' rather than a stack based temporary which can be
8400         mis-optimized away.
8401
8402 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8403
8404         * config/s390/s390.c (s390_secondary_input_reload_class,
8405         s390_secondary_output_reload_class): Functions removed.
8406         (s390_secondary_reload): New function.
8407         (TARGET_SECONDARY_RELOAD): Target macro defined.
8408         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
8409         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
8410         * config/s390/s390.md ("reload_outti", "reload_outdi",
8411         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
8412         "reload_out<mode>"): Expanders removed.
8413         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
8414         "reload<mode>_nonoffmem_out"): Expanders added.
8415
8416 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8417
8418         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
8419         SRC->DEST replacement failed anyway.
8420
8421 2007-03-28  Mike Stump  <mrs@apple.com>
8422
8423         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
8424         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
8425         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
8426
8427 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
8428
8429         * config.gcc: Accept barcelona as a variant of amdfam10.
8430         * config/i386/i386.c (override_options): Likewise.
8431         * doc/invoke.texi: Likewise.
8432
8433 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
8434
8435         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
8436         offsets for BIT_FIELD_REF and COMPONENT_REF.
8437
8438 2007-03-28  Richard Guenther  <rguenther@suse.de>
8439
8440         * tree.c (is_global_var): Move ...
8441         * tree-flow-inline.h (is_global_var): ... here.
8442         * tree.h (is_global_var): Remove declaration.
8443
8444 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
8445
8446         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
8447         option.
8448         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
8449         * config/i386/i386.c (ix86_tune_features): Initialize new
8450         tuning option.
8451         * config/i386/predicates.md (promotable_binary_operator): Use
8452         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
8453
8454 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
8455
8456         PR target/31380
8457         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
8458
8459 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
8460
8461         * config/fr30/fr30.md (movsi_internal): Change destination
8462         constraint from m to V and add m to the end.
8463
8464 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8465
8466         * config/sh/sh.md (movsi_i): Fix type attribute.
8467
8468 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8469
8470         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
8471         (movsf_ie): Likewise.
8472
8473 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8474
8475         * config.gcc: Add sh4-300 to multilib.
8476         * config/sh/t-mlib-sh4-300: New file.
8477
8478 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
8479
8480         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
8481         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
8482         fix_trunc<mode>di2.
8483         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
8484         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
8485         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
8486         "fixuns_trunctddi2"): Whitespace fix.
8487
8488 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
8489
8490         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
8491         the definition of struct sh_args.
8492         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
8493         CALL_COOKIE_INT_REG_GET): Likewise.
8494
8495 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
8496
8497         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
8498         transformations are applied successfully.
8499
8500 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
8501
8502         * tree.c (tree_contains_struct): Permit 512 tree codes.
8503         * tree.h (tree_contains_struct): Ditto.
8504         (MAX_TREE_CODES): Ditto.
8505         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
8506         SPARE member to store remaining padding bits.
8507
8508 2007-03-27  Anatoly Sokolov <aesok@post.ru>
8509
8510         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
8511         architecture.
8512
8513 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
8514
8515         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
8516         * configure: Regenerate.
8517
8518         * configure: Regenerate using the correct version of autoconf.
8519
8520 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
8521
8522         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
8523         pointer regs.
8524         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
8525         regs to "__SP_L__" and "__SP_H__".
8526
8527 2007-03-27  Richard Guenther  <rguenther@suse.de>
8528
8529         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
8530         computations with it with a HOST_WIDE_INT variable.
8531
8532 2007-03-26  Mike Stump  <mrs@apple.com>
8533
8534         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
8535         objective-c-header, objective-c++-header and objc++-cpp-output
8536         support.
8537         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
8538
8539 2007-03-26  Richard Henderson  <rth@redhat.com>
8540
8541         PR target/31361
8542         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
8543         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
8544         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
8545         IX86_BUILTIN_PSRLQ128): New.
8546         (ix86_init_mmx_sse_builtins): Add them.
8547         (ix86_expand_builtin): Expand them.
8548         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
8549         operand 2 be TImode.
8550         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
8551         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
8552         _mm_srli_epi64): Mark __B const.
8553         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
8554         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
8555         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
8556         new two-vector shift builtins.
8557
8558 2007-03-26  Ian Lance Taylor  <iant@google.com>
8559
8560         PR tree-optimization/31345
8561         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
8562         [+INF, +INF(OVF)] into VARYING.
8563
8564 2007-03-26  Zack Weinberg  <zackw@panix.com>
8565
8566         * gengtype-parse.c: New file.
8567         * gengtype-yacc.y: Delete.
8568         * gengtype-lex.l: Don't include gengtype-yacc.h.
8569         Define YY_DECL and yyterminate appropriately for recursive
8570         descent parser.  yylval is now a string out-parameter to yylex.
8571         (HWS, EOID): New shorthand.
8572         (IWORD): Add a couple more types.
8573         (yylex): Add a setup stanza.  Remove the complex rules for
8574         detecting GTY'ed types and typedefs; replace with simple
8575         keyword detectors.  Adjust everything for the changed
8576         definition of yylval.  Ignore all pp-directives, not just #define.
8577         (yyerror): Delete.
8578         (parse_file): Rename yybegin; do not call yyparse.
8579         (yyend): New.
8580         * gengtype.c (xasprintf): Export again.
8581         (this_file): New.  Use everywhere __FILE__ was being used.
8582         (get_lang_bitmap): Special case types defined in gengtype.c.
8583         (do_typedef, new_structure): Suppress definition of certain types.
8584         (new_structure): Improve diagnostics of duplicate definitions.
8585         Make sure location_s is associated with input.h.
8586         (nreverse_pairs, define_location_structures): New functions.
8587         (main): Improve tagging of kludge types.  Remove old kludges
8588         for input.h types; use define_location_structures.
8589         * gengtype.h: Update prototypes.  Define token codes here.
8590         * Makefile.in: Remove all references to gengtype-yacc.
8591         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
8592         and gengtype.
8593         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
8594         add GTY((skip)) to the field that's only conditionally there.
8595         * doc/install.texi: Document that Bison is no longer required
8596         unless building treelang.
8597
8598         * gengtype.c: Don't include gtyp-gen.h.
8599         (srcdir): Declare here.
8600         (base_files, lang_dir_names): Allocate dynamically.
8601         (gt_files, num_gt_files, num_lang_dirs): New globals.
8602         (measure_input_list, read_input_line, read_input_list)
8603         (set_lang_bitmap): New functions.
8604         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
8605         simplify, relying on read_input_list to set up the bitmaps.
8606         (main): Arguments are no longer unused.  Check for correct number
8607         of command line arguments, set srcdir and srcdir_len, then call
8608         read_input_list, before doing anything else.  No need to worry
8609         about duplicates in main loop.
8610         * configure.ac: Simplify the calculation of all_gtfiles.
8611         Put language tags in there.  Don't set or substitute
8612         all_gtfiles_files_langs or all_gtfiles_files_frags.
8613         * Makefile.in: Revamp the way gengtype is invoked, now that it
8614         takes a file on its command line with a much simpler format.
8615         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
8616         (GTFILES): Remove duplicates and C source files.
8617         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
8618         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
8619         * configure: Regenerate.
8620
8621         * gengtype.h: Remove all type definitions to gengtype.c; leave
8622         only definitions of options_p, type_p, and pair_p as opaque
8623         pointers.  Update prototypes.
8624         * gengtype.c: Many type definitions moved here from gengtype.h.
8625         Consolidate type definitions at the top of the file.
8626         (xvasprintf): Delete.
8627         (xasprintf): Make static.
8628         (create_nested_pointer_option): Add 'next' parameter.
8629         (create_field_all, create_field_at): New functions.
8630         (create_field): Now a thin wrapper around create_field_all.
8631         (create_optional_field): Rename create_optional_field_ and add
8632         line argument.  Original name is now a macro which supplies
8633         __LINE__.
8634         (oprintf): Use vsnprintf directly.
8635         (close_output_files): Use fatal rather than perror/exit.
8636         (note_def_vec, note_def_vec_alloc): Use create_field_at.
8637         (main): Set progname.  Don't use exit.
8638         * gengtype-yacc.y (struct_fields): Use create_field_at.
8639         (option, optionseqopt): Delete.
8640         (optionseq): Consolidate productions from option here so we
8641         can use the first argument to create_option.
8642
8643         * gengtype-lex.l: Distinguish unions from structures in the
8644         token type.  Don't call find_structure; return the tag as a string.
8645         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
8646         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
8647         Reorganize typedef_struct production accordingly.
8648         Use create_nested_ptr_option.
8649         * gengtype.c (create_nested_ptr_option): New function.
8650         * gengtype.h: Declare it.
8651
8652         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
8653         (string_type): Don't declare.
8654         (do_scalar_typedef): Declare.
8655         (create_scalar_type): Update prototype.
8656         * gengtype.c (string_type): Make static.
8657         (scalar_nonchar, scalar_char): New.
8658         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
8659         (resolve_typedef): Use scalar_nonchar for error recovery.
8660         (create_scalar_type): Remove name_len field.  Return scalar_char
8661         or scalar_nonchar as appropriate.
8662         (adjust_field_type): Look at scalar_is_char boolean to decide whether
8663         to use string_type.
8664         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
8665         whenever possible.
8666         (main): Initialize scalar_char and scalar_nonchar before calling
8667         gen_rtx_next.
8668         * gengtype-lex.l: Adjust for removal of second argument to
8669         create_scalar_type.  Use yylval.s instead of yylval.t when
8670         returning SCALAR.
8671         * gengtype-yacc.y: Type of SCALAR is string.  Call
8672         create_scalar_type from type:SCALAR rule.  Adjust for removal of
8673         second argument to create_scalar_type.
8674
8675         * vec.h: Remove all #if IN_GENGTYPE blocks.
8676         Add comment saying that changes may require adjustments to gengtype.
8677         * gengtype.c: Don't include coretypes.h or tm.h.
8678         Add comment to inclusion of errors.h.
8679         (note_def_vec, note_def_vec_alloc): New functions.
8680         * gengtype.h: Declare new functions.
8681         * gengtype-lex.l: Don't include coretypes.h.
8682         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
8683         Delete.
8684         (update_lineno): Remove unnecessary prototype.
8685         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
8686         (VEC rule): Just return VEC_TOKEN.
8687         * gengtype-yacc.y (VEC_TOKEN): New token type.
8688         (type): Add a production for VEC(a,b).
8689         * Makefile.in: Update dependencies.
8690
8691         * gengtype-lex.l: Remove rules for parsing pointer-to-function
8692         typedefs that use the old PARAMS macro.
8693
8694         * gengtype-lex.l: Remove all rules and states relating to yacc
8695         input files.
8696         * gengtype-yacc.y: Similarly.
8697         * gengtype.c (note_yacc_type): Delete function.
8698         * gengtype.h: Update prototypes.
8699
8700 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
8701
8702         * tree-pretty-print.c (dump_generic_node): Report precision of
8703         unnamed integer types.
8704
8705 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
8706
8707         * ifcvt.c (noce_try_store_flag_constants): Don't check
8708         no_new_pseudos here.
8709         (noce_try_store_flag_constants): Don't check no_new_pseudos.
8710         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
8711         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
8712         noce_try_sign_mask): Likewise.
8713         (if_convert): Check no_new_pseudos here.
8714
8715         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
8716         Remove prototypes.
8717         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
8718         (noce_get_condition): Handle new then_else_reversed argument.
8719         (noce_init_if_info): Remove, fold into noce_find_if_block.
8720         (noce_process_if_block): Take a struct noce_if_info as the
8721         argument.  Don't set up one based on ce_if_info.  Update pointer
8722         references accordingly.
8723         (cond_move_process_if_block): Likewise.
8724         (process_if_block): Removed.
8725         (find_if_block): Removed.  Move functionality two new functions,
8726         noce_find_if_block and cond_exec_find_if_block.
8727         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
8728         blocks and the symmetric IF-ELSE-JOIN case.
8729         (cond_exec_find_if_block): Also new function mostly based on old
8730         find_if_block and process_if_block.
8731         (find_if_header): Replace find_if_block call with separately
8732         guarded calls to noce_find_if_block and cond_exec_find_if_block.
8733         (find_cond_trap): Update noce_get_condition call.
8734         (dead_or_predicable): Likewise.
8735
8736 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
8737
8738         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
8739         Remove.
8740         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
8741         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
8742         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
8743         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
8744         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
8745         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
8746         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
8747         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
8748         __builtin_ia32_psrad128 builtins.
8749
8750 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
8751
8752         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
8753         * config/i386/constraints.md
8754         (define_constraint "I"): Use IN_RANGE macro.
8755         (define_constraint "J"): Ditto.
8756         (define_constraint "K"): Ditto.
8757         (define_constraint "M"): Ditto.
8758         (define_constraint "N"): Ditto.
8759         (define_constraint "O"): Ditto.
8760         * config/i386/predicates.md
8761         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
8762         (define_predicate "const_0_to_3_operand"): Ditto.
8763         (define_predicate "const_0_to_7_operand"): Ditto.
8764         (define_predicate "const_0_to_15_operand"): Ditto.
8765         (define_predicate "const_0_to_63_operand"): Ditto.
8766         (define_predicate "const_0_to_255_operand"): Ditto.
8767         (define_predicate "const_1_to_31_operand"): Ditto.
8768         (define_predicate "const_2_to_3_operand"): Ditto.
8769         (define_predicate "const_4_to_7_operand"): Ditto.
8770
8771 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8772
8773         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
8774         in SImode for save_world.
8775         * config/rs6000/altivec.md (save_world, restore_world): Convert to
8776         LR hard reg.
8777
8778 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
8779
8780         PR tree-optimization/30784
8781         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
8782         BIT_FIELD_REF.
8783
8784 2007-03-25  Revital Eres  <eres@il.ibm.com>
8785
8786         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
8787           Fold movement_possibility function into it.
8788
8789 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8790
8791         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
8792         (load_macho_picbase_{si,di}): Convert to LR hard reg.
8793         (call_indirect_nonlocal_darwin64): Same.
8794         (call_nonlocal_darwin64): Same.
8795         (call_value_indirect_nonlocal_darwin64): Same.
8796         (call_value_nonlocal_darwin64): Same.
8797         (sibcall_nonlocal_darwin64): Same.
8798         (sibcall_value_nonlocal_darwin64): Same.
8799         (sibcall_symbolic_64): Same.
8800         (sibcall_value_symbolic_64): Same.
8801         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
8802         LR pseudo.
8803         (rs6000_emit_load_toc_table): Same.
8804         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
8805         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
8806         (mull_call): Same.
8807         (divss_call): Same.
8808         (divus_call): Same.
8809         (quoss_call): Same.
8810         (quous_call): Same.
8811         (load_toc_v4_pic_si): Same
8812         (load_toc_v4_PIC_1): Same.
8813         (load_toc_v4_PIC_1b): Same.
8814         (call_indirect_aix{32,64}): Same.
8815         (call_value_indirect_aix{32,64}): Same.
8816         (call): Same.
8817         (call_value): Same.
8818         (call_local{32,64}): Same.
8819         (call_value_local{32,64}): Same.
8820         (call_indirect_nonlocal_aix{32,64}): Same.
8821         (call_nonlocal_aix{32,64}): Same.
8822         (call_value_indirect_nonlocal_aix{32,64}): Same.
8823         (call_value_nonlocal_aix{32,64}): Same.
8824         (call_indirect_nonlocal_sysv<mode>): Same.
8825         (call_nonlocal_sysv<mode>): Same.
8826         (call_value_indirect_nonlocal_sysv<mode>): Same.
8827         (call_value_nonlocal_sysv<mode>): Same.
8828         (sibcall): Same.
8829         (sibcall_local{32,64}): Same.
8830         (sibcall_value_local{32,64}): Same.
8831         (sibcall_nonlocal_aix{32,64}): Same.
8832         (sibcall_value_nonlocal_aix{32,64}): Same.
8833         (sibcall_nonlocal_sysv<mode>): Same.
8834         (sibcall_value): Same.
8835         (sibcall_value_nonlocal_sysv<mode>): Same.
8836
8837 2007-03-24  Paul Brook  <paul@codesourcery.com>
8838
8839         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
8840         * config/arm/linux-eabi.h: Remove legacy syscall hack.
8841
8842 2007-03-24  Richard Henderson  <rth@redhat.com>
8843
8844         * config/ia64/constraints.md: New file.
8845         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
8846         satisfies_constraint_?.
8847         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
8848         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
8849         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
8850         ia64_output_mi_thunk): Likewise.
8851         (ia64_const_ok_for_letter_p): Remove.
8852         (ia64_const_double_ok_for_letter_p): Remove.
8853         (ia64_extra_constraint): Remove.
8854         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
8855         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
8856         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
8857         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
8858         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
8859         EXTRA_MEMORY_CONSTRAINT): Remove.
8860         * config/ia64/ia64.md: Include constriants.md.  Replace
8861         CONST_OK_FOR_? with satisfies_constraint_?.
8862
8863 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
8864             H.J. Lu  <hongjiu.lu@intel.com>
8865
8866         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
8867         DPD or BID name.
8868         (name macros): Use DPD_BID_NAME to convert names properly.
8869
8870         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
8871         decimal floating point format.
8872         (init_floating_libfuncs): Change decimal functions so that they
8873         have a "bid_" prefix if the decimal system uses the BID format,
8874         and "dpd_" prefix if the decimal system uses the DPD format.
8875         (init_interclass_conv_libfuncs): Ditto.
8876         (init_intraclass_conv_libfuncs): Ditto.
8877
8878         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8879         using the BID format.
8880
8881         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8882         whether we are using the BID decimal format.
8883         * configure: Regenerate.
8884
8885         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8886         the compiler has decimal floating point enabled.  Define
8887         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8888         instead of DPD.
8889
8890         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8891         using the BID format.
8892
8893         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8894         whether we are using the BID decimal format.
8895         * configure: Regenerate.
8896
8897         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8898         the compiler has decimal floating point enabled.  Define
8899         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8900         instead of DPD.
8901
8902         * doc/install.texi (--enable-decimal-float): Document BID and DPD
8903         options, and that it is enabled for i386/x86_64 systems.
8904
8905         * Makefile.in (enable_decimal_float): New.
8906         (DECNUMFMT): New.
8907         (DECNUMINC): Add  -I$(DECNUMFMT).
8908         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
8909         to $(DECNUMFMT) from $(DECNUM).
8910
8911         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
8912         Substitute enable_decimal_float.
8913         * configure: Regenerated.
8914
8915         PR other/30529
8916         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
8917         unsigned long.
8918
8919         * configure.ac: Enable decimal float for x86_64-*-linux*.
8920         * configure: Regenerated.
8921
8922         PR other/30530
8923         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
8924         decimal128ClearSign to flip and clear the sign bit in decimal128.
8925         (decimal_real_maxval): Set decimal128SetSign to set the sign
8926         bit in decimal128.
8927
8928 2007-03-23  Ian Lance Taylor  <iant@google.com>
8929
8930         * fold-const.c (fold_binary): Correct warning for X - c >= X.
8931
8932 2007-03-23  Ian Lance Taylor  <iant@google.com>
8933
8934         * tree-dump.c (dump_files): Correct comment.
8935
8936 2007-03-23  Ian Lance Taylor  <iant@google.com>
8937
8938         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
8939
8940 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
8941
8942         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
8943         in cfglayout mode.  Don't go into and out of cfglayout mode.
8944         Link the blocks in the order of the constructed traces.
8945         (rest_of_handle_tracer): Adjust call to tracer.
8946         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
8947         Don't go into cfglayout mode.
8948         (rtl_loop_done): Don't go out of cfglayout mode.
8949         * cfglayout.c (relink_block_chain): New function, split out from...
8950         (fixup_reorder_chain): ...here.  Remove redundant checking.
8951         (cfg_layout_finalize): Don't clear the header, footer, and aux
8952         fields here, move the code to do so to relink_block_chain.  Likewise
8953         for free_original_copy_tables.
8954         * rtl.h (tracer): Update prototype.
8955         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
8956         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
8957         mode.  Use relink_block_chain to serialize the CFG according to the
8958         new basic block order.  Move targetm.cannot_modify_jumps_p check from
8959         here...
8960         (gate_handle_reorder_blocks): ...to here.
8961         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
8962         from here...
8963         (gate_duplicate_computed_gotos): ...to here.
8964         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
8965         something always changes when going into and out of cfglayout mode.
8966         Perform an expensive cfg cleanup while going into cfglayout mode.
8967         Always update liveness information on HAVE_conditional_execution
8968         targets.  Reserialize the basic blocks and go out of cfglayout mode.
8969         * reg-stack.c: Include cfglayout.h.
8970         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
8971         the call to reorder_basic_blocks.
8972         * basic-block.h (reorder_basic_blocks): Update prototype.
8973         (relink_block_chain): New prototype.
8974         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
8975
8976 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
8977
8978         * config/mips/mips.md (type, hazard, *movdi_32bit,
8979         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
8980         *movhi_internal, *movqi_internal, *movsf_hardfloat,
8981         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
8982         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
8983         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
8984         applicable.
8985         (movcc): Change first xfer to multi.
8986         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
8987         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
8988         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
8989         config/mips/generic.md: Change reservations using "xfer" to use
8990         "mfc,mtc".
8991         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
8992         using match_operand.
8993         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
8994         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
8995         examining mode.
8996         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
8997
8998 2007-03-22  Richard Henderson  <rth@redhat.com>
8999
9000         * config/i386/i386.c: Remove unnecessary function declarations.
9001         Move targetm definition, and all related macros, to the end of
9002         the file.  Resort some functions to put definitions before uses.
9003         (ix86_attribute_table): Make static.  Move to end of file.
9004         (ix86_gimplify_va_arg): Make static.
9005
9006 2007-03-22  Richard Henderson  <rth@redhat.com>
9007
9008         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
9009         don't increase local_regparm with force_align_arg_pointer check.
9010         (ix86_function_sseregparm): Assert 32-bit.
9011         (type_has_variadic_args_p): New.
9012         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
9013         type_has_variadic_args_p.
9014         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
9015         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
9016         use memset instead.  Do maybe_vaarg check first; skip attribute
9017         tests if true; skip attribute tests for 64-bit.
9018         (construct_container): Remove TARGET_DEBUG_ARG.
9019         (function_arg_advance_32, function_arg_advance_64): Split out ...
9020         (function_arg_advance): ... from here.
9021         (function_arg_32, function_arg_64): Split out ...
9022         (function_arg): ... from here.
9023         (ix86_pass_by_reference): Tidy.
9024         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
9025         (function_value_32): New, from parts of ix86_function_value
9026         and ix86_value_regno.
9027         (function_value_64): New, from parts of ix86_function_value
9028         and ix86_libcall_value.
9029         (ix86_function_value_1): New.
9030         (ix86_function_value, ix86_libcall_value): Use it.
9031         (return_in_memory_32, return_in_memory_64): Split out ...
9032         (ix86_return_in_memory): ... from here.
9033         (ix86_struct_value_rtx): Skip for 64-bit.
9034         (ix86_libcall_value, ix86_value_regno): Remove.
9035         (setup_incoming_varargs_64): Split out ...
9036         (ix86_setup_incoming_varargs): ... from here.
9037         (ix86_va_start): Remove TARGET_DEBUG_ARG.
9038         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
9039         * config/i386/i386-protos.h (ix86_function_value): Remove.
9040         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
9041
9042 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9043
9044         PR other/23572
9045         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
9046         infinities not supported, otherwise emit warning if -Woverflow. On
9047         underflow, emit warning if -Woverflow.
9048         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
9049         and 0 otherwise.
9050         * real.h (real_from_string): Update declaration
9051
9052 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
9053             Richard Henderson  <rth@redhat.com>
9054
9055         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
9056         * calls.c (compute_argument_block_size, expand_call,
9057         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
9058         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
9059         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
9060         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
9061         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
9062         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
9063         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
9064         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
9065         Set to 1.
9066
9067 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
9068
9069         * c-incpath.c (add_sysroot_to_chain): New.
9070         (merge_include_chains): Add sysroot argument.  Call
9071         add_sysroot_to_chain if sysrooted.
9072         (register_include_chains): Update call to merge_include_chains.
9073         * doc/cppopts.texi: Document use of '=' in include directory
9074         arguments.
9075
9076 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
9077
9078         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
9079         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
9080         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
9081         insn pattern using X87MODEF12 mode macro.
9082
9083 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
9084
9085         * regmove.c (regmove_optimize): Use reg_mentioned_p
9086         instead of reg_overlap_mentioned_p for DST.
9087
9088 2007-03-21  Mike Stump  <mrs@apple.com>
9089
9090         * c.opt: Fixup for Objective-C/C++.
9091
9092 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
9093
9094         * explow.c (convert_memory_address): Fold memory reference when
9095         POINTERS_EXTEND_UNSIGNED < 0
9096
9097 2007-03-21  Richard Henderson  <rth@redhat.com>
9098
9099         PR target/31245
9100         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
9101         * config/i386/mmintrin.h (__m64): Likewise.
9102         * config/i386/xmmintrin.h (__m128): Likewise.
9103
9104 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9105
9106         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
9107         (VXWORKS_OS_CPP_BUILTINS): Define.
9108         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
9109         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
9110
9111 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9112
9113         * rtl.h (constant_pool_reference_p): Delete.
9114         (find_constant_src): Declare.
9115         * rtlanal.c (find_constant_src): New function.
9116         * simplify-rtx.c (constant_pool_reference_p): Delete.
9117         * config/i386/i386.md: Use find_constant_src instead of
9118         constant_pool_reference_p/avoid_constant_pool_reference pairs.
9119
9120 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9121
9122         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
9123         * c-cppbuiltin.c (c_cpp_builtins): Define them.
9124
9125 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
9126
9127         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
9128         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
9129         (arm_elf_asm_constructor): Use it.
9130         (arm_elf_asm_destructor): New function.
9131
9132 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
9133
9134         * jump.c (mark_jump_label): Treat SEQUENCE specially.
9135
9136 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
9137
9138         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
9139
9140 2007-03-19  Andrew Haley  <aph@redhat.com>
9141
9142         PR tree-optimization/31264
9143         * tree-vrp.c (register_edge_assert_for_1): Don't look though
9144         VIEW_CONVERT_EXPRs.
9145
9146 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
9147
9148         PR rtl-optimization/30907
9149         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
9150         (fwprop_init): Always call loop_optimizer_initialize.
9151         (fwprop_done): Always call loop_optimizer_finalize.
9152         (fwprop): We always have loop info now.
9153         (gate_fwprop_addr): Remove.
9154         (pass_fwprop_addr): Use gate_fwprop as gate.
9155
9156         PR rtl-optimization/30841
9157         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
9158         df_chain_alloc): Call df_reorganize_refs unconditionally.
9159         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
9160         refs_organized to refs_organized_size.
9161         (df_ref_create_structure): Use refs_organized_size instead of
9162         bitmap_size if refs had been organized, and keep refs_organized_size
9163         up-to-date.
9164         * df.h (struct df_ref_info): Change refs_organized to
9165         refs_organized_size.
9166         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
9167         bitmap_size.
9168
9169 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
9170
9171         * except.c (output_function_exception_table): Do not reference the
9172         EH personality routine for functions that do not require an
9173         exception table.
9174
9175 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
9176
9177         PR c/30762
9178         * c-typeck.c (convert_for_assignment): Call comptypes for
9179         RECORD_TYPE or UNION_TYPE.
9180
9181         PR inline-asm/30505
9182         * reload1.c (reload): Do invalid ASM checking after
9183         cleanup_subreg_operands.
9184
9185 2007-03-19  Jeff Law  <law@redhat.com>
9186
9187         * tree-cfg.c (find_taken_edge): Tighten conditions for
9188         optimizing computed gotos.
9189
9190 2007-03-19  Michael Matz  <matz@suse.de>
9191
9192         * builtins.c (expand_builtin_sync_operation,
9193         expand_builtin_compare_and_swap,
9194         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
9195         correctly.
9196
9197         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
9198         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
9199         for operand 3.
9200
9201 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9202
9203         * doc/tm.texi: Add brackets around the return type of
9204         TARGET_SECONDARY_RELOAD.
9205
9206 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9207         Richard Guenther  <rguenther@suse.de>
9208
9209         PR tree-optimization/31254
9210         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
9211         Use handled_component_p () where appropriate.  Continue
9212         propagating into the rhs if we propagated into an INDIRECT_REF
9213         on the lhs.
9214
9215 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9216
9217         * config/s390/s390.md (op_type attribute): RRR instruction type added.
9218         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
9219         (xde, xdee): Mode attributes adjusted to support DFP modes.
9220         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
9221         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
9222         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
9223         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
9224         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
9225         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
9226         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
9227         numbers.
9228         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
9229         "movsf"): Insn definitions removed.
9230         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
9231         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
9232         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
9233         definitions added.
9234         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
9235         "reload_in<mode>", "reload_out<mode>"): Expander added.
9236         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
9237         Expander removed.
9238
9239 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9240
9241         * config/s390/s390.md: Only non-functional changes.  Renamed
9242         FPR mode macro to BFP all over the file.
9243
9244 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9245
9246         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
9247         (op_type attribute): RRF instruction type added.
9248         (fT0): New mode attribute.
9249         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
9250         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
9251         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
9252         no secondary memory is needed when moving DFmode values between GPRs
9253         and FPRs.
9254
9255 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9256
9257         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
9258         inverted and documentation adjusted.
9259         ("mhard-dfp", "msoft-dfp"): New options.
9260         * config/s390/s390.c (s390_handle_arch_option): New architecture
9261         switch: z9-ec.
9262         (override_options): Sanity checks for the new options added.
9263         * config.gcc: New architecture switch: z9-ec.
9264         * config/s390/s390.h (processor_flags): PF_DFP added.
9265         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
9266         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
9267         when the bit is NOT set so remove it from the defaults.
9268
9269 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9270
9271         * genemit.c (main): Print include statement for dfp.h.
9272         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
9273         is not available.
9274
9275 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
9276
9277         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
9278
9279 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
9280
9281         PR target/31022
9282         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
9283         instead of PATTERN.
9284
9285 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9286
9287         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
9288         attr_length_call, output_call, output_indirect_call): Cleanup
9289         formatting of targetm calls.
9290
9291 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
9292
9293         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
9294
9295 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9296
9297         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
9298         reservation, bypass and anti-bypass descriptions for these instructions.
9299         Update move patterns.
9300         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
9301         TYPE_FPSTORE.
9302
9303 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
9304
9305         * tree-vect-transform.c (get_initial_def_for_induction): Replace
9306         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
9307         (get_initial_def_for_reduction): Likewise.
9308
9309 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
9310
9311         Fix PR tree-optimization/29922
9312         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
9313         (get_representative): Removed.
9314         (value_dies_in_block_x): Update for rvuse removal.
9315         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
9316         (compute_antic_aux): Handle when PHI nodes appear in
9317         non-single-successors.
9318         (dump_bitmap_of_names): Removed.
9319         (compute_antic_safe): Renamed and removed rvuse calculation.
9320         Calculate only antic safe.
9321         (insert_into_preds_of_block): Remove assert.
9322         (execute_pre): Update for renamed functions.
9323         (defer_or_phi_translate_block): New function.
9324
9325 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9326
9327         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
9328         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
9329         typos.
9330         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
9331         Follow spelling conventions.
9332
9333         * tree-data-ref.h: Remove the prototype for analyze_array.
9334
9335 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
9336
9337         PR tree-optimization/31041
9338         * tree-vect-transform.c (get_initial_def_for_induction): Call
9339         force_gimple_operand.
9340
9341 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
9342
9343         * ipa-type-escape.c (look_for_casts) : Revert code to use
9344         handled_component_p due to ada test a-numaux.adb.
9345
9346 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9347
9348         * final.c (final_scan_insn): Alter the condition of a
9349         conditional trap if we have nonstandard CC.
9350
9351 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9352
9353         * configure.ac: Remove excess quoting from asm line 0 test.
9354         * configure: Rebuilt.
9355
9356 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9357
9358         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
9359         * c-common.c (convert_and_check): Move warning logic to...
9360         (warnings_for_convert_and_check): ...here. Define.
9361         * c-common.h (warnings_for_convert_and_check): Declare.
9362
9363 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9364
9365         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
9366         (output_call): Likewise.
9367
9368 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9369
9370         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
9371
9372 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9373
9374         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
9375
9376 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
9377
9378         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
9379         opteron, athlon-64 and athlon-fx processor_alias_table entries.
9380
9381 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
9382
9383         PR tree-optimization/31183
9384         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
9385         Use double_int instead of unsigned int for representing access_strides.
9386         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
9387
9388 2007-03-16  Richard Guenther  <rguenther@suse.de>
9389
9390         PR tree-optimization/31146
9391         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
9392         to allow recursion of forward_propagate_addr_expr.
9393         (forward_propagate_addr_into_variable_array_index): Likewise.
9394         (forward_propagate_addr_expr): Likewise.
9395         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9396         (forward_propagate_addr_expr_1): Recurse on simple copies
9397         instead of propagating into them.  Do so for useless conversions
9398         as well.
9399         (forward_propagate_addr_expr): Clean up unused statements after
9400         recursion.
9401
9402 2007-03-16  Richard Guenther  <rguenther@suse.de>
9403
9404         * builtins.c (expand_builtin_cexpi): Use the right argument
9405         for the expansion via cexp.
9406
9407 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9408
9409         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
9410         * configure: Rebuilt.
9411
9412 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9413
9414         PR debug/29906
9415         * dwarf2out.c (force_type_die): Adjust comment.
9416         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
9417
9418 2007-03-15  DJ Delorie  <dj@redhat.com>
9419
9420         * config/frv/predicates.md (minmax_operator): Don't check operands
9421         here.
9422
9423 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9424
9425         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
9426         Update constant estimates of number of iterations.
9427         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
9428         argument renamed to "realistic".
9429         (compute_estimated_nb_iterations): Removed.
9430         (record_niter_bound): New function.
9431         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
9432         call record_nonwrapping_iv with upper = false.
9433         (infer_loop_bounds_from_signedness): Pass upper argument to
9434         record_nonwrapping_iv.
9435         (estimate_numbers_of_iterations_loop): Do not call
9436         compute_estimated_nb_iterations.  Record estimate based on profile
9437         information.  Initialize the constant estimates of number of
9438         iterations.
9439         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
9440         estimates.
9441         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
9442         number of iterations is too small.
9443         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
9444         (EST_NOT_AVAILABLE): Removed.
9445         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
9446         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
9447         fields.
9448
9449 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9450
9451         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
9452         Handle NE_EXPR guards.
9453
9454 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9455
9456         PR c++/24924
9457         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
9458         Set also -pedantic-errors by default for the  preprocessor unless
9459         -fpermissive is given.
9460
9461 2007-03-15  Richard Guenther  <rguenther@suse.de>
9462
9463         PR middle-end/29719
9464         PR middle-end/31161
9465         * builtins.c (expand_builtin_cexpi): As a fallback if we
9466         don't have builtins for sincos or cexp create a function
9467         declaration for cexp and expand to a call to that.
9468         (expand_builtin_int_roundingfn): Always fall
9469         back to floor/ceil and its variants even if they may be
9470         not available.
9471
9472 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
9473
9474         PR middle-end/31159
9475         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
9476         jump tables, move the call to delete_dead_jumptables from here...
9477         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
9478         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
9479         don't allow merging of blocks that try_redirect_by_replacing_jump
9480         also does not handle when not optimizing.
9481
9482 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9483             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
9484
9485         * config/i386/i386.md (x86_sahf_1): Correctly handle
9486         HAVE_AS_IX86_SAHF.
9487
9488 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9489
9490         PR target/31167
9491         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
9492         x86_64_general_operand as operand[2] predicate.  Remove "iF"
9493         from operand constraints and use "e" constraint instead.
9494         (*subti3_1, *subti3_1 splitter): Ditto.
9495         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
9496         operand[1] predicate.
9497
9498 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
9499
9500         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
9501         arrays, multiply the access strides by the size of the sub-array.
9502         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
9503
9504 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9505
9506         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
9507         the configured assembler supports the sahf mnemonic.
9508         * configure: Regenerate.
9509         * config.in: Regenerate.
9510
9511         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
9512         emit "sahf" or ".byte\t0x9e" as asm template.
9513
9514 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
9515
9516         PR 31018
9517         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
9518         option to replace hard coded TARGET_xxx in md file.
9519         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
9520         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9521         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
9522         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
9523         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
9524         (X86_TUNE_NOT_VECTORMODE): Ditto.
9525         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
9526         (TUNE_AVOID_VECTOR_DECODE): Ditto.
9527         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9528         (TUNE_SLOW_IMUL_IMM8): Ditto.
9529         (TUNE_MOVE_M1_VIA_OR): Ditto.
9530         (TUNE_NOT_UNPAIRABLE): Ditto.
9531         (TUNE_NOT_VECTORMODE): Ditto.
9532
9533         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
9534         options.
9535
9536         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
9537         tuning options instead of hard coded TARGET_xxx.
9538         (fix ssemode peephole2's): Ditto.
9539         (imul peephole2's): Ditto.
9540         (movsi_or): Ditto.
9541         (movdi_or_rex64): Ditto.
9542         (move peephole2): Ditto.
9543         (not peephole2's): Ditto.
9544
9545 2007-03-14  Dirk Mueller  <dmueller@suse.de>
9546
9547         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
9548         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
9549         * c-parser.c (c_parser_if_body): Always add an empty statement in case
9550         of empty body.
9551         * c-parser.c (c_parser_do_statement): Warn about empty body in
9552         do/while statement.
9553         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
9554         * doc/invoke.texi (-Wempty-body): Update documentation.
9555
9556 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9557
9558         PR c/21438
9559         * c-common.h (warn_for_div_by_zero): Declare.
9560         * c-common.c (warn_for_div_by_zero): Define.
9561         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
9562         warning.
9563
9564 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9565
9566         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
9567         to PREFIX and STANDARD_PREFIX.
9568
9569 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9570             Phil Edwards  <phil@codesourcery.com>
9571
9572         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
9573         (__gthread_once_t): Remove busy field for RTPs.
9574         (__GTHREAD_ONCE_INIT): Update accordingly.
9575
9576 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9577
9578         * doc/invoke.texi: Document VxWorks options.
9579
9580 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9581
9582         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
9583
9584 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
9585
9586         PR tree-optimization/30590
9587         * tree-nrv.c (tree_nrv): Check for the partial update of the
9588         return value.
9589
9590 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9591
9592         * flags.h (flag_random_seed): Remove declaration, in favor of...
9593         * toplev.h (get_random_seed, set_random_seed): ... these.
9594         * tree.c (get_file_function_name): Use the former.
9595         * opts.c (common_handle_option): Use the latter.
9596         * toplev.c
9597
9598 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
9599
9600         PR middle-end/31127
9601         * cse.c (cse_find_path): Do not bail out if a basic block that
9602         we already visited now becomes part of a path that starts at a
9603         different basic block.  Just disallow this, to make sure we
9604         visit each basic block at most once.
9605
9606 2007-03-13  Jan Hubicka  <jh@suse.cz>
9607
9608         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
9609         when profile esitmate is present, calls with very low frequency are
9610         cold.
9611
9612 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
9613
9614         PR tree-optimization/30730
9615         PR tree-optimization/26900
9616         * tree-ssa-loop-niter.c: Include gmp.h.
9617         (bounds): New type.
9618         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
9619         split_to_var_and_offset, determine_value_range,
9620         bound_difference_of_offsetted_base, refine_bounds_using_guard,
9621         bound_difference, bounds_add, bounds_negate,
9622         number_of_iterations_ne_max, dump_affine_iv): New functions.
9623         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
9624         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
9625         difference of initial and final value of control iv to validate
9626         results.
9627         (number_of_iterations_cond): Add loop parameter.  Determine bounds
9628         on the difference of the extremes of the control iv.  Add dumps.
9629         (expand_simple_operations): Handle phi nodes.
9630         (simplify_using_initial_conditions): Do not record used conditions.
9631         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
9632         Do not set additional_info.
9633         (implies_nonnegative_p, implies_ge_p): Removed.
9634         (derive_constant_upper_bound): Do not use parameter `additional'.
9635         (record_estimate): Parameter `additional' removed.  Parameter
9636         `i_bound' added.  Do not call derive_constant_upper_bound.
9637         (record_nonwrapping_iv): Use derive_constant_upper_bound to
9638         bound the number of iterations estimate.
9639         (estimate_numbers_of_iterations_loop): Pass the estimate from
9640         the number of iterations analysis to record_estimate.
9641         * tree.h (multiple_of_p): Declare.
9642         * tree-scalar-evolution.c (expression_expensive_p): Removed.
9643         (scev_const_prop): Do not check expression_expensive_p.
9644         * fold-const.c (multiple_of_p): Exported.
9645         * double-int.c (double_int_mask): Exported.
9646         * double-int.h (double_int_mask): Declare.
9647         * tree-flow.h (struct tree_niter_desc): Removed additional_info
9648         field.  Added max field.
9649
9650 2007-03-13  David Taylor  <taylor@candd.org>
9651
9652         PR driver/12448:
9653         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
9654         default -MQ.
9655
9656 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9657
9658         PR target/31123
9659         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
9660         two unamed patterns.
9661
9662 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
9663
9664         * config/i386/i386.opt (mcx16, msahf): New options.
9665         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
9666         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
9667
9668         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
9669         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
9670         Output -mcx16 and -msahf options when corresponding bit is set.
9671
9672         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
9673         and -msahf options.
9674
9675 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9676
9677         * configure.ac: Test for assembler tolerance to # 0 "".
9678         * configure, config.in: Rebuilt.
9679         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
9680
9681 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
9682
9683         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
9684
9685         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
9686         (handle_syscall): Handle direct system calls.
9687         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
9688
9689 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9690
9691         * doc/invoke.texi: Fix cpp.info cross-reference.
9692         * doc/passes.texi: Fix gcc.info cross-reference.
9693
9694 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
9695
9696         PR tree-optimization/30835
9697         * lambda-code.c (can_convert_to_perfect_nest): Check whether
9698         bb_for_stmt is not NULL before accessing it.
9699
9700 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
9701
9702         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
9703         some multilibs.
9704
9705 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9706
9707         PR 30635
9708         * doc/install.texi: Document --enable-stage1-languages
9709
9710 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
9711
9712         * tree-pass.h (pass_into_cfg_layout_mode,
9713         pass_outof_cfg_layout_mode): Declare.
9714         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
9715         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
9716         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
9717         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
9718
9719 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
9720
9721         * c-decl.c (warn_variable_length_array): New function.
9722         Refactored from grokdeclarator to handle warn_vla
9723         and handle unnamed array case.
9724         (grokdeclarator): Refactored VLA warning case.
9725         * c.opt (Wvla): New flag.
9726         * doc/invoke.texi (Wvla): New warning.
9727
9728 2007-03-12  Richard Henderson  <rth@redhat.com>
9729
9730         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
9731         (TARGET_SECTION_TYPE_FLAGS): New.
9732
9733 2007-03-12  Richard Henderson  <rth@redhat.com>
9734
9735         * config/darwin.c (machopic_reloc_rw_mask): New.
9736         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
9737         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
9738
9739 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
9740
9741         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
9742         * cppdefault.h (cpp_PREFIX): Document.
9743         (cpp_PREFIX_len): Likewise.
9744         (cpp_EXEC_PREFIX): New variable.
9745         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
9746         * c-incpath.c (add_standard_paths): Correct logic for relocating
9747         paths within prefix.
9748
9749 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
9750
9751         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
9752         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
9753         mode macro.
9754         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
9755         fix_truncdfdi_sse using SSEMODEF mode macro.
9756         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
9757         fix_truncdfsi_sse using SSEMODEF mode macro.
9758         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
9759         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
9760
9761 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
9762
9763         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
9764         elfos.h to tm_file.
9765
9766 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
9767
9768         * tree.h : Add multiple_of_p declaration.
9769         * fold-const.c (multiple_of_p): Make multiple_of_p public.
9770         * ipa-type-escape.c (results_of_malloc): Redundant.
9771         (visited_stmts): New. Visited stmt for walk_use_def_chains.
9772         (cast_type): Extended with new members.
9773         (check_cast): Returns cast_type.
9774         (cast): New structure for data of walk_use_def_chains.
9775         (is_malloc_result, is_cast_from_non_pointer_1,
9776         is_cast_from_non_pointer,
9777         is_array_access_through_pointer_and_index): New functions.
9778         (look_for_casts): Returns cast types.
9779         (check_call): Returns void.
9780         (okay_pointer_operation): Use support of pointer plus index,
9781         pointer plus constant and allow all multiplications.
9782
9783 2007-03-11  Richard Guenther  <rguenther@suse.de>
9784
9785         PR tree-optimization/31115
9786         * tree-vrp.c (extract_range_from_binary_expr): Make sure
9787         the shift count is positive and non-anti-range for RSHIFT_EXPR.
9788         A shift count of zero is not special as with *_DIV_EXPR.
9789         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
9790         direction.
9791
9792 2007-03-11  Ian Lance Taylor  <iant@google.com>
9793
9794         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
9795         the *_DIV_EXPR codes correctly with overflow infinities.
9796
9797 2007-03-11  Ira Rosen  <irar@il.ibm.com>
9798
9799         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
9800         indicate success/failure of the analysis. Add negation to subtrahend
9801         in case of subtraction. Fail if both operands contain constants.
9802         (create_data_ref): Fail if analyze_offset fails.
9803
9804 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
9805
9806         * config/i386/i386.md (frndintxf2): Rename to ...
9807         (rintxf2): ... this. Remove expander having same name.
9808         (rintsf2, rintdf2): Implement using SSEMODEF macro.
9809         (roundsf2, rounddf2): Ditto.
9810         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
9811         (lround<mode>di2, lround<mode>si2): Ditto.
9812
9813 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
9814
9815         * lower-subreg.c: Include except.h.
9816         (decompose_multiword_subregs): Verify that the only control flow
9817         insns we can split are loads to multi-words pseudos.
9818         Handle breaking such blocks after splitting, instead of calling
9819         find_many_sub_basic_blocks.
9820
9821         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
9822         on the new basic block.  Add a lengthy comment explaining why we
9823         thought this was necessary.
9824         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
9825
9826 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
9827
9828         PR c++/30924
9829         * tree.c (walk_type_fields): Recurse into the element type of
9830         ARRAY_TYPEs if there is a pointer set.
9831
9832 2007-03-10  Dirk Mueller  <dmueller@suse.de>
9833
9834         * c-common.c (warn_logical_operator): Fix condition.
9835
9836 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
9837
9838         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
9839         quotation mark.
9840         * config/darwin.c (machopic_select_section): Remove superfluous
9841         argument in call to categorize_decl_for_section.  Remove unused
9842         variable shlib.
9843
9844 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
9845
9846         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
9847         defined.
9848         * configure: Regenerate.
9849
9850 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
9851
9852         PR target/31101
9853         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
9854         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
9855         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
9856         Add LABEL_NUSES to emitted label.
9857         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
9858         branch probability value to emitted jump insn.
9859         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
9860         Do not check life information and do not re-arrange input operands
9861         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
9862
9863 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9864
9865         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
9866         the change of decode_asm_operands.
9867
9868 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9869
9870         * mode-switching.c (create_pre_exit): Skip blockage insn.
9871
9872 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
9873
9874         * tree-pass.h (TODO_update_smt_usage): Remove.
9875         Update all users.
9876         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
9877         argument SOME.
9878         Update all users.
9879
9880 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9881
9882         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
9883         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
9884         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
9885         SOM target.
9886
9887 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
9888
9889         * gcc.c: Document %{, in big comment at top.
9890         (input_suffix_matches): Remove special handling for .s and
9891         .S.
9892         (input_spec_matches): New.
9893         (handle_braces): Handle %{,.
9894         (validate_switches): ',' indicates a value which is not a switch.
9895         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
9896         to detect assembler input.
9897         * config/i386/sol2.h (CPP_SPEC): Likewise.
9898         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
9899         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
9900         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
9901         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
9902         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
9903         -m64 causes deployment target to default to 10.5.
9904         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9905
9906 2007-03-09  Richard Henderson  <rth@redhat.com>
9907
9908         PR target/26090
9909         * target.h (targetm.asm.out.reloc_rw_mask): New.
9910         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
9911         (TARGET_ASM_OUT): Use it.
9912         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
9913         * varasm.c (categorize_decl_for_section): Remove shlib argument;
9914         use the new reloc_rw_mask target hook instead.
9915         (default_section_type_flags_1): Merge into...
9916         (default_section_type_flags): ... here.
9917         (decl_readonly_section_1): Merge into...
9918         (decl_readonly_section): ... here.
9919         (default_elf_select_section_1): Merge into...
9920         (default_elf_select_section): ... here.
9921         (default_unique_section_1): Merge into...
9922         (default_unique_section): ... here.
9923         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
9924         (default_select_rtx_section): Use it.
9925         (default_elf_select_rtx_section): Likewise.
9926         * output.h: Update to match.
9927         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
9928         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
9929         (TARGET_ASM_RELOC_RW_MASK): New.
9930         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
9931         to categorize_decl_for_section.
9932         (x86_64_elf_unique_section): Likewise.
9933         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
9934         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
9935         (TARGET_ASM_RELOC_RW_MASK): New.
9936         * config/ia64/ia64.c (ia64_rwreloc_select_section,
9937         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
9938         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
9939         (TARGET_RWRELOC): Remove.
9940         (ia64_section_type_flags): Adjust call to default_section_type_flags.
9941         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9942         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
9943         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
9944         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
9945         (rs6000_xcoff_select_section): Use decl_readonly_section.
9946         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
9947         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9948         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
9949         (TARGET_SECTION_TYPE_FLAGS): Remove.
9950         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
9951
9952 2007-03-09  Roger Sayle  <roger@eyesopen.com>
9953
9954         * fold-const.c (fold_comparison): Remove compile-time evaluation of
9955         complex constant equality/inequality comparisons for here.
9956         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
9957         known at compile-time or can be simplified to a scalar comparison.
9958         (fold_relational_const): Move compile-time evaluation of complex
9959         constant equality/inequality comparisons to here.
9960
9961 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9962
9963         PR rtl-optimization/30643
9964         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
9965         dest_addr_elt.
9966         (fold_rtx): Recurse, like before 2006-11-03.
9967
9968 2007-03-09  DJ Delorie  <dj@redhat.com>
9969
9970         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
9971         m32c-pragma.o.
9972
9973 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
9974
9975         PR tree-optimization/30375
9976         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
9977         LHS of statements is not the same.
9978         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
9979
9980 2007-03-09  Chao-ying Fu  <fu@mips.com>
9981
9982         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
9983         REV 2.
9984         * doc/invoke.texi (-mdspr2): Document new option.
9985         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
9986         New unspec for DSP REV 2.
9987         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
9988         these instructions are extended in DSP REV 2.
9989         (mips-dspr2.md): Include.
9990         * config/mips/mips.opt (mdspr2): New option.
9991         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
9992         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
9993         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
9994         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
9995         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
9996         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
9997         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
9998         and 2 builtins.
9999         (bdesc_map): Add one field of unsupported_target_flags.
10000         (bdesc_arrays):  Update entries to have extra fields.  Add
10001         dsp_32only_bdesc.
10002         (mips_init_builtins): Initialize new function types.
10003         Check unsupported_target_fileds to filter out builtins.
10004         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
10005         TARGET_DSPR2.
10006         (ASM_SPEC): Pass mdspr2 to the assembler.
10007         * config/mips/mips-dspr2.md: New file.
10008
10009 2007-03-09  Sa Liu  <saliu@de.ibm.com>
10010
10011         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
10012
10013 2007-03-09  Ian Lance Taylor  <iant@google.com>
10014
10015         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
10016         argument) like -Wstrict-overflow=2.
10017         * doc/invoke.texi (Warning Options): Update documentation.
10018
10019 2007-03-09  Dirk Mueller  <dmueller@suse.de>
10020
10021         PR c++/17946
10022         * doc/invoke.texi (-Wlogical-op): Document.
10023         * common.opt (-Wlogical-op): New.
10024         * c-common.h (warn_logical_operator): Declare.
10025         * c-common.c (warn_logical_operator): Define.
10026         * c-typeck.c (parser_build_binary_op): Call
10027         warn_logical_operator.
10028
10029 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10030
10031         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
10032         * final.c (final_scan_insn): Test for non-"" file name.
10033
10034 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
10035
10036         * doc/loop.texi: Document the Omega linear constraints solver.
10037         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
10038         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
10039         omega-hash-table-size, omega-max-keys, and
10040         omega-eliminate-redundant-constraints.
10041         * tree-pass.h (pass_check_data_deps): Declared.
10042         * omega.c: New.
10043         * omega.h: New.
10044         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
10045         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
10046         pass_check_data_deps): New.
10047         * tree-data-ref.c (init_data_ref): Remove declaration.
10048         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
10049         (analyze_array): Renamed init_array_ref, move up initializations.
10050         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
10051         Removed arguments that are set to NULL.
10052         (analyze_indirect_ref): Correct indentation, correct call to
10053         init_pointer_ref.
10054         (object_analysis): Call init_array_ref instead of analyze_array.
10055         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
10056         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
10057         of DR_ACCESS_FNS_ADDR.
10058         (init_omega_eq_with_af, omega_extract_distance_vectors,
10059         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
10060         ddr_consistent_p): New.
10061         (compute_affine_dependence): Check consistency of ddrs when
10062         flag_check_data_deps is passed.
10063         (analyze_all_data_dependences): Uncomment.
10064         (tree_check_data_deps): New.
10065         * tree-data-ref.h: Include omega.h.
10066         (DR_ACCESS_FNS_ADDR): Removed.
10067         (data_dependence_relation): Add inner_loop.
10068         (DDR_INNER_LOOP): New.
10069         * common.opt (fcheck-data-deps): New.
10070         * tree-flow.h (tree_check_data_deps): Declare.
10071         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
10072         (OBJS-common): Depend on omega.o.
10073         (omega.o): Define.
10074         * passes.c (pass_check_data_deps): Scheduled.
10075         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
10076         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
10077         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
10078         PARAM_VECT_MAX_VERSION_CHECKS,
10079         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
10080
10081 2007-03-09  Richard Guenther  <rguenther@suse.de>
10082
10083         PR tree-optimization/30904
10084         PR middle-end/31058
10085         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
10086         the same way as *_DIV_EXPR.
10087
10088 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10089
10090         * recog.c (decode_asm_operands): No mixed declarations and code.
10091
10092 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10093
10094         * rtl.def (ASM_INPUT): Add location.
10095         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
10096         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
10097         (decode_asm_operands): Add loc operand.
10098         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
10099         * stmt.c (expand_asm): Rename to...
10100         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
10101         gen_rtx_ASM_INPUT_loc.
10102         (expand_asm_expr): Adjust.
10103         * recog.c (decode_asm_operands): Add loc operand.
10104         (check_asm_operands, extract_insn): Adjust.
10105         * reload1.c (maybe_fix_stack_asms): Likewise.
10106         * final.c (asm_insn_count): Likewise.
10107         (final_scan_insn): Output # line before and after asm.
10108
10109 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
10110
10111         * tree-ssa-structalias.c (variable_info): Remove
10112         finished_solution.
10113         (new_var_info): Ditto.
10114         (shared_bitmap_info_t): New structure.
10115         (shared_bitmap_table): New variable.
10116         (shared_bitmap_hash): New function.
10117         (shared_bitmap_eq): Ditto
10118         (shared_bitmap_lookup): Ditto.
10119         (shared_bitmap_add): Ditto.
10120         (merge_smts_into): Change to take bitmap directly.
10121         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
10122         (init_alias_vars): Init shared bitmap hashtable.
10123         (delete_points_to_sets): Delete shared bitmap hashtable.
10124         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
10125         is_aliased removal as a change that was still necessary was
10126         deleted.
10127
10128 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
10129
10130         * config/i386/i386.h (override_options): Conditionally disable
10131         x86_sahf for 64bit targets only.
10132
10133 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10134
10135         PR C/31072
10136         * c-decl.c (merge_decls): Don't call make_var_volatile.
10137         * varasm.c (make_var_volatile): Remove.
10138         * output.h (make_var_volatile): Remove.
10139
10140 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
10141
10142         PR tree-optimization/31085
10143         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
10144
10145 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10146
10147         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
10148         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
10149         ATTR_CONST_NOTHROW_LIST.
10150
10151         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
10152         FIX_TRUNC_EXPR.
10153
10154 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
10155
10156         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
10157
10158 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
10159
10160         PR 31013
10161         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
10162         is declared.
10163         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
10164         passed, use shared libgcc.
10165
10166 2007-03-08  Roger Sayle  <roger@eyesopen.com>
10167
10168         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
10169         instead of calling build2 with a GIMPLE_MODIFY_STMT.
10170         (honor_protect_cleanup_actions, lower_try_finally_switch):
10171         Likewise.
10172         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
10173         ifc_temp_var): Likewise.
10174         * tree-inline.c (setup_one_parameter): Likewise.
10175         * tree-mudflap.c (mf_decl_cache_locals,
10176         mf_build_check_statement_for): Likewise.
10177         * tree-nested.c (init_tmp_var, save_tmp_var,
10178         finalize_nesting_tree_1): Likewise.
10179         * tree-outof-ssa.c (insert_copy_on_edge,
10180         insert_backedge_copies): Likewise.
10181         * tree-profile.c (tree_gen_edge_profiler,
10182         tree_gen_ic_profiler): Likewise.
10183         * tree-scalar-evolution.c (scev_const_prop): Likewise.
10184         * tree-sra.c (sra_build_assignment): Likewise.
10185         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
10186         * tree-ssa-math-opts.c (insert_reciprocals,
10187         execute_cse_sincos_1): Likewise.
10188         * tree-tailcall.c (adjust_accumulator_values,
10189         adjust_return_value): Likewise.
10190         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
10191         * tree-vect-transform.c (vect_create_data_ref_ptr,
10192         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
10193         vect_create_epilog_for_reduction, vectorizable_reduction,
10194         vectorizable_call, vectorizable_conversion,
10195         vectorizable_assignment, vectorizable_operation,
10196         vectorizable_type_demotion, vect_gen_widened_results_half,
10197         vect_permute_store_chain, vectorizable_store,
10198         vect_setup_realignment, vect_permute_load_chain,
10199         vectorizable_load, vectorizable_condition,
10200         vect_create_cond_for_align_checks): Likewise.
10201         * tree-vrp.c (build_assert_expr_for): Likewise.
10202
10203 2007-03-08  Ian Lance Taylor  <iant@google.com>
10204
10205         * tree-vrp.c: Include "intl.h".
10206         (usable_range_p): New static function.
10207         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
10208         overflowed values, juts set *strict_overflow_p.
10209         (compare_values): Only return -2 if one of the operands is not a
10210         constant.
10211         (compare_ranges): Call usable_range_p.
10212         (compare_range_with_value): Likewise.
10213         (vrp_evaluate_conditional_warnv): Rename from
10214         vrp_evaluate_conditional.  Make static.  Change all callers.
10215         (vrp_evaluate_conditional): New function.
10216         (simplify_div_or_mod_using_ranges): Issue warning about reliance
10217         on signed overflow.
10218         (simplify_abs_using_ranges): Likewise.
10219         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
10220         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
10221         within_stmt parameter.
10222         * tree-ssa-propagate.c (fold_predicate_in): Update call to
10223         vrp_evaluate_conditional.
10224         * tree-ssa-threadedge.c
10225         (record_temporary_equivalences_from_stmts_at_dest): Change
10226         simplify parameter to take a second tree parameter.
10227         (simplify_control_stmt_condition): Likewise.
10228         (thread_across_edge): Likewise.
10229         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10230         (thread_across_edge): Likewise.
10231         * Makefile.in (tree-vrp.o): Depend upon intl.h.
10232
10233 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
10234
10235         * config/i386/i386.h (TARGET_SAHF): New define.
10236         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
10237         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
10238         (x86_sahf): New global variable.
10239         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
10240         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
10241         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
10242         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
10243         for 64-bit.
10244         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
10245         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
10246         when expanding fcomi/sahf based tests.
10247         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
10248         expanding sahf based alternative. Emit sahf based sequence when
10249         optimizing for code size.
10250         * config/i386/i386.md (x86_sahf_1): Do not disable for
10251         TARGET_64BIT, enable for TARGET_SAHF.
10252
10253 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
10254
10255         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
10256         spurious whitespace from error message.
10257
10258 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
10259
10260         PR c++/30852
10261         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
10262
10263 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
10264
10265         * c-decl.c (grokdeclarator): Disable warnings for anonymous
10266         bitfields.
10267         * tree-sra.c (instantiate_element): Propagate disabled warnings
10268         from the element itself to the created variable.
10269
10270 2007-03-07  Richard Henderson  <rth@redhat.com>
10271
10272         PR target/30848
10273         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
10274         silently fix up the stack in the case of a missing register.
10275
10276 2007-03-07  Paul Brook  <paul@codesourcery.com>
10277
10278         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
10279
10280 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
10281
10282         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
10283         New.
10284         (phase1_vrs): Use them.
10285         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
10286         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
10287         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
10288         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
10289         __gnu_Unwind_Restore_WMMXC if required.
10290         (_Unwind_VRS_Pop): Implement iWMMXt support.
10291         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
10292         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
10293         gnu_Unwind_Save_WMMXC): Define.
10294
10295 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
10296
10297         * config/vxworks.h (vxworks_override_options): Declare.
10298         (VXWORKS_OVERRIDE_OPTIONS): Use it.
10299         * config/vxworks.c: Include target.h and toplev.h.
10300         (vxworks_override_options): New function.
10301         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
10302
10303 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
10304
10305         * config/s390/s390.c (override_options): Don't emit an error when
10306         -mstack-size is used without providing -mstack-guard.
10307         (s390_emit_prologue): Choose stack_guard value automatically if not
10308         provided via command line.
10309         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
10310
10311 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
10312
10313         * config/i386/i386.c (output_set_got): Add a GOT initialization
10314         sequence for VxWorks PIC.
10315         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
10316         around labels as well as symbols.  Use gotoff_operand instead
10317         of local_symbolic_operand.
10318         (legitimize_pic_address): Use gotoff_operand instead of
10319         local_symbolic_operand.  Use @GOT accesses for labels as
10320         well as symbols.
10321         (ix86_output_addr_diff_elt): Use PC-relative rather than
10322         GP-relative offsets for VxWorks PIC.
10323         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
10324         no_new_pseudos.  Check whether the returned register is op0.
10325         * config/i386/i386.md (tablejump): Use PC-relative rather than
10326         GP-relative offsets for VxWorks PIC.
10327         * config/i386/predicates.md (gotoff_operand): New predicate.
10328
10329 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10330
10331         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
10332         before defining.
10333         * config/vxworks-dummy.h: New file.
10334         * config/i386/i386.h: Include it.
10335
10336 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
10337
10338         * dwarf2out.c (is_inlined_entry_point): New
10339         (add_high_low_attributes): Emit DW_AT_entry_pc along with
10340         DW_AT_ranges if the first subblock is the entry point.
10341
10342 2007-03-06  David Daney  <ddaney@avtrex.com>
10343
10344         * doc/install.texi (mips-*-*): Change recommended binutils
10345         version.
10346
10347 2007-03-06  Anatoly Sokolov <aesok@post.ru>
10348
10349         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
10350         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
10351         devices.
10352         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10353         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10354
10355 2007-03-06  Jan Hubicka  <jh@suse.cz>
10356
10357         * errors.h (warning, error, fatal, internal_error): Mark as cold.
10358         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
10359         are hot.
10360         (probably_cold_bb_p): Cold functions are cold.
10361         (probably_never_executed_bb_p): Cold functions are cold.
10362         (tree_bb_level_predictions): Predict calls to cold functions as not
10363         taken.
10364         (compute_function_frequency): Check hot/cold attributes.
10365         * function.h (function_frequency): Update comments.
10366         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
10367         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
10368         (c_common_att): Add cold and hot.
10369
10370         * doc/extend.texi (hot,cold attributes): Document.
10371
10372 2007-03-06  Andrew Haley  <aph@redhat.com>
10373
10374         * function.c (expand_function_end): Move blockage to just after we
10375         emit the label for the naked return from the function.
10376
10377 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10378
10379         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
10380         before redefining.
10381
10382 2007-03-06  Jan Hubicka  <jh@suse.cz>
10383
10384         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
10385         loaded for constant large models.  Non-large 64bit PIC can do.
10386         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
10387         * cmodel.h: Add LARGE PIC.
10388         * i386.md (UNSPEC_PLTOFF): New.
10389         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
10390         needed.
10391         (*call_1_rex64): Disable for large models.
10392         (*call_1_rex64_large): New.
10393         (*call_value_1_rex64): Disable for large models.
10394         (*call_value_1_rex64_large): New.
10395         (set_rip_rex4): New.
10396         (set_got_offset_rex64): New.
10397         * predicates.md (constant_call_address_operand): For large model
10398         constant calls are not possible.
10399         * i386-protos.h (construct_plt_address): Declare.
10400         * i386.c (override_options): Accept large models.
10401         (ix86_expand_prologue): Expand large PIC GOT pointer load.
10402         (legitimate_constant_p): Add new UNSPECs.
10403         (legitimate_pic_operand_p): Likewise.
10404         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
10405         (legitimize_pic_address): Do easy RIP relative way for TLS only for
10406         non-large model.
10407         (output_pic_addr_const): Add PLTOFF.
10408         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
10409         (ix86_expand_move): Legitimize pic address when in PIC mode.
10410         (construct_plt_address): New function.
10411         (ix86_expand_call): Offload the address to register and use GOT pointer
10412         for large model.
10413         * invoke.texi (mcmodel=large): Update documentation.
10414
10415 2007-03-06  Richard Henderson  <rth@redhat.com>
10416
10417         * config/i386/i386.c (x86_use_leave, x86_push_memory,
10418         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
10419         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
10420         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
10421         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
10422         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
10423         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
10424         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
10425         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
10426         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
10427         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10428         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
10429         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10430         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10431         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
10432         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
10433         x86_schedule, x86_use_bt, x86_pad_returns,
10434         x86_use_xchgb): Merge into ...
10435         (ix86_tune_features): ... here.  New array.
10436         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10437         x86_bswap): Merge into ...
10438         (ix86_arch_features): ... here.  New array.
10439         (x86_3dnow_a): Remove.
10440         (x86_accumulate_outgoing_args): Make static.
10441         (x86_arch_always_fancy_math_387): Make static.
10442         (ix86_tune_mask, ix86_arch_mask): Move ...
10443         (override_options): ... to local variables here.  Apply the
10444         appropriate mask to each element of ix86_arch_features and
10445         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
10446         as were done in the old macros.
10447         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
10448         * config/i386/i386.h (x86_use_leave, x86_push_memory,
10449         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
10450         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
10451         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
10452         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
10453         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
10454         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
10455         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
10456         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
10457         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
10458         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10459         x86_accumulate_outgoing_args, x86_prologue_using_move,
10460         x86_epilogue_using_move, x86_decompose_lea,
10461         x86_arch_always_fancy_math_387, x86_shift1,
10462         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10463         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10464         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
10465         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10466         x86_use_incdec, x86_pad_returns, x86_bswap,
10467         x86_partial_flag_reg_stall): Remove.
10468         (enum ix86_tune_indices): New.
10469         (ix86_tune_features): New.
10470         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
10471         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
10472         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
10473         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
10474         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
10475         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
10476         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
10477         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
10478         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
10479         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
10480         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
10481         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
10482         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
10483         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
10484         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
10485         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
10486         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
10487         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
10488         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
10489         TARGET_EXT_80387_CONSTANTS): Use it.
10490         (enum ix86_arch_indices): New.
10491         (ix86_arch_features): New.
10492         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
10493         TARGET_BSWAP): Use it.
10494         (ix86_tune_mask, ix86_arch_mask): Remove.
10495
10496 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
10497
10498         PR bootstrap/31020
10499         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
10500         Define using $${sysroot_headers_suffix}.
10501         * configure: Regenerate.
10502         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
10503         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
10504         defined.
10505         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
10506         * gcc.c (print_sysroot_headers_suffix): New.
10507         (option_map): Include --print-sysroot-headers-suffix.
10508         (display_help): Mention -print-sysroot-headers-suffix.
10509         (process_command): Handle -print-sysroot-headers-suffix.
10510         (do_spec_1): Append multilib directory to include-fixed path if
10511         sysroot suffixes in use.
10512         (main): Handle -print-sysroot-headers-suffix.
10513         * Makefile.in (start.encap): Don't depend on xlimits.h
10514         (xlimits.h): Remove.
10515         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
10516         limits.h for each multilib in fixinc_list.
10517         (fixinc_list, s-fixinc_list): New.
10518         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
10519         generate them for each multilib in fixinc_list.
10520         (stmp-fixproto): Use include-fixed.  Run fixproto for each
10521         multilib in fixinc_list.
10522         (mostlyclean): Don't remove xlimits.h.
10523         (clean): Remove include-fixed.
10524         (real-install-headers-tar, real-install-headers-cpio,
10525         real-install-headers-cp): Don't copy include, only include-fixed.
10526         (install-mkheaders): Depend on fixinc_list.  Don't depend on
10527         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
10528         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
10529         SYSTEM_HEADER_DIR setting in mkheaders.conf.
10530
10531 2007-03-06  Jan Hubicka  <jh@suse.cz>
10532
10533         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
10534         NANs easilly.
10535
10536 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10537
10538         * configure.ac: Allow tm_file to contain build-directory files.
10539         * configure: Regenerate.
10540         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
10541         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
10542         * config/m68k/print-sysroot-suffix.sh: New file.
10543
10544 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10545
10546         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
10547         of pic_offset_table_rtx if reload_completed.
10548         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
10549         PIC_OFFSET_TABLE_REGNUM.
10550         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
10551         return true.
10552         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
10553         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
10554
10555 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10556
10557         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10558         functions that call eh_return.
10559
10560 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10561
10562         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10563         functions that need a constant pool.
10564
10565 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10566
10567         PR target/28181
10568         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
10569         (m68k_preferred_reload_class): Likewise.
10570         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
10571         (SECONDARY_RELOAD_CLASS): Define.
10572         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
10573         (LIMIT_RELOAD_CLASS): Delete.
10574         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
10575         registers from storing bytes.
10576         (m68k_secondary_reload_class): New function.
10577         (m68k_preferred_reload_class): Likewise.
10578
10579 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10580
10581         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
10582         leaf functions.
10583         (m68k_expand_prologue): Likewise.
10584
10585 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10586
10587         * config/m68k/m68k-protos.h (output_sibcall): Declare.
10588         (mips_expand_epilogue): Add a bool parameter.
10589         (m68k_legitimize_sibcall_address): Declare.
10590         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
10591         (m68k_expand_epilogue): Add a parameter to select between sibling
10592         and normal epilogues.  Only generate a return for the latter.
10593         (m68k_ok_for_sibcall_p): New function.
10594         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
10595         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
10596         (sibcall_value, *sibcall_value): Likewise.
10597         (*call, *call_value): Require !SIBLING_CALL_P.
10598         (epilogue): Update call to m68k_expand_epilogue.
10599         (sibcall_epilogue): New pattern.
10600         * config/m68k/predicates.md (const_call_operand): Say that this
10601         predicate applies to sibling calls too.
10602         (sibcall_operand): New predicate.
10603
10604 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10605
10606         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
10607         alternatives as movsi_cf.
10608         (movsf_cf_hard): Add commentary.
10609
10610 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
10611             Richard Sandiford  <richard@codesourcery.com>
10612
10613         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
10614         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
10615         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
10616         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
10617         as being live on exit from an interrupt function.
10618         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
10619         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
10620         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
10621         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
10622         (m68k_interrupt_function_p): Globalize.
10623         (m68k_compute_frame_layout): Remove reverse mask code.
10624         (m68k_emit_movem, m68k_set_frame_related): New functions.
10625         (m68k_output_function_prologue): Delete in favor of...
10626         (m68k_expand_prologue): ...this new function.
10627         (m68k_output_function_epilogue): Delete in favor of...
10628         (m68k_expand_epilogue): ...this new function.
10629         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
10630         functions.
10631         (print_operand): Handle %?.
10632         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
10633         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
10634         (prologue, epilogue): New patterns.
10635         (return): Turn into a define_expand.
10636         (*return): New pattern, derived from old "return" pattern.  Use rte
10637         rather than rts for interrupt functions.  Only use rtd if the pop
10638         count is nonzero.
10639         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
10640         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
10641         (link, *link, unlink, *unlink, load_got): Likewise.
10642
10643 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10644
10645         PR target/23482
10646         PR target/17114
10647         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
10648         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
10649         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
10650         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
10651         and m68k_matches_u_p.
10652         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
10653         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
10654         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
10655         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
10656         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
10657         (REG_STRICT_P): New macro.
10658         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
10659         PCREL_GENERAL_OPERAND_OK.
10660         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
10661         m68k_legitimate_base_reg_p.
10662         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
10663         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
10664         (PIC_CASE_VECTOR_ADDRESS): Update comment.
10665         * config/m68k/m68k.c (m68k_address): New structure.
10666         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
10667         (m68k_decompose_index, m68k_legitimate_constant_address_p)
10668         (m68k_jump_table_ref_p, m68k_decompose_address)
10669         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
10670         (m68k_matches_u_p): New functions.
10671         (print_operand_address): Rewrite to use m68k_decompose_index.
10672
10673 2007-03-05  David Taylor  <dtaylor@emc.com>
10674
10675         * gcc.c: Correct copyright date in --version output.
10676
10677 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10678
10679         * pa.md: In unamed move patterns, disparge copies between general
10680         and floating point registers using '?' modifier.  Don't include 'f'
10681         constraint for register preferences in DImode, SImode, HImode and
10682         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
10683         Remove constraints for copies between general and floating registers
10684         in soft-float DFmode pattern.
10685         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
10686         floating register.
10687         (movsf): Likewise.
10688
10689 2007-03-05  Mike Stump  <mrs@apple.com>
10690
10691         * c-common.c (targetcm): Add.
10692         * c-opts.c (c_common_handle_option): Handle language specific
10693         target options.
10694         * opts.c (handle_option): Verify language for target options, if
10695         any are given.
10696         * opth-gen.awk: Add CL_LANG_ALL.
10697         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
10698         (TARGETCM_INITIALIZER): Add.
10699         * target.h (struct gcc_targetcm): Add.
10700         (targetcm): Add.
10701         * targhooks.c (default_handle_c_option): Add.
10702         * targhooks.h (default_handle_c_option): Add.
10703         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
10704
10705         * config/darwin.opt (iframework): Add.
10706         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
10707         * config/darwin-c.c (handle_c_option): Add.
10708         (TARGET_HANDLE_C_OPTION): Add.
10709         (targetcm): Add.
10710         * doc/invoke.texi (Darwin Options): Add -iframework.
10711
10712 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10713
10714         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
10715         conversion.
10716
10717 2007-03-05  Ian Lance Taylor  <iant@google.com>
10718
10719         * c.opt (fgnu89-inline): New option.
10720         * c-opts.c (c_common_post_options): Set default value for
10721         flag_gnu89_inline.
10722         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
10723         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
10724         inline functions.
10725         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
10726         (grokdeclarator, start_function): Likewise.
10727         * c-cppbuiltin.c (c_cpp_builtins): Define either
10728         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
10729         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
10730         (C Dialect Options): Document -fgnu89-inline.
10731         * doc/extend.texi (Function Attributes): Explain what the
10732         gnu_inline attribute does.
10733         * doc/cpp.texi (Common Predefined Macros): Document
10734         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
10735
10736 2007-03-05  Ian Lance Taylor  <iant@google.com>
10737
10738         PR tree-optimization/31034
10739         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
10740         half-range if the other side is an overflow infinity.
10741
10742 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
10743
10744         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
10745         (bfin*-linux-uclibc*): New configuration.
10746         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
10747         defining.
10748         * config/bfin/linux.h: New file.
10749         * config/bfin/libgcc-bfin.ver: New file.
10750         * config/bfin/t-bfin-uclinux: New file.
10751         * config/bfin/t-bfin-linux: New file.
10752         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
10753         (TARGET_OS_CPP_BUILTINS): New macro.
10754
10755 2007-03-05  Richard Guenther  <rguenther@suse.de>
10756
10757         * fold-const.c (fold_binary): Remove duplicate folding
10758         of comparison of non-null ADDR_EXPR against null.
10759
10760 2007-03-05  Richard Guenther  <rguenther@suse.de>
10761             Dorit Nuzman  <dorit@il.ibm.com>
10762
10763         PR tree-optimization/26420
10764         * tree-vectorizer.c (vectorize_loops): Bail out early if there
10765         are no loops in the function.  Only print the number of
10766         vectorized loops if it is greater than zero or we are supposed
10767         to print information about unvectorized loops.
10768
10769 2007-03-05  Revital Eres  <eres@il.ibm.com>
10770
10771         * gcc.dg/var-expand1.c: New test.
10772         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
10773         when an accumulator is expanded.
10774
10775 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10776
10777         PR other/30465
10778         * c-common.c (convert_and_check): Don't give warnings for
10779         conversion if 'expr' already overflowed.
10780
10781 2007-03-04  Roger Sayle  <roger@eyesopen.com>
10782
10783         PR middle-end/30744
10784         * fold-const.c (fold_comparison): Enforce type consistency when
10785         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
10786
10787 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
10788
10789         * tree-ssa-address.c (create_mem_ref): Do not put an expression
10790         containing a cast to the base of TARGET_MEM_REF.
10791
10792 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
10793
10794         * tree.c (tree_contains_struct_check_failed): Remove spurious
10795         whitespace from error message.
10796
10797 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
10798
10799         PR target/30406
10800         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
10801         instead of precision.
10802
10803 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
10804             Nathan Sidwell  <nathan@codesourcery.com>
10805
10806         * emit-rtl.c (find_auto_inc): New.
10807         (try_split): recreate REG_INC notes,
10808         Use regular for loops rather than whiles.
10809
10810 2007-03-03  Andreas Schwab  <schwab@suse.de>
10811
10812         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
10813         * configure: Regenerate.
10814
10815 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10816
10817         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
10818         flag_rounding_math, not flag_unsafe_math_optimizations.
10819
10820         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
10821         fold_build2.
10822         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
10823         alpha_fold_vector_minmax): Likewise.
10824         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10825         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
10826
10827 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10828
10829         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
10830         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
10831         if the lhs has side-effects.
10832         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
10833
10834 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10835
10836         * config/i386/i386.h (TUNEMASK): Remove define.
10837         (ARCHMASK): Remove define.
10838         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
10839          Use ix86_arch_mask variable instead of ARCHMASK.
10840         * config/i386/i386.c (override_options): Ditto.
10841         (standard_80387_constant_p): Ditto.
10842
10843 2007-03-02  Ian Lance Taylor  <iant@google.com>
10844
10845         Used signed infinities in VRP.
10846         * tree-vrp.c (uses_overflow_infinity): New static function.
10847         (supports_overflow_infinity): New static function.
10848         (make_overflow_infinity): New static function.
10849         (negative_overflow_infinity): New static function.
10850         (positive_overflow_infinity): New static function.
10851         (is_negative_overflow_infinity): New static function.
10852         (is_positive_overflow_infinity): New static function.
10853         (is_overflow_infinity): New static function.
10854         (overflow_infinity_range_p): New static function.
10855         (compare_values_warnv): New function split out of compare_values.
10856         (compare_value): Call it.
10857         (set_value_range_to_nonnegative): Add overflow_infinity
10858         parameter.  Change caller.
10859         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
10860         Change callers.
10861         (vrp_expr_computes_nonzero): Likewise.
10862         (compare_ranges, compare_range_with_value): Likewise.
10863         (compare_name_with_value, compare_names): Likewise.
10864         (vrp_evaluate_conditional): Likewise.
10865         (set_value_range): Handle infinity
10866         (vrp_operand_equal_p, operand_less_p): Likewise.
10867         (extract_range_from_assert): Likewise.
10868         (vrp_int_const_binop): Likewise.
10869         (extract_range_from_binary_expr): Likewise.
10870         (extract_range_from_unary_expr): Likewise.
10871         (extract_range_from_comparison): Likewise.
10872         (extract_range_from_expr): Likewise.
10873         (dump_value_range): Likewise.
10874         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
10875         (test_for_singularity): Likewise.
10876         (vrp_int_const_binop): Remove inline qualifier.
10877         (adjust_range_with_scev): Add comment.
10878         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10879
10880 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
10881
10882         * tree-ssa-structalias.c (could_have_pointers): Tidy.
10883         (get_constraint_for): Likewise.
10884         (do_structure_copy): Likewise.
10885         (find_func_aliases): Fix references to MODIFY_EXPR.
10886         (intra_create_variable_infos): Tidy.
10887         * tree-ssa-operands.c (add_virtual_operand): Add argument
10888         IS_CALL_SITE.
10889         When adding members of alias sets, if IS_CALL_SITE is true and
10890         the symbol is not call-clobbered, skip it.
10891         Adjust all callers.
10892
10893 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10894
10895         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
10896         entry by means of emit_insn_at_entry.
10897
10898 2007-03-02  Richard Henderson  <rth@redhat.com>
10899
10900         * expr.h (promoted_input_arg): Remove decl.
10901         * function.c (promoted_input_arg): Merge into ...
10902         * combine.c (setup_incoming_promotions): ... only caller.
10903         Rearrange to avoid double loop.
10904
10905 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10906             Peter Bergner  <bergner@vnet.ibm.com>
10907             Janis Johnson  <janis187@us.ibm.com>
10908
10909         * config/rs6000/dfp.md: New file.
10910         * config/rs6000/rs6000.md: Include dfp.md.
10911         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
10912         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
10913         and TDmode decimal float modes in FP registers.
10914         (num_insns_constant): Likewise.
10915         (rs6000_legitimate_offset_address_p): Likewise.
10916         (rs6000_legitimize_address): Likewise.
10917         (rs6000_legitimize_reload_address): Likewise.
10918         (rs6000_legitimate_address): Likewise.
10919         (rs6000_emit_move): Likewise.
10920         (function_arg_boundary): Likewise.
10921         (function_arg_advance): Likewise.
10922         (rs6000_darwin64_record_arg_recurse): Likewise.
10923         (function_arg): Likewise.
10924         (rs6000_gimplify_va_arg): Likewise.
10925         (rs6000_split_multireg_move): Likewise.
10926         (rs6000_output_function_epilogue): Likewise.
10927         (rs6000_output_function_epilogue): Likewise.
10928         (rs6000_register_move_cost): Likewise.
10929         (rs6000_function_value): Likewise.
10930         (rs6000_libcall_value): Likewise.
10931
10932 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10933
10934         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
10935
10936 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10937
10938         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
10939         Use $MULTIDIR to choose between the kernel and RTP headers,
10940         and use $WIND_BASE and $WIND_USR to locate them.
10941
10942 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10943
10944         * config/i386/i386.c (override_options): Put initialization of
10945         ix86_tune_mask and ix86_arch_mask to the correct place.
10946
10947 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10948             Michael Meissner  <michael.meissner@amd.com>
10949
10950         PR target/31019
10951         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
10952         (ARCHMASK): Define.
10953         (TARGET_CMOVE): Use ARCHMASK.
10954         (TARGET_CMPXCHG): Ditto.
10955         (TARGET_CMPXCHG8B): Ditto.
10956         (TARGET_XADD): Ditto.
10957         (TARGET_BSWAP): Ditto.
10958         * config/i386/i386.c (ix86_tune_mask): New global variable.
10959         (ix86_arch_mask): Ditto.
10960         (override_options): Initialize ix86_tune_mask and
10961         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
10962         target_flags.
10963
10964 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10965
10966         PR 30992
10967         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
10968
10969 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
10970
10971         * target.h (init_dwarf_reg_sizes_extra): New target hook.
10972         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
10973         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
10974         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
10975         hook.
10976         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
10977         rs6000_init_dwarf_reg_sizes_extra): New.
10978         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
10979         SPE register high parts.
10980
10981 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
10982
10983         * Makefile.in: Add install-pdf target as
10984         copied from automake v1.10 rules.
10985         * configure.ac: Add install-pdf to target list.
10986         * configure: Regenerate.
10987
10988 2007-03-01  Paul Brook  <paul@codesourcery.com>
10989
10990         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
10991         modes to LDRD for DImode.
10992         (output_move_double): Fixup out of range ldrd/strd.
10993         (vfp_secondary_reload_class): Rename...
10994         (coproc_secondary_reload_class): ... to this.  Add wb argument.
10995         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
10996         coproc_secondary_reload_class for CLASS_IWMMXT.
10997         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
10998         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
10999
11000 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
11001
11002         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
11003         factor by the estimated number of iterations.
11004         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
11005         prefetch latency.
11006
11007         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
11008         decode_caches_intel, detect_caches_intel): New functions.
11009         (host_detect_local_cpu): Use detect_caches_amd and
11010         detect_caches_intel.
11011
11012 2007-03-01  Richard Henderson  <rth@redhat.com>
11013
11014         * expr.c (emit_move_complex_push): Export.
11015         (emit_move_complex_parts): Split out from ...
11016         (emit_move_complex): ... here.
11017         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
11018         * config/i386/i386.md (movcdi): New.
11019
11020 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
11021
11022         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
11023         size of mode1 to check for tieable modes in MMX case.
11024
11025 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
11026
11027         * Makefile.in (rtlanal.o): Depend on tree.h.
11028         * rtl.h (offset_within_section_p, split_const): Declare.
11029         * rtlanal.c: Include tree.h.
11030         (offset_within_block_p): New function, taken from
11031         mips_offset_within_object_p.
11032         (split_const): New function, taken from mips_split_const.
11033         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
11034         Declare.
11035         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
11036         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
11037         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
11038         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
11039         (m68k_illegitimate_symbolic_constant_p): New function.
11040         * config/m68k/m68k.md (movsi): Remove misleading predicates.
11041         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
11042         symbolic constant that might be outside the symbol's section,
11043         move the symbol first and then add the offset.
11044         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
11045         Override.
11046         * config/mips/mips.c (mips_split_const): Delete.
11047         (mips_offset_within_object_p): Delete.
11048         (mips_symbolic_constant_p): Use offset_within_section_p and
11049         split_const instead of mips_offset_within_object_p and
11050         mips_split_const.
11051         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
11052         (mips_legitimize_const_move, print_operand_reloc)
11053         (mips_dangerous_for_la25_p): Use split_const instead of
11054         mips_split_const.
11055
11056 2007-02-28  Eric Christopher  <echristo@apple.com>
11057
11058         * Makefile.in (install-include-dir): Don't rm -rf include.
11059
11060 2007-02-28  Richard Guenther  <rguenther@suse.de>
11061
11062         PR middle-end/30364
11063         * fold-const.c (fold_binary): Do not associate expressions
11064         with more than one variable for integer types that do not wrap.
11065
11066 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
11067
11068         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
11069         Delete, and replace with...
11070         (fold_builtin_call_array): This.  Update callers to use it.
11071         * fold-const.c (fold_build_call_list): Delete, and replace with...
11072         (fold_build_call_array): This.
11073         (fold_build_call_list_initializer): Delete, and replace with...
11074         (fold_build_call_array_initializer): This.
11075         * tree.h: Update declarations to reflect above changes.
11076
11077         * c-typeck.c (build_function_call): Store converted arguments
11078         in a stack-allocated array instead of building a list.
11079         (convert_arguments): Store arguments in the array passed in as an
11080         argument, and return the actual number of arguments.
11081         * c-format.c: (check_function_format): Pass arguments in an
11082         array instead of a list.
11083         * c-common.c (check_function_nonnull): Likewise.
11084         (check_function_sentinel): Likewise.
11085         (check_function_arguments): Likewise.
11086         * c-common.h: Update declarations to reflect above changes.
11087
11088 2007-02-28  Jan Hubicka  <jh@suse.cz>
11089
11090         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
11091         PRED_NEGATIVE_RETURN): Update outcomes.
11092
11093 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
11094
11095         * calls.c (emit_library_call_value_1): Handle partial registers
11096         correctly when building up CALL_INSN_FUNCTION_USAGE.
11097
11098 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11099
11100         * pa/predicates.md (move_src_operand): Allow zero for mode.
11101         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
11102         move pattern.
11103
11104 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
11105
11106         PR target/30970
11107         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
11108         *movv2df_internal): Enable pattern only for valid operand
11109         combinations.
11110         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
11111         tie only 128bit modes. For MMX registers, tie only 64bit modes.
11112
11113 2007-02-27  Mike Stump  <mrs@apple.com>
11114
11115         * config/darwin-crt3.c: Avoid compilation when compiling for a
11116         kext multilib.
11117
11118 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
11119
11120         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
11121         FIXED_INCLUDE_DIR.
11122         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
11123         for fixed headers and limits.h.
11124         (install-include-dir, install-headers-tar, install-headers-cpio,
11125         install-headers-cp, real-install-headers-tar,
11126         real-install-headers-cpio, real-install-headers-cp): Handle
11127         include-fixed as well as include.
11128         (install-mkheaders): Don't install files that go only in include
11129         not include-fixed.
11130         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
11131         from GCC_INCLUDE_DIR.
11132         * gcc.c (process_command): Remove special -BstageN/ handling.
11133         (do_spec_1): Add include-fixed directories.
11134
11135 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11136
11137         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
11138         _smulsi3_highpart.
11139         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
11140         New functions.
11141         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
11142         patterns.
11143
11144 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
11145
11146         * c-common.c (get_priority): Add check for
11147         SUPPORTS_INIT_PRIORITY.
11148
11149 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11150
11151         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
11152
11153         * config/bfin/bfin.c: Include "cfglayout.h".
11154         (MAX_LSETUP_DISTANCE): New macro.
11155         (struct loop_info): New members incoming, incoming_src and
11156         incoming_dest.  Delete member predecessor.
11157         (length_for_loop): New function.
11158         (bfin_optimize_loop): Handle more different loop structures.
11159         (bfin_discover_loop): Rework detection of predecessor blocks by
11160         examining incoming edges.
11161         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
11162         bfin_reorg_loops.
11163         (bfin_reorder_loops): New function.
11164         (bfin_reorg_loops): Use these three new functions.
11165
11166         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
11167         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
11168         (CONSTRAINT_LEN): Add entry for 'q'.
11169         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
11170         Add 'q' constraints.
11171         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
11172         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
11173
11174         * config/bfin/bfin.md (add_with_carry): New pattern.
11175         (s_or_u, su_optab, su_modifier): New code macros/attrs.
11176         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
11177         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
11178         support unsigned multiplies too.  Removed incorrect commutativity from
11179         operand 1 constraint where appropriate.
11180         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
11181         patterns.
11182         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
11183         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
11184         New patterns.
11185         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
11186         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
11187         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
11188         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
11189         usmulhisi_hh_huh): New patterns.
11190
11191         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
11192         lshifthi3): Fix output template to use half reg for operand 2.
11193
11194         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
11195         instead of R2.
11196
11197         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
11198
11199 2007-02-27  Andreas Schwab  <schwab@suse.de>
11200
11201         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
11202
11203 2007-02-27  Jan Hubicka  <jh@suse.cz>
11204
11205         * predict.c (last_basic_block_p): Remove.
11206         (tree_estimate_probability): Update return heuristic for commonized
11207         return blocks.
11208
11209 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
11210
11211         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
11212
11213 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
11214
11215         * doc/include/gcc-common.texi (versionsubtitle): New macro.
11216         * doc/cpp.texi: Standardize title page.
11217         * doc/cppinternals.texi: Likewise.
11218         * doc/gcc.texi: Standardize title page, remove version number
11219         from copyright page.
11220         * doc/gccint.texi: Likewise.
11221         * doc/install.texi: Standardize title page, add table of
11222         contents.
11223
11224 2007-02-26  Jan Hubicka  <jh@suse.cz>
11225
11226         * predict.def: Set outcomes according to more recent results.
11227         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
11228         Remove dead predictors.
11229         * predict.c (return_prediction): Fix pasto.
11230
11231 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11232
11233         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
11234         change; avoid a memory leak when returning early.
11235
11236 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
11237
11238         * c-decl.c (static_ctors): Move to c-common.c.
11239         (static_dtors): Likewise.
11240         (finish_function): Use c_record_cdtor_fn.
11241         (build_cdtor): Move to c-common.c.
11242         (c_write_global_declarations): Use c_build_cdtor_fns.
11243         * c-common.h (static_ctors): Declare.
11244         (static_dtors): Likewise.
11245         (c_record_cdtor_fn): Likewise.
11246         (c_build_cdtor_fns): Likewise.
11247         * c-common.c (static_ctors): New variable.
11248         (static_dtors): Likewise.
11249         (c_record_cdtor_fn): New function.
11250         (build_cdtor): Move from c-decl.c
11251         (c_build_cdtor_fns): New function.
11252
11253         * output.h (assemble_addr_to_section): Declare.
11254         (get_cdtor_priority_section): Likewise.
11255         * varasm.c (assemble_addr_to_section): New function.
11256         (get_cdtor_priority_section): Likewise.
11257         (default_named_section_asm_out_destructor): Use them.
11258         (destor_dtor_section_asm_out_destructor): Likewise.
11259         (default_named_section_asm_out_constructor): Likewise.
11260         (default_ctor_section_asm_out_constructor): Likewise.
11261         * config.gcc (*-*-vxworks*): Include vxworks.o.
11262         * config/t-vxworks (vxworks.o): New target.
11263         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
11264         (TARGET_ASM_CONSTRUCTOR): Define.
11265         (TARGET_ASM_DESTRUCTOR): Likewise.
11266         (vxworks_asm_out_constructor): Declare.
11267         (vxworks_asm_out_destructor): Likewise.
11268
11269         * c-common.c (get_priority): Check that we have not just an
11270         INTEGER_CST, but an integer constant with integeral type.
11271
11272 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
11273
11274         PR tree-optimization/30938
11275         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
11276         use &dt[nargs-1] instead of &dt[nargs] in the call to
11277         vect_is_simple_use().
11278
11279 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
11280
11281         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
11282         from register elimination as PRE_MODIFY / POST_MODIFY increments.
11283         Do not attempt to handle MEM inside auto-inc expressions.
11284         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
11285         of a register modified by an auto-inc expression.  However, do handle
11286         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
11287         (elimination_effects): Prohibit elimination of a register modified
11288         by an auto-inc expression.  Disable register elimination rules whose
11289         target register is modified by an auto-inc expression with variable
11290         increment.
11291
11292 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
11293
11294         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
11295         off-by-one error.
11296         (array_at_struct_end_p): New function.
11297         (idx_infer_loop_bounds): Use it.
11298         (estimate_numbers_of_iterations_loop): Export.
11299         * predict.c (predict_loops): Use estimated_loop_iterations_int.
11300         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
11301         (tree_estimate_probability): Call record_loop_exits.
11302         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
11303         (estimated_loop_iterations, estimated_loop_iterations_int,
11304         estimated_loop_iterations_tree): New functions.
11305         (analyze_siv_subscript_cst_affine,
11306         compute_overlap_steps_for_affine_1_2,
11307         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
11308         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
11309         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
11310         (PRED_LOOP_ITERATIONS_GUESSED): New.
11311         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
11312         * cfgloop.h (estimate_numbers_of_iterations_loop,
11313         estimated_loop_iterations_int): Declare.
11314
11315 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
11316
11317         * doc/extend.texi: Document optional priority argument to
11318         constructors and destructors.
11319         * tree.c (init_priority_for_decl): Adjust GTY markers.
11320         (init_ttree): Use priority-info hash functions for
11321         init_priority_for_decl.
11322         (tree_map_eq): Rename to ...
11323         (tree_map_base_eq): ... this.
11324         (tree_map_marked_p): Rename to ...
11325         (tree_map_base_marked_p): ... this.
11326         (tree_map_base_hash): New function.
11327         (decl_init_priority_lookup): Rework.
11328         (decl_fini_priority_lookup): New function.
11329         (decl_priority_info): New function.
11330         (decl_init_priority_insert): Use it.
11331         (decl_fini_priority_insert): Likewise.
11332         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
11333         hierarchy.
11334         (decl_restrict_base_insert): Likewise.
11335         (decl_debug_expr_insert): Likewise.
11336         (decl_value_expr_lookup): Likewise.
11337         (decl_value_expr_insert): Likewise.
11338         * tree.h (priority_type): New type.
11339         (decl_init_priority_lookup): Use priority_type.
11340         (decl_fini_priority_lookup): New function.
11341         (decl_init_priority_insert): Use priority_type.
11342         (decl_fini_priority_insert): New function.
11343         (DECL_HAS_INIT_PRIORITY): Tweak comments.
11344         (DECL_INIT_PRIORITY): Likewise.
11345         (SET_DECL_INIT_PRIORITY): Add comment.
11346         (DECL_FINI_PRIORITY): New macro.
11347         (SET_DECL_FINI_PRIORITY): Likewise.
11348         (DEFAULT_INIT_PRIORITY): Document.
11349         (MAX_INIT_PRIORITY): Likewise.
11350         (MAX_RESERVED_INIT_PRIORITY): Likewise.
11351         (tree_map_base): New type.
11352         (tree_map_base_eq): New function.
11353         (tree_map_base_hash): Likewise.
11354         (tree_map_base_marked_p): Likewise.
11355         (tree_map): Inherit from tree_map_base.
11356         (tree_map_eq): Make it a macro.
11357         (tree_map_marked_p): Likewise.
11358         (tree_int_map): Inherit from tree_map_base.
11359         (tree_int_map_eq): Make it a macro.
11360         (tree_int_map_hash): Likewise.
11361         (tree_int_map_marked_p): Likewise.
11362         (tree_priority_map): New type.
11363         (tree_priority_map_eq): New macro.
11364         (tree_priority_map_hash): Likewise.
11365         (tree_priority_map_marked_p): Likewise.
11366         * varasm.c (emults_decl): Adjust for refactoring of tree_map
11367         hierarchy.
11368         (emutls_common_1): Likewise.
11369         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
11370         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
11371         of tree_map hierarchy.
11372         * tree-cfg.c (move_stmt_r): Likewise.
11373         (new_label_mapper): Likewise.
11374         * c-tree.h (c_expand_body): Move to ...
11375         * c-common.h (c_expand_body): ... here.
11376         * c-decl.c (c_expand_body): Move to ...
11377         * c-common.c (c_expand_body): ... here.
11378         (c_common_attribute_table): Allow 1 argument for the constructor
11379         and destructor attributes.
11380         (get_priority): New function.
11381         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
11382         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
11383
11384 2007-02-24  Jan Hubicka  <jh@suse.cz>
11385
11386         PR middle-end/30509
11387         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
11388
11389 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11390             Jan Hubicka  <jh@suse.cz>
11391
11392         PR target/30778
11393         * i386.c (counter_mode): New function.
11394         (expand_set_or_movmem_via_loop): Use it.
11395         (expand_movmem_epilogue): Likewise; fix pasto.
11396         (ix86_expand_movmem): Do emit guard even for constant counts.
11397         (ix86_expand_setmem): Likewise.
11398
11399 2007-02-25  Nick Clifton  <nickc@redhat.com>
11400
11401         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
11402         (JUMP_TABLES_IN_TEXT_SECTION): Define.
11403
11404 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11405
11406         PR target/30770
11407         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
11408         count argument with 0x10, not with 0x16.
11409         (expand_setmem_epilogue): Ditto.
11410
11411 2007-02-24  Mike Stump  <mrs@apple.com>
11412
11413         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
11414         symbols.
11415
11416 2007-02-24  Richard Guenther  <rguenther@suse.de>
11417
11418         PR middle-end/30951
11419         * fold-const.c (fold_binary): Fold x +- CST op x for
11420         EQ_EXPR and NE_EXPR.
11421
11422 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11423
11424         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
11425
11426 2007-02-24  Jan Hubicka  <jh@suse.cz>
11427
11428         * cgraphunit.c (decide_is_function_needed): Honor
11429         -fkeep-inline-functions.
11430
11431 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11432
11433         * builtins.c (fold_builtin_modf): New.
11434         (fold_builtin_2): Use it.
11435
11436 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11437
11438         * loop-iv.c (implies_p): Detect additional cases where A implies B.
11439         (determine_max_iter): Take additional LOOP arg; all callers changed.
11440         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
11441         one using simplifications.
11442         (simplify_using_initial_values): Return if the expression becomes
11443         invalid due to altered regs.
11444
11445 2007-02-23  DJ Delorie  <dj@redhat.com>
11446
11447         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
11448
11449 2007-02-23  Mike Stump  <mrs@apple.com>
11450
11451         * tlink.c (scan_linker_output): Parse linker messages from
11452         darwin9's linker better.
11453
11454 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
11455
11456         PR debug/29614
11457         * varpool.c (varpool_assemble_pending_decls):  Set
11458         varpool_last_needed_node to null.
11459
11460 2007-02-23  DJ Delorie  <dj@redhat.com>
11461
11462         * config/i386/i386.c (ix86_data_alignment): Don't specify an
11463         alignment bigger than the object file can handle.
11464
11465 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
11466
11467         PR target/30825
11468         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
11469         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
11470         (*movsf_1): Penalize MMX moves.
11471
11472 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
11473
11474         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
11475         2^32-1 or more times unless flag_unsafe_loop_optimizations.
11476
11477         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
11478
11479 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11480
11481         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
11482         (fold_builtin_1): Use them.
11483         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11484         BUILT_IN_SIGNIFICAND.
11485
11486 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
11487
11488         * config/i386/i386.c (bdesc_1arg): Initialize
11489         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
11490         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
11491         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
11492         and IX86_BUILTIN_MOVSLDUP.
11493
11494 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
11495
11496         PR rtl-optimization/30841
11497         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
11498
11499 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11500
11501         * builtins.c (fold_builtin_frexp): New.
11502         (fold_builtin_2): Use it.
11503
11504 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
11505
11506         * doc/invoke.texi (Spec Files): Document getenv spec function.
11507
11508         * gcc.c (getenv_spec_function): New function.
11509         (static_spec_functions): Add it.
11510         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
11511         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
11512         header files.
11513
11514 2007-02-22  Michael Matz  <matz@suse.de
11515
11516         PR c++/29433
11517         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
11518         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
11519
11520 2007-02-22  Ian Lance Taylor  <iant@google.com>
11521
11522         PR debug/30898
11523         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
11524         (mem_loc_descriptor): Call it.
11525
11526 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
11527             Ira Rosen  <irar@il.ibm.com>
11528
11529         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
11530
11531 2007-02-22  Ira Rosen  <irar@il.ibm.com>
11532
11533         PR tree-optimization/30843
11534         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
11535         stores only after all the group is vectorized.
11536
11537 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
11538
11539         PR tree-optimization/30858
11540         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
11541         in the reduction cycle have a single use in the loop.
11542         * tree-vectorizer.h (relevant): Add documentation.
11543
11544 2007-02-20  Mike Stump  <mrs@apple.com>
11545
11546         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
11547         * configure: Regenerate.
11548
11549 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11550
11551         Change the defaults of some parameters and options.
11552         * config/spu/spu-protos.h (spu_optimization_options): Declare.
11553         * config/spu/spu.c (spu_optimization_options): Add.
11554         (spu_override_options): Change params in spu_optimization_options.
11555         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
11556
11557         Register 127 is only 16 byte aligned when used as a frame pointer.
11558         * config/spu/spu-protos.h (spu_init_expanders): Declare.
11559         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
11560         HARD_FRAME_POINTER_REGNUM.
11561         (spu_legitimate_address):  Use regno_aligned_for_reload.
11562         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
11563         aligned when frame_pointer_needed is true.
11564         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
11565         to 8 bits.
11566         * config/spu/spu.h (INIT_EXPANDERS): Define.
11567
11568         Make sure shift and rotate instructions have valid immediate operands.
11569         * config/spu/predicates.md (spu_shift_operand): Remove.
11570         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
11571         * config/spu/constraints.md (W, O): Extend range.
11572         * config/spu/spu.md (umask, nmask): Define.
11573         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
11574         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
11575         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
11576         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
11577         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
11578         (lshr<mode>3_reg):  Fix rtl description.
11579
11580         Make sure mulhisi immediate operands are valid.
11581         * config/spu/predicates.md (imm_K_operand): Add.
11582         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
11583
11584         Generate constants using fsmbi and andi.
11585         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
11586         (print_operand, spu_split_immediate, classify_immediate,
11587         fsmbi_const_p): Handle IC_FSMBI2.
11588
11589         Correctly handle a CONST_VECTOR containing symbols.
11590         * config/spu/spu.c (print_operand): Handle HIGH correctly.
11591         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
11592         (immediate_load_p): Allow symbols that use 2 instructions to create.
11593         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
11594         with symbols when flag_pic is set.
11595         (const_vector_immediate_p): New.
11596         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
11597         accept a CONST_VECTOR with symbols.
11598         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
11599         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
11600         correctly.
11601         * config/spu/spu.md (high, low): Delete.
11602         (low_<mode>): Define.
11603
11604         Remove INTRmode and INTR_REGNUM, which didn't work.
11605         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
11606         of INTR_REGNUM.
11607         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
11608         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
11609         peephole2 pattern): Don't use INTR or 131.
11610         (movintrcc): Delete.
11611         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
11612         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
11613         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
11614         (UNSPEC_SET_INTR): Add.
11615         * config/spu/spu-modes.def (INTR): Remove.
11616
11617         More accurate warnings about run-time relocations.
11618         * config/spu/spu.c (reloc_diagnostic): Test in_section.
11619
11620         Correctly warn about immediate arguments to specific intrinsics.
11621         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
11622         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
11623         the instruction predicate.
11624
11625         Fix tree check errors with latest update.
11626         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
11627         CALL_EXPR_ARG.
11628         (spu_expand_builtin): Use CALL_EXPR_FN.
11629
11630         Add missing specific intrinsics.
11631         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
11632         si_bislede.
11633         * config/spu/spu_internals.h: Ditto.
11634
11635         Fix incorrect operand modifiers.
11636         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
11637         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
11638
11639         Optimize one case of zero_extend of a vec_select.
11640         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
11641
11642         Accept any immediate for hbr.
11643         * config/spu/spu.md (hbr):  Change s constraints to i.
11644
11645 2007-02-21  Paul Brook  <paul@codesourcery.com>
11646
11647         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
11648         condexec_count when skipping USE and CLOBBER.
11649
11650 2007-02-21  Nick Clifton  <nickc@redhat.com>
11651
11652         * common.opt (Warray-bounds): Add Warning attribute.
11653         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
11654         Likewise.
11655         (fsized-zeroes): Add Optimization attribute.
11656         (fsplit-wide-types, ftree-scev-cprop): Likewise.
11657         * c.opt (Wc++0x-compat): Add Warning attribute.
11658
11659 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
11660
11661         PR middle-end/30761
11662         * reload1.c (eliminate_regs_in_insn): In the single_set special
11663         case, attempt to re-recognize the insn before falling back to
11664         having reload fix it up.
11665
11666 2007-02-20  Eric Christopher  <echristo@gmail.com>
11667
11668         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
11669         Rewrite accordingly.
11670         (frv_read_iacc_argument): Ditto.
11671         (frv_expand_set_builtin): Take a call instead of arglist, update for
11672         above changes.
11673         (frv_expand_unop_builtin): Ditto.
11674         (frv_expand_binop_builtin): Ditto.
11675         (frv_expand_cut_builtin): Ditto.
11676         (frv_expand_binopimm_builtin): Ditto.
11677         (frv_expand_voidbinop_builtin): Ditto.
11678         (frv_expand_int_void2arg): Ditto.
11679         (frv_expand_prefetches): Ditto.
11680         (frv_expand_voidtriop_builtin): Ditto.
11681         (frv_expand_voidaccop_builtin): Ditto.
11682         (frv_expand_load_builtin): Ditto.
11683         (frv_expand_store_builtin): Ditto.
11684         (frv_expand_mdpackh_builtin): Ditto.
11685         (frv_expand_mclracc_builtin): Ditto.
11686         (frv_expand_mrdacc_builtin): Ditto.
11687         (frv_expand_mwtacc_builtin): Ditto.
11688         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
11689         calls for above.
11690
11691 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
11692
11693         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
11694         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
11695         cmpb instruction.
11696         (HAVE_GAS_DFP): Check for assembler support of decimal floating
11697         point instructions.
11698         * configure: Regenerate.
11699         * config.in: Regenerate.
11700         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
11701         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
11702         masks to power6 and power6x and to POWERPC_MASKS.
11703         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
11704         _ARCH_PWR6.
11705         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
11706         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
11707         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
11708         Access PROTOTYPE as variable, not mask.
11709
11710 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11711
11712         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
11713         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
11714         * combine.c (adjust_for_new_dest): Use it.
11715         * postreload.c (reload_combine): Likewise.
11716
11717 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11718
11719         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
11720         notes on an insn with multiple sets, even if single_set returns
11721         non-NULL for that insn.
11722
11723 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11724
11725         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
11726         scalbn and scalbln.
11727
11728 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
11729
11730         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
11731         if user didn't pass it.
11732         * config/i386/darwin.h (CC1_SPEC): Likewise.
11733         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
11734         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
11735         -mmacosx-version-min.
11736
11737 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11738             Uros Bizjak  <ubizjak@gmail.com>
11739
11740         * optabs.h (enum optab_index): Add new OTI_scalb.
11741         (scalb_optab): Define corresponding macro.
11742         * optabs.c (init_optabs): Initialize scalb_optab.
11743         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
11744         patterns.
11745         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
11746         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
11747         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
11748         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
11749         flag_unsafe_math_optimizations is set.
11750
11751         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
11752         to implement scalbf, scalb and scalbl built-ins as inline x87
11753         intrinsics.
11754
11755 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11756             DJ Delorie <dj@redhat.com>
11757
11758         PR other/30824
11759         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
11760         (diagnostic_report_diagnostic): ... here, and turn them into real
11761         errors. If warnings are inhibited, no need to do anything.
11762
11763 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
11764
11765         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
11766         better code generation.
11767
11768 2007-02-20  Ben Elliston  <bje@au.ibm.com>
11769
11770         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
11771
11772 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
11773
11774         * config/alpha/alpha.c, config/alpha/alpha.md,
11775         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
11776         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
11777         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
11778         config/arm/lib1funcs.asm: Follow spelling conventions.
11779
11780         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
11781         config/fr30/fr30.md, config/i386/i386.h,
11782         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11783         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
11784         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
11785         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
11786         config/rs6000/altivec.md, config/rs6000/rs6000.c,
11787         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
11788         config/sparc/sparc.c, config/sparc/sparc.h,
11789         config/sparc/sparc.md, config/spu/constraints.md,
11790         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
11791         conventions.
11792
11793 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
11794
11795         PR target/29943
11796         * varasm.c (use_blocks_for_decl_p): Return false for decls with
11797         alias attribute.
11798
11799 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11800
11801         * doc/invoke.texi (-ftree-lrs): Remove.
11802
11803 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
11804
11805         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
11806         NULL.
11807
11808 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
11809
11810         * config/ia64/ia64.c (ia64_expand_builtin): Use the
11811         new CALL_EXPR_FN macro for retrieving the function
11812         declaration of the input expression.
11813
11814 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11815
11816         * c.opt (Waddress): New.
11817         * common.opt (Walways-true): Delete.
11818         (Wstring-literal-comparison): Delete.
11819         * doc/invoke.texi (Warning Options): Delete -Walways-true and
11820         -Wstring-literal-comparison. Add -Waddress.
11821         (Waddress): New.
11822         (Walways-true): Delete.
11823         (Wstring-literal-comparison): Delete.
11824         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
11825         consistently instead of -Walways-true in example.
11826         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
11827         * c-typeck.c (parser_build_binary_op): Replace
11828         -Wstring-literal-comparison and -Walways-true with -Waddress.
11829         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
11830         with -Waddress.
11831
11832 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11833
11834         * tree-cfg.c (dump_function_to_file): Be prepared for functions
11835         without DECL_STRUCT_FUNCTION initialized.
11836
11837 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11838
11839         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
11840         due to calls to functions taking pointers as parameters.
11841
11842 2007-02-19  Richard Henderson  <rth@redhat.com>
11843
11844         PR debug/29558
11845         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
11846         in memory.
11847
11848 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11849
11850         * config/s390/s390.c (s390_call_saved_register_used,
11851         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
11852         accessed to the new scheme.
11853
11854 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11855
11856         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
11857         (cris_print_index, cris_print_operand, cris_print_operand_address)
11858         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
11859         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
11860         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
11861         GET_CODE () == xxx.
11862         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
11863         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
11864         GO_IF_LEGITIMATE_ADDRESS): Ditto.
11865         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
11866         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
11867         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
11868         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
11869         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
11870         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
11871         (uminsi3, call, call_value): Ditto.
11872         (define_split: indir_to_reg_split, unnamed): Ditto.
11873
11874 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
11875
11876         PR tree-optimization/30975
11877         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
11878         wrong assert.
11879
11880 2007-02-18  Eric Christopher  <echristo@gmail.com>
11881
11882         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
11883         Remove use of arglist.
11884         (mips_expand_builtin): Remove use of arglist, pass in expr.
11885         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
11886         (mips_expand_builtin_movtf): Ditto.
11887         (mips_expand_builtin_compare): Ditto.
11888
11889 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11890
11891         * tree-sra.c (sra_build_assignment): Replace assertion
11892         checking with a comment explaining why it can't be done.
11893
11894 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11895
11896         PR middle-end/30833
11897         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
11898         during CALL_EXPR representation conversion.
11899         * tree-ssa-propagate.c (set_rhs): Likewise.
11900
11901 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11902
11903         * tree-sra.c (sra_build_assignment): Disable assertion checking
11904         for now.
11905
11906 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11907
11908         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
11909         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11910         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
11911         Likewise.
11912         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
11913         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
11914         gimplify_init_ctor_eval_range, gimple_push_cleanup,
11915         gimplify_omp_for, gimplify_omp_atomic_pipeline,
11916         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
11917         force_gimple_operand): Likewise.
11918         * ipa-cp.c (constant_val_insert): Likewise.
11919         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
11920         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
11921         perfect_nestify): Likewise.
11922         * langhooks.c (lhd_omp_assignment): Likewise.
11923         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
11924         lower_copyprivate_clauses, lower_send_clauses,
11925         lower_send_shared_vars, expand_parallel_call,
11926         expand_omp_for_generic, expand_omp_for_static_nochunk,
11927         expand_omp_for_static_chunk, expand_omp_sections,
11928         lower_omp_single_copy, lower_omp_for_lastprivate,
11929         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
11930         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
11931         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
11932         Likewise.
11933
11934 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11935
11936         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
11937         config/sh/sh.md: Follow spelling conventions.
11938
11939         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
11940         config/frv/predicates.md: Follow spelling conventions.
11941
11942         * config/m68k/linux-unwind.h: Fix a comment typo.
11943         * target.h: Follow spelling conventions.
11944
11945 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11946
11947         PR rtl-optimization/28173
11948         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
11949         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
11950         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
11951         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
11952         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
11953
11954 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11955
11956         * builtins.c (fold_builtin_load_exponent): New.
11957         (fold_builtin_2): Use it.
11958
11959 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
11960
11961         PR rtl-optimization/30773
11962         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
11963         if we fail to attach a REG_EQUIV note.
11964
11965 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
11966             Roger Sayle  <roger@eyesopen.com>
11967
11968         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
11969
11970 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11971
11972         * calls.c (initialize_argument_information): Pass original EXP
11973         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
11974         code to split complex arguments here, as part of initializing the
11975         ARGS array.
11976         (expand_call): Remove code that builds a list of arguments and
11977         inserts implicit arguments into it.  Instead, just count how many
11978         implicit arguments there will be so we can determine the size of
11979         the ARGS array, and let initialize_argument_information do the work.
11980         (split_complex_values): Delete unused function.
11981
11982 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11983
11984         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
11985
11986 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11987
11988         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
11989         for arg pointer based indexed addressing.
11990
11991 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11992
11993         * config/ia64/ia64.h, config/ia64/ia64.md,
11994         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
11995         spelling conventions.
11996
11997 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11998
11999         * config/m68k/m68k.c (split_di): New.
12000         * config/m68k/m68k-protos.h: Declare split_di.
12001         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
12002           Improve predicate handling and split constant shifts.
12003
12004 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
12005
12006         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
12007         parameter for register bitfield operations, general predicates
12008         cleanup
12009
12010 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
12011
12012         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
12013         * config/m68k/linux-unwind.h: New file.
12014
12015 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
12016
12017         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
12018         config/i386/athlon.md, config/ia64/ia64.md,
12019         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
12020         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
12021         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
12022         tree-ssa-loop-niter.c, tree-vect-analyze.c,
12023         tree-vect-transform.c: Fix comment typos.
12024
12025 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
12026
12027         * sched-deps.c (find_insn_list): Remove.
12028         * sched-int.h: Remove the prototype for find_insn_list.
12029
12030 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
12031
12032         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
12033         to linker.
12034         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
12035         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
12036         darwin_rs6000_override_options.
12037         (C_COMMON_OVERRIDE_OPTIONS): Expect
12038         darwin_macosx_version_min to be non-NULL always.
12039         (TARGET_C99_FUNCTIONS): Likewise.
12040         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
12041         (DARWIN_MINVERSION_SPEC): New.
12042         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
12043         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
12044         to cc1*.
12045         (DARWIN_MINVERSION_SPEC): New.
12046         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
12047         value.
12048         * config/darwin-c.c (darwin_cpp_builtins): Expect
12049         darwin_macosx_version_min to be non-NULL always.
12050
12051         * config/rs6000/rs6000.c: Clean up trailing whitespace.
12052
12053 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
12054
12055         * config/i386/i386.h (x86_use_xchgb): New.
12056         (TARGET_USE_XCHGB): New macro.
12057         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
12058         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
12059         Split after reload into bswaphi for shifts of 8.
12060         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
12061         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
12062         or when optimizing for size.
12063
12064 2007-02-16  Richard Guenther  <rguenther@suse.de>
12065             Christian Bruel  <christian.bruel@st.com>
12066
12067         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
12068         DECLs but prefer SSA_NAMEs over DECLs.
12069
12070 2007-02-16  Richard Guenther  <rguenther@suse.de>
12071
12072         * tree-flow-inline.h (single_imm_use_p): Remove.
12073         (zero_imm_uses_p): Likewise.
12074         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
12075         instead of single_imm_use_p.
12076         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
12077         zero_imm_uses_p.
12078
12079 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12080
12081         PR other/27843
12082         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
12083         nested double- and backquotes.
12084
12085 2007-02-15  Roger Sayle  <roger@eyesopen.com>
12086
12087         PR middle-end/30391
12088         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
12089         should be unreachable.
12090         (build2_stat): Allow construction of MODIFY_EXPR at any time.
12091         For the time being redirect GIMPLE_MODIFY_STMT to the new
12092         (renamed) build_gimple_modify_stmt_stat.
12093         (build2_gimple_stat): Rename to...
12094         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
12095         Always build a GIMPLE_MODIFY_STMT node.
12096         * tree.h (build2_gimple, build2_gimple_stat): Delete.
12097         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
12098         declarations.
12099
12100         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
12101         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
12102         * tree-complex.c (set_component_ssa_name, expand_complex_move,
12103         expand_complex_div_wide): Likewise.
12104         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
12105         * tree-ssa-loop-im.c (schedule_sm): Likewise.
12106         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
12107         * tree-ssa-loop-manip.c (create_iv): Likewise.
12108         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
12109         abs_replacement): Likewise.
12110         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
12111         realify_fake_stores): Likewise.
12112
12113         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
12114         node rather than a GIMPLE_MODIFY_STMT node.
12115         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
12116         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
12117         Likewise.
12118         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
12119         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
12120         GIMPLE_MODIFY_STMT.
12121
12122 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12123
12124         PR middle-end/30433
12125         * fold-const.c (fold_comparison): Add back the
12126         folding of constant complex comparisions.
12127
12128 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12129
12130         PR middle-end/30729
12131         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
12132         effects unknown to this function, return early.
12133
12134 2007-02-15  Ian Lance Taylor  <iant@google.com>
12135
12136         * lower-subreg.c (move_eh_region_note): New static function.
12137         (resolve_simple_move): Call it.
12138         (decompose_multiword_subregs): Track blocks for which we resolve a
12139         simple move which is also a control flow insn.  Pass them to
12140         find_many_sub_basic_blocks.
12141         (pass_lower_subreg): Add TODO_verify_flow.
12142         (pass_lower_subreg2): Likewise.
12143
12144 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12145             Brooks Moses  <brooks.moses@codesourcery.com>
12146             Lee Millward  <lee.millward@codesourcery.com>
12147
12148         * tree.h (enum tree_code_class): Add tcc_vl_exp.
12149         (VL_EXP_CLASS_P): New.
12150         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
12151         TREE_CODE_LENGTH.
12152         (TREE_OPERAND_CHECK_CODE): Likewise.
12153         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
12154         (TREE_RTL_OPERAND_CHECK): Likewise.
12155         (tree_operand_check_failed): Make second parameter the whole tree
12156         instead of its code.  Fixed callers.
12157         (VL_EXP_CHECK): New.
12158         (TREE_OPERAND_LENGTH): New.
12159         (VL_EXP_OPERAND_LENGTH): New.
12160         (CALL_EXPR_FN): New.
12161         (CALL_EXPR_STATIC_CHAIN): New.
12162         (CALL_EXPR_ARGS): New.
12163         (CALL_EXPR_ARG): New.
12164         (call_expr_nargs): New.
12165         (CALL_EXPR_ARGP): New.
12166         (build_nt_call_list): Declare.
12167         (build_vl_exp_stat): Declare.
12168         (build_vl_exp): New.
12169         (build_call_list): Declare.
12170         (build_call_nary): Declare.
12171         (build_call_valist): Declare.
12172         (build_call_array): Declare.
12173         (call_expr_arg): Declare.
12174         (call_expr_argp): Declare.
12175         (call_expr_arglist): Declare.
12176         (fold_build_call_list): Declare.
12177         (fold_build_call_list_initializer): Declare.
12178         (fold_call_expr): Declare to replace fold_builtin.
12179         (fold_builtin_fputs): Update to agree with modified definition.
12180         (fold_builtin_strcpy): Likewise.
12181         (fold_builtin_strncpy): Likewise.
12182         (fold_builtin_memory_chk): Likewise.
12183         (fold_builtin_stxcpy_chk): Likewise.
12184         (fold_builtin_strncpy_chk): Likewise.
12185         (fold_builtin_next_arg): Likewise.
12186         (fold_build_call_expr): Declare.
12187         (fold_builtin_call_list): Declare.
12188         (fold_builtin_call_valist): Declare.
12189         (build_call_expr): Declare.
12190         (validate_arglist): Update to agree with modified definition.
12191         (tree_operand_length): New.
12192         (call_expr_arg_iterator): New.
12193         (init_call_expr_arg_iterator): New.
12194         (next_call_expr_arg): New.
12195         (first_call_expr_arg): New.
12196         (more_call_expr_args_p): New.
12197         (FOR_EACH_CALL_EXPR_ARG): New.
12198
12199         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
12200         and tcc_gimple_stmt.
12201         (tree_code_size): Update documentation.  Use sizeof (tree) rather
12202         than sizeof (char *).
12203         (tree_size): Likewise.  Add case for tcc_vl_exp.
12204         (tree_node_structure): Add case for tcc_vl_exp.
12205         (contains_placeholder_p): Likewise.
12206         (substitute_in_expr): Likewise.
12207         (substitute_placeholder_in_expr): Likewise.
12208         (stabilize_reference_1): Likewise.
12209         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
12210         to diagnose breakage of this interface for constructing CALL_EXPRs.
12211         (build_nt): Add similar assertion here.
12212         (build_nt_call_list): New.
12213         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
12214         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
12215         TREE_CODE_LENGTH.
12216         (get_callee_fndecl): Use new CALL_EXPR accessors.
12217         (tree_operand_check_failed): Change parameters to pass entire node
12218         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
12219         (process_call_operands): New.
12220         (build_vl_exp_stat): New.
12221         (build_call_list): New.
12222         (build_call_nary): New.
12223         (build_call_valist): New.
12224         (build_call_array): New.
12225         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12226         (call_expr_arglist): New.
12227
12228         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
12229         tcc_vl_exp instead of a fixed-size tcc_expression.
12230
12231         * doc/c-tree.texi (CALL_EXPR): Document new representation and
12232         accessors for CALL_EXPRs.
12233         (AGGR_INIT_EXPR): Likewise.
12234
12235 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12236             Brooks Moses  <brooks.moses@codesourcery.com>
12237             Lee Millward  <lee.millward@codesourcery.com>
12238
12239         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
12240         (expand_builtin_nonlocal_goto): Change parameter to be entire
12241         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
12242         (expand_builtin_prefetch): Likewise.
12243         (expand_builtin_classify_type): Likewise.
12244         (mathfn_built_in): Return NULL_TREE instead of 0.
12245         (expand_errno_check): Use new CALL_EXPR accessors.
12246         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
12247         Return NULL_RTX instead of 0.
12248         (expand_builtin_mathfn_2): Likewise.
12249         (expand_builtin_mathfn_3): Likewise.
12250         (expand_builtin_interclass_mathfn): Likewise.
12251         (expand_builtin_sincos): Likewise.
12252         (expand_builtin_cexpi): Likewise.
12253         (expand_builtin_int_roundingfn): Likewise.
12254         (expand_builtin_int_roundingfn_2): Likewise.
12255         (expand_builtin_pow): Likewise.
12256         (expand_builtin_powi): Likewise.
12257         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
12258         of arglist, fixing callers appropriately.  Use new CALL_EXPR
12259         accessors and constructors.  Return NULL_RTX instead of 0.
12260         (expand_builtin_strstr): Likewise.
12261         (expand_builtin_strchr): Likewise.
12262         (expand_builtin_strrchr): Likewise.
12263         (expand_builtin_strpbrk): Likewise.
12264         (expand_builtin_memcpy): Likewise.
12265         (expand_builtin_mempcpy): Likewise.
12266         (expand_builtin_mempcpy_args): New.
12267         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
12268         (expand_builtin_memmove_args): New.
12269         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
12270         (expand_movstr): Likewise.
12271         (expand_builtin_strcpy): Likewise.
12272         (expand_builtin_strcpy_args): New.
12273         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
12274         (expand_builtin_strncpy): Likewise.
12275         (expand_builtin_memset): Likewise.
12276         (expand_builtin_memset_args): New.
12277         (expand_builtin_bzero): Similarly to expand_builtin_memset.
12278         (expand_builtin_memcmp): Likewise.
12279         (expand_builtin_strcmp): Likewise.
12280         (expand_builtin_strncmp): Likewise.
12281         (expand_builtin_strcat): Likewise.
12282         (expand_builtin_strncat): Likewise.
12283         (expand_builtin_strspn): Likewise.
12284         (expand_builtin_strcspn): Likewise.
12285         (expand_builtin_args_info): Likewise.
12286         (expand_builtin_va_start): Likewise.
12287         (gimplify_va_arg_expr): Likewise.
12288         (expand_builtin_va_end): Likewise.
12289         (expand_builtin_va_copy): Likewise.
12290         (expand_builtin_frame_address): Likewise.
12291         (expand_builtin_alloca): Likewise.
12292         (expand_builtin_bswap): Likewise.
12293         (expand_builtin_unop): Likewise.
12294         (expand_builtin_fputs): Likewise.
12295         (expand_builtin_expect): Likewise.
12296         (expand_builtin_fabs): Likewise.
12297         (expand_builtin_copysign): Likewise.
12298         (expand_builtin_printf): Likewise.
12299         (expand_builtin_fprintf): Likewise.
12300         (expand_builtin_sprintf): Likewise.
12301         (expand_builtin_init_trampoline): Likewise.
12302         (expand_builtin_signbit): Likewise.
12303         (expand_builtin_fork_or_exec): Likewise.
12304         (expand_builtin_sync_operation): Likewise.
12305         (expand_builtin_compare_and_swap): Likewise.
12306         (expand_builtin_lock_test_and_set): Likewise.
12307         (expand_builtin_lock_release): Likewise.
12308         (expand_builtin): Likewise.
12309         (builtin_mathfn_code): Likewise.
12310
12311         (fold_builtin_constant_p): Pass call arguments individually instead
12312         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12313         accessors and constructors.  Return NULL_TREE instead of 0.
12314         (fold_builtin_expect): Likewise.
12315         (fold_builtin_classify_type): Likewise.
12316         (fold_builtin_strlen): Likewise.
12317         (fold_builtin_nan): Likewise.
12318         (integer_valued_real_p): Likewise.
12319         (fold_trunc_transparent_mathfn): Likewise.
12320         (fold_fixed_mathfn): Likewise.
12321         (fold_builtin_cabs): Likewise.
12322         (fold_builtin_sqrt): Likewise.
12323         (fold_builtin_cbrt): Likewise.
12324         (fold_builtin_cos): Likewise.
12325         (fold_builtin_cosh): Likewise.
12326         (fold_builtin_tan): Likewise.
12327         (fold_builtin_sincos): Likewise.
12328         (fold_builtin_cexp): Likewise.
12329         (fold_builtin_trunc): Likewise.
12330         (fold_builtin_floor): Likewise.
12331         (fold_builtin_ceil): Likewise.
12332         (fold_builtin_round): Likewise.
12333         (fold_builtin_int_roundingfn): Likewise.
12334         (fold_builtin_bitop): Likewise.
12335         (fold_builtin_bswap): Likewise.
12336         (fold_builtin_logarithm): Likewise.
12337         (fold_builtin_hypot): Likewise.
12338         (fold_builtin_pow): Likewise.
12339         (fold_builtin_powi): Likewise.
12340         (fold_builtin_exponent): Likewise.
12341         (fold_builtin_memset): Likewise.
12342         (fold_builtin_bzero): Likewise.
12343         (fold_builtin_memory_op): Likewise.
12344         (fold_builtin_bcopy): Deleted; call site changed to invoke
12345         fold_builtin_memory_op directly.
12346         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
12347         (fold_builtin_strncpy): Likewise.
12348         (fold_builtin_memcmp): Likewise.
12349         (fold_builtin_strcmp): Likewise.
12350         (fold_builtin_strncmp): Likewise.
12351         (fold_builtin_signbit): Likewise.
12352         (fold_builtin_copysign): Likewise.
12353         (fold_builtin_isascii): Likewise.
12354         (fold_builtin_toascii): Likewise.
12355         (fold_builtin_isdigit): Likewise.
12356         (fold_builtin_fabs): Likewise.
12357         (fold_builtin_abs): Likewise.
12358         (fold_builtin_fmin_fmax): Likewise.
12359         (fold_builtin_carg): Likewise.
12360         (fold_builtin_classify): Likewise.
12361         (fold_builtin_unordered_cmp): Likewise.
12362
12363         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
12364         New functions split out from fold_builtin_1.
12365         (fold_builtin_n): New.
12366         (fold_builtin_varargs): New.
12367         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
12368         instead.
12369         (fold_call_expr): New.
12370         (build_function_call_expr): Rewrite to use new helper function.
12371         (fold_builtin_call_list): New.
12372         (build_call_expr): New.
12373         (fold_builtin_call_valist): New.
12374         (rewrite_call_expr): New.
12375         (validate_arg): New.
12376         (validate_arglist): Change parameter to be entire CALL_EXPR instead
12377         of an arglist.  Change return type to bool.  Use new CALL_EXPR
12378         accessors.
12379
12380         (fold_builtin_strstr):  Pass call arguments individually instead
12381         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12382         accessors and constructors.  Return NULL_TREE instead of 0.
12383         (fold_builtin_strchr): Likewise.
12384         (fold_builtin_strrchr): Likewise.
12385         (fold_builtin_strpbrk): Likewise.
12386         (fold_builtin_strcat): Likewise.
12387         (fold_builtin_strncat): Likewise.
12388         (fold_builtin_strspn): Likewise.
12389         (fold_builtin_strcspn): Likewise.
12390         (fold_builtin_fputs): Likewise.
12391         (fold_builtin_next_arg): Likewise.
12392         (fold_builtin_sprintf): Likewise.
12393
12394         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
12395         NULL_RTX instead of 0.
12396         (expand_builtin_memory_chk): Likewise.
12397         (maybe_emit_chk_warning): Likewise.
12398         (maybe_emit_sprintf_chk_warning): Likewise.
12399
12400         (fold_builtin_object_size): Pass call arguments individually instead
12401         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12402         accessors and constructors.  Return NULL_TREE instead of 0.
12403         (fold_builtin_memory_chk): Likewise.
12404         (fold_builtin_stxcpy_chk): Likewise.
12405         (fold_builtin_strncpy_chk): Likewise.
12406         (fold_builtin_strcat_chk): Likewise.
12407         (fold_builtin_strcat_chk): Likewise.
12408         (fold_builtin_strncat_chk): Likewise.
12409         (fold_builtin_sprintf_chk): Likewise.
12410         (fold_builtin_snprintf_chk): Likewise.
12411         (fold_builtin_printf): Likewise.
12412         (fold_builtin_vprintf): Likewise.
12413
12414         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
12415         constructors.
12416         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
12417         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12418         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
12419         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
12420         (fold_unary): Likewise.
12421         (fold_binary): Likewise.
12422         (fold_ternary): Remove CALL_EXPR case, since they are no longer
12423         ternary expressions.
12424         (fold): Add logic for tcc_vl_exp.
12425         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
12426         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12427         (fold_build3_stat): Add assertion to flag broken interface for
12428         constructing CALL_EXPRs.
12429         (fold_build_call_list): New.
12430         (fold_build_call_list_initializer): New.
12431         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
12432         constructors.
12433         (fold_strip_sign_ops): Likewise.
12434
12435 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12436             Brooks Moses  <brooks.moses@codesourcery.com>
12437             Lee Millward  <lee.millward@codesourcery.com>
12438
12439         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
12440         accessors and dump arguments explicitly.
12441
12442         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
12443         TREE_CODE_LENGTH.
12444         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
12445         explicitly.
12446         (print_call_name): Use new CALL_EXPR accessors.
12447
12448         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
12449         CALL_EXPR arguments explicitly instead of as a list.  Use
12450         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12451
12452         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
12453         (vrp_visit_stmt): Likewise.
12454
12455         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
12456         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
12457         TREE_CODE_LENGTH.
12458         (force_move_till_expr): Likewise.
12459
12460         * targhooks.c (default_external_stack_protect_fail): Use
12461         build_call_expr instead of build_function_call_expr.
12462         (default_hidden_stack_protect_fail): Likewise.
12463
12464         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
12465         build the call.
12466
12467         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
12468         and walk arguments explicitly.
12469
12470         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
12471         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12472         (expand_simple_operations): Likewise.
12473         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
12474
12475         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
12476         of TREE_CODE_LENGTH.
12477         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
12478
12479         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
12480         instead of TREE_CODE_LENGTH.
12481
12482         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
12483         (tree_ic_transform): Likewise.
12484         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
12485         parameter instead of arglist.  Fix callers.
12486         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
12487         (tree_stringops_transform): Likewise.
12488         (tree_indirect_call_to_profile): Likewise.
12489         (tree_stringops_values_to_profile): Likewise.
12490
12491         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
12492         (eliminate_tail_call): Likewise.
12493
12494         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
12495
12496         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
12497         Use TREE_OPERAND_LENGTH and generalize to handle any number of
12498         operands.
12499         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
12500
12501         * omp-low.c (build_omp_barrier): Use build_call_expr.
12502         (lower_rec_input_clauses): Likewise.
12503         (lower_reduction_clauses): Likewise.
12504         (expand_parallel_call): Likewise.
12505         (maybe_catch_exception): Likewise.
12506         (expand_omp_for_generic): Likewise.
12507         (expand_omp_for_static_nochunk): Likewise.
12508         (expand_omp_sections): Likewise.
12509         (lower_omp_single_simple): Likewise.
12510         (lower_omp_single_copy): Likewise.
12511         (lower_omp_master): Likewise.
12512         (lower_omp_ordered): Likewise.
12513         (lower_omp_critical): Likewise.
12514
12515         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
12516         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
12517
12518         * tree-gimple.c (is_gimple_call_addr): Fix doc.
12519         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
12520         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
12521
12522         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
12523         and generalize to handle any number of operands.
12524         (chrec_contains_undetermined): Likewise.
12525         (tree_contains_chrecs): Likewise.
12526         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
12527
12528         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
12529
12530         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
12531         fold_call_expr instead of fold_builtin.
12532         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
12533         match declarations there.
12534         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
12535         updates.
12536
12537         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
12538         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12539
12540         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
12541         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
12542
12543         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
12544         accessors.
12545
12546         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
12547         (execute_cse_sincos): Use new CALL_EXPR accessors.
12548
12549         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
12550
12551         * gimple-low.c (lower_function_body): Use build_call_expr.
12552         (lower_builtin_setjmp): Likewise.
12553
12554         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
12555         (set_storage_via_libcall): Likewise.
12556         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
12557         instead of TREE_CODE_LENGTH.
12558         (expand_expr_real_1): Use new CALL_EXPR accessors.
12559
12560         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
12561         generalize to handle any number of operands.
12562         (TB_parent_eq): Likewise.
12563
12564         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
12565         (strip_builtin_expect): Likewise.
12566
12567         * function.c (gimplify_parameters): Use build_call_expr.
12568
12569         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
12570         instead of TREE_CODE_LENGTH.
12571
12572         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
12573         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
12574
12575         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
12576         iterators.
12577
12578         * gimplify.c (build_stack_save_restore): Use build_call_expr.
12579         (gimplify_decl_expr): Likewise.
12580         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
12581         Use new CALL_EXPR iterators.
12582         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
12583         (gimplify_modify_expr_to_memset): Likewise.
12584         (gimplify_variable_sized_compare): Likewise.
12585         (gimplify_omp_atomic_fetch_op): Likewise.
12586         (gimplify_omp_atomic_pipeline): Likewise.
12587         (gimplify_omp_atomic_mutex): Likewise.
12588         (gimplify_function_tree): Likewise.
12589
12590         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
12591         (call_expr_flags): Likewise.
12592         (expand_call): Likewise.
12593
12594         * except.c (expand_builtin_eh_return_data_regno): Pass entire
12595         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12596         accessors.
12597
12598         * coverage.c (create_coverage): Use build_call_expr.
12599
12600         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
12601         (temp_call_expr_obstack): New.
12602         (pool_copy_list): Delete.
12603         (temp_copy_call_expr): New.
12604         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
12605         CALL_EXPR accessors.  Get rid of special goo for copying argument
12606         lists and use temp_copy_call_expr instead.
12607         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
12608         CALL_EXPR accessors.
12609         (create_expression_by_pieces): Likewise.  Use build_call_array
12610         to construct the result instead of fold_build3.
12611         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
12612         dealing with argument lists.
12613         (init_pre): Remove references to expression_node_pool and
12614         list_node_pool.  Init temp_call_expr_obstack instead.
12615         (fini_pre): Remove references to expression_node_pool and
12616         list_node_pool.
12617
12618         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
12619         and walk arguments explicitly instead of as a list.
12620
12621         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
12622         (mx_register_decls): Likewise.
12623         (mudflap_register_call): Likewise.
12624         (mudflap_finish_file): Likewise.
12625
12626         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
12627         (ipa_callsite_compute_param): Likewise.
12628
12629         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
12630         accessors and constructor.
12631
12632         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
12633         accessors and constructor.
12634         (convert_tramp_reference): Likewise.
12635         (convert_call_expr): Likewise.
12636         (finalize_nesting_tree_1): Likewise.
12637
12638         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
12639         accessors.
12640
12641         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
12642
12643         * tree-inline.c (initialize_inlined_parameters): Pass entire
12644         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12645         accessors.
12646         (estimate_num_insns_1): Use new CALL_EXPR accessors.
12647         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
12648
12649         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
12650         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12651         (vectorizable_reduction): Likewise.
12652         (vectorizable_call): Use new CALL_EXPR iterators.
12653         (vectorizable_conversion): Use build_call_expr.
12654         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
12655         (vect_gen_widened_results_half): Use build_call_expr.
12656         (vect_setup_realignment): Likewise.
12657         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
12658
12659         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
12660         (pass_through_call): Likewise.
12661         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
12662         fold_builtin.
12663
12664         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
12665         (tree_gen_pow2_profiler): Likewise.
12666         (tree_gen_one_value_profiler): Likewise.
12667         (tree_gen_ic_func_profiler): Likewise.
12668         (tree_gen_average_profiler): Likewise.
12669         (tree_gen_ior_profiler): Likewise.
12670
12671         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
12672         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
12673         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12674
12675         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
12676         of TREE_CODE_LENGTH.
12677
12678         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
12679         of TREE_CODE_LENGTH.
12680
12681         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
12682         constructor.
12683         (convert_to_integer): Likewise.
12684
12685         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
12686         accessors.
12687
12688 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12689             Brooks Moses  <brooks.moses@codesourcery.com>
12690             Lee Millward  <lee.millward@codesourcery.com>
12691
12692         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
12693         accessors.
12694         * config/frv/frv.c (frv_expand_builtin): Likewise.
12695         * config/s390/s390.c (s390_expand_builtin): Likewise.
12696
12697         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
12698         (sparc_expand_builtin): Use new CALL_EXPR accessors.
12699
12700         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
12701         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
12702         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
12703         (ix86_expand_store_builtin): Likewise.
12704         (ix86_expand_unop_builtin): Likewise.
12705         (ix86_expand_unop1_builtin): Likewise.
12706         (ix86_expand_sse_compare): Likewise.
12707         (ix86_expand_sse_comi): Likewise.
12708         (ix86_expand_vec_init_builtin): Likewise.
12709         (ix86_expand_vec_ext_builtin): Likewise.
12710         (ix86_expand_vec_set_builtin): Likewise.
12711         (ix86_expand_builtin): Use new CALL_EXPR accessors.
12712
12713         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
12714         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
12715
12716         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
12717         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12718         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
12719
12720         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
12721         build_call_expr.
12722         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
12723         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
12724         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12725         (altivec_expand_abs_builtin): Likewise.
12726         (rs6000_expand_binop_builtin): Likewise.
12727         (altivec_expand_predicate_builtin): Likewise.
12728         (altivec_expand_lv_builtin): Likewise.
12729         (spe_expand_stv_builtin): Likewise.
12730         (altivec_expand_stv_builtin): Likewise.
12731         (rs6000_expand_ternop_builtin): Likewise.
12732         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
12733         (altivec_expand_st_builtin): Likewise.
12734         (altivec_expand_dst_builtin): Likewise.
12735         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
12736         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12737         (altivec_expand_vec_set_builtin): Likewise.
12738         (altivec_expand_vec_ext_builtin): Likewise.
12739         (altivec_expand_builtin): Use new CALL_EXPR accessors.
12740         (spe_expand_builtin): Likewise.
12741         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
12742         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12743         (spe_expand_evsel_builtin): Likewise.
12744         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
12745         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
12746
12747         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
12748         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12749         (arm_expand_unop_builtin): Likewise.
12750         (arm_expand_builtin): Use new CALL_EXPR accessors.
12751
12752         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
12753         accessors.
12754
12755         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
12756         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12757         (bfin_expand_unop_builtin): Likewise.
12758         (bfin_expand_builtin): Use new CALL_EXPR accessors.
12759
12760 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12761             Brooks Moses  <brooks.moses@codesourcery.com>
12762             Lee Millward  <lee.millward@codesourcery.com>
12763
12764         * c-semantics.c (build_stmt): Add internal diagnostic check.
12765
12766         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
12767         accessors.  Print arguments explicitly instead of as a list.
12768
12769         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
12770
12771         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
12772         (c_finish_omp_flish): Likewise.
12773
12774         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
12775         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
12776         instead of TREE_CODE_LENGTH.
12777         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
12778         (c_warn_unused_result): Likewise.
12779
12780 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12781
12782         PR c/26494
12783         * doc/invoke.texi (Warning Options): Remove
12784         -Werror-implicit-function-declaration.
12785         (Wimplicit-function-declaration): Update description.
12786         * opts.c (common_handle_option): Move handling of -Werror=* to...
12787         (enable_warning_as_error): ...here.
12788         * opts.h (enable_warning_as_error): Declare.
12789         * c-decl.c (implicit_decl_warning): Unless
12790         -Wno-implicit-function-declaration is given, emit a pedwarn if
12791         -std=c99 or emit a warning if -Wimplicit-function-declaration.
12792         * c.opt (Wimplicit-function-declaration): Replace
12793         mesg_implicit_function_declaration with
12794         warn_implicit_function_declaration.
12795         * c-opts.c (c_common_handle_option):
12796         -Werror-implicit-function-declaration is exactly equal as
12797         -Werror=implicit-function-declaration.
12798         (set_Wimplicit): Replace mesg_implicit_function_declaration with
12799         warn_implicit_function_declaration.
12800         (c_common_post_options): -Wimplict-function-declaration is enabled
12801         by default by -std=c99, otherwise is disabled by default.
12802         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
12803
12804 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12805
12806         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
12807         DECL on the rhs to a DECL on the lhs for debug info purposes if the
12808         former is ignored but not the latter.
12809
12810 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12811
12812         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
12813         is made and the reference doesn't use the alias set of its type,
12814         do not create the temporary using that type.
12815
12816 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
12817
12818         * jump.c: Remove prototypes for delete_computation and
12819         delete_prior_computation.
12820
12821 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12822
12823         * jump.c (get_label_after): Delete.
12824         (get_label_before, delete_computation, delete_jump,
12825         delete_prior_computation, follow_jumps): Move...
12826         * reorg.c (delete_computation, delete_prior_computation): ... here...
12827         (get_label_before, delete_jump): ... making these static ...
12828         (follow_jumps): ... and simplifying this since it only runs after
12829         reload.
12830         * rtl.h (get_label_after, get_label_before, delete_jump,
12831         follow_jumps): Delete prototypes.
12832
12833 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12834
12835         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
12836
12837 2007-02-15  Nick Clifton  <nickc@redhat.com>
12838
12839         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
12840         order to prevent it from being munged by the target.
12841
12842 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
12843
12844         * config/i386/i386.md: Remove misleading comment.
12845
12846 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12847
12848         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
12849         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
12850         invalid patterns.
12851
12852 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12853
12854         * tree-sra.c (instantiate_missing_elements): Canonicalize
12855         bit-field types.
12856         (sra_build_assignment): New.
12857         (generate_copy_inout, generate_element_copy,
12858         generate_element_zero, generate_one_element_init): Use it.
12859
12860 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12861
12862         * tree-sra.c (instantiate_missing_elements): Canonicalize
12863         bit-field types.
12864         (sra_build_assignment): New.
12865         (generate_copy_inout, generate_element_copy,
12866         generate_element_zero, generate_one_element_init): Use it.
12867
12868 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12869
12870         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
12871         limbo die nodes.
12872
12873 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
12874
12875         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
12876         types as aggregates not scalars.
12877         * function.c (assign_stack_temp_for_type): Likewise.
12878
12879 2007-02-14  Roger Sayle  <roger@eyesopen.com>
12880             Zdenek Dvorak  <dvorakz@suse.cz>
12881
12882         * tree-dump.c (dump_switch_p_1): Require exact match of the option
12883         name.
12884
12885 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
12886
12887         * passes.c (next_pass_1): Clear the next field of the copied
12888         pass structure.
12889
12890 2007-02-14  Richard Henderson  <rth@redhat.com>
12891
12892         * tree-sra.c (early_sra): New.
12893         (decl_can_be_decomposed_p): Deny va_list if early_sra.
12894         (tree_sra_early, pass_sra_early): New.
12895         * tree-pass.h (pass_sra_early): Declare.
12896         * passes.c (init_optimization_passes): Use it.
12897
12898 2007-02-14  Richard Guenther  <rguenther@suse.de>
12899
12900         * flags.h (issue_strict_overflow_warning): Convert to a macro.
12901
12902 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
12903
12904          PR tree-optimization/30771
12905         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
12906         also phi nodes.
12907         (vect_analyze_operations): Induction phis can now be marked as
12908         used_in_loop.
12909         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
12910         Update documentation accordingly.
12911
12912 2007-02-14  Nick Clifton  <nickc@redhat.com>
12913
12914         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
12915         most 3 arguments are supported.
12916         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
12917
12918 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
12919
12920         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
12921         Ensure dst->current is valid.
12922
12923 2007-02-13  Paul Brook  <paul@codesourcery.com>
12924
12925         * config.gcc: Add arm*-*-uclinux-*eabi.
12926         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
12927         (SUBTARGET_EXTRA_LINK_SPEC): Define.
12928         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
12929         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
12930         (LINK_SPEC): Define.
12931         (LIB_SPEC): Define.
12932         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
12933         register.
12934         * config/arm/uclinux-eabi.h: New file.
12935         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
12936         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
12937         based targets.
12938
12939 2007-02-13  Ian Lance Taylor  <iant@google.com>
12940
12941         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
12942         * flags.h (warn_strict_overflow): Declare.
12943         (enum warn_strict_overflow_code): Define.
12944         (issue_strict_overflow_warning): New static inline function.
12945         * opts.c (warn_strict_overflow): New variable.
12946         (common_handle_option): Handle OPT_Wstrict_overflow and
12947         OPT_Wstrict_overflow_.
12948         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
12949         OPT_Wall.
12950         * fold-const.c: Include intl.h.
12951         (fold_deferring_overflow_warnings): New static variable.
12952         (fold_deferred_overflow_warning): New static variable.
12953         (fold_deferred_overflow_code): New static variable.
12954         (fold_defer_overflow_warnings): New function.
12955         (fold_undefer_overflow_warnings): New function.
12956         (fold_undefer_and_ignore_overflow_warnings): New function.
12957         (fold_deferring_overflow_warnings_p): New function.
12958         (fold_overflow_warning): New static function.
12959         (make_range): Add strict_overflow_p parameter.  Change all
12960         callers.
12961         (extract_muldiv, extract_muldiv_1): Likewise.
12962         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
12963         tree_expr_nonnegative_p.
12964         (fold_negate_expr): Call fold_overflow_warning.
12965         (fold_range_test): Likewise.
12966         (fold_comparison): Likewise.
12967         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
12968         instead of tree_expr_nonnegative_p.
12969         (tree_expr_nonnegative_warnv_p): Rename from
12970         tree_expr_nonnegative_p, add strict_overflow_p parameter.
12971         (tree_expr_nonnegative_p): New function.
12972         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
12973         strict_overflow_p parameter.
12974         (tree_expr_nonzero_p): New function.
12975         * passes.c (verify_interpass_invariants): New static function.
12976         (execute_one_pass): Call it.
12977         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
12978         warnings.
12979         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
12980         (estimate_numbers_of_iterations): Likewise.
12981         (scev_probably_wraps_p): Likewise.
12982         * tree-ssa-ccp.c: Include "toplev.h".
12983         (evaluate_stmt): Defer fold overflow warnings until we know we are
12984         going to optimize.
12985         (struct fold_stmt_r_data): Add stmt field.
12986         (fold_stmt_r): Defer fold overflow warnings until we know we
12987         optimized.
12988         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
12989         (fold_stmt_inplace): Likewise.
12990         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
12991         (cleanup_control_expr_graph): Defer fold overflow warnings until
12992         we know we are going to optimize.
12993         * tree-cfg.c (fold_cond_expr_cond): Likewise.
12994         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
12995         Likewise.
12996         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
12997         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
12998         * tree-ssa-loop-manip.c (create_iv): Likewise.
12999         * c-typeck.c (build_conditional_expr): Likewise.
13000         (build_binary_op): Likewise.
13001         * tree-vrp.c (vrp_expr_computes_nonzero): Call
13002         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
13003         (extract_range_from_unary_expr): Likewise.
13004         * simplify-rtx.c (simplify_const_relational_operation): Warn when
13005         assuming that signed overflow does not occur.
13006         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
13007         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
13008         (fold_defer_overflow_warnings): Declare.
13009         (fold_undefer_overflow_warnings): Declare.
13010         (fold_undefer_and_ignore_overflow_warnings): Declare.
13011         (fold_deferring_overflow_warnings_p): Declare.
13012         (tree_expr_nonzero_warnv_p): Declare.
13013         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
13014         of warning options.
13015         (Warning Options): Document -Wstrict-overflow.
13016         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
13017         (tree-ssa-ccp.o): Likewise.
13018         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
13019         (fold-const.o): Depend on intl.h.
13020
13021 2007-02-13  Ian Lance Taylor  <iant@google.com>
13022
13023         PR middle-end/30751
13024         * lower-subreg.c (resolve_simple_move): Decompose subregs in
13025         addresses.
13026
13027 2007-02-13  Stuart Hastings  <stuart@apple.com>
13028
13029         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
13030
13031 2007-02-13  Richard Henderson  <rth@redhat.com>
13032
13033         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
13034         handled_component_p before looking for the indirect_ref.
13035
13036 2007-02-13  Richard Henderson  <rth@redhat.com>
13037
13038         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
13039         remove flags clobber.
13040         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
13041         (bswaphi_lowpart): New.
13042         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
13043         remove TARGET_BSWAP test.  Delete expander of the same name.
13044
13045         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
13046         (expand_unop): Use them.
13047
13048 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
13049
13050         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
13051         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
13052         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
13053         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
13054         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
13055         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
13056         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
13057         assembler dialect choice from asm templates.
13058
13059 2007-02-12  Richard Henderson  <rth@redhat.com>
13060
13061         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
13062         (fixuns_trunc<SSEMODEF>si2): Use it.
13063         * config/i386/sse.md (vec_setv4sf_0): Export.
13064         * config/i386/i386.c (ix86_build_const_vector): Export.
13065         (ix86_split_convert_uns_si_sse): Rename from
13066         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
13067         * config/i386/i386-protos.h: Update.
13068
13069 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13070
13071         PR c/29521
13072         * c-typeck.c (c_finish_return): Improve warning message.
13073
13074 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13075
13076         * alias.c (find_symbolic_term): Delete unused function.
13077
13078 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
13079
13080         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
13081         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
13082         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
13083
13084 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
13085
13086         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
13087         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
13088         the function, temporarily point the debug interface to the null one.
13089
13090 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
13091
13092         * dwarf2out.c (round_up_to_align): New static function.
13093         (field_byte_offset): Use it to round the offset.
13094
13095 2007-02-12  Richard Henderson  <rth@redhat.com>
13096
13097         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
13098         (inswl_const): Export.
13099
13100 2007-02-12  Richard Henderson  <rth@redhat.com>
13101
13102         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
13103         result mode of the libcall, convert back to outmode.
13104
13105 2007-02-12  Roger Sayle  <roger@eyesopen.com>
13106
13107         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
13108         (bswapdi2): New define_expand to implement 32-bit implementation.
13109
13110 2007-02-12  Nick Clifton  <nickc@redhat.com>
13111
13112         * doc/invoke.texi (Overall Options): Document --help=.
13113         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
13114         (cc1_options): Pass --help= on to cc1.
13115         (display_help): Add description of --help=.
13116         (process_command): Add code to handle --help=.  Allow translated
13117         --help and --target-help switches to be passed on to compiler
13118         sub-process.
13119         (main): Remove unused if statement.
13120         * opts.c (columns): Remove.
13121         (LEFT_COLUMN): Define.
13122         (wrap_help): Add columns argument.
13123         (print_filtered_help): Change parameters to be an include bitmask,
13124         an exclude bitmask, an any bitmask and the column width.  Move the
13125         code to display the params list here.  Add code to display the
13126         status of options rather than their descriptions if the quiet flag
13127         is not active.
13128         (print_specific_help): Change parameters to be an include bitmask,
13129         an exclude bitmask and an any bitmask.  Move code to look up the
13130         column width here.  Decide upon the title for an options listing.
13131         (common_handle_options): Add code to handle --help=.  Adapt code
13132         for --help and --target-help to use the revised form of the
13133         print_specific_help function.
13134         (print_help): Delete.
13135         (print_param_help): Delete.
13136         (print_switch): Delete.
13137         * opts.h (cl_lang_count): Add prototype.
13138         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
13139         CL_MAX_OPTION_CLASS): New defines.
13140         * optc-gen.awk: Add construction of cl_lang_count.
13141         * c.opt: Add Warning attribute to warning options and Optimization
13142         attribute to optimization options.
13143         * common.opt: Likewise.
13144         Add --help=.
13145         Add -fhelp and -ftarget-help as aliases for the transformed --help
13146         and --target-help options.
13147         * opt-functions.awk: Add code to handle Warning and Optimization
13148         attributes.
13149
13150 2007-02-12  Richard Henderson  <rth@redhat.com>
13151
13152         * config/alpha/constraints.md: New file.
13153         * config/alpha/alpha.c: Include tm-constrs.h.
13154         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
13155         alpha_extra_constraint): Remove.
13156         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
13157         * config/alpha/alpha-protos.h: Update.
13158         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
13159         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
13160         (EXTRA_CONSTRAINT): Remove.
13161         * config/alpha/alpha.md: Include constraints.md.
13162         (adddi splitter): Use satisfies_constraint_*.
13163         * config/alpha/predicates.md (add_operand): Likewise.
13164         (sext_add_operand, addition_operation): Likewise.
13165
13166 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
13167
13168         PR tree-optimization/29145
13169         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
13170         in our handling of restrict qualified pointers.
13171
13172 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13173
13174         PR middle-end/7651
13175         * doc/invoke.texi (Wunused-value): Update description.
13176         (Wextra): Delete item.
13177         * opts.c (set_Wextra): Don't use the value of Wextra to set the
13178         value of Wunused-value.
13179         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
13180         (c_finish_stmt_expr): Don't check extra_warnings.
13181         (emit_side_effect_warnings): The caller is responsible to check
13182         warn_unused_value.
13183
13184 2007-02-11  Roger Sayle  <roger@eyesopen.com>
13185             Matt Thomas  <matt@3am-software.com>
13186
13187         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
13188
13189 2007-02-11  Roger Sayle  <roger@eyesopen.com>
13190
13191         * simplify-rtx.c (simplify_relational_operation_1): Optimize
13192         comparisons of POPCOUNT against zero.
13193         (simplify_const_relational_operation): Likewise.
13194
13195 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13196
13197         * doc/invoke.texi (Wextra): Delete outdated paragraph.
13198
13199 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13200
13201         * dwarf2out.c (root_type): Delete unused function.
13202
13203 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13204
13205         * genattrtab.c (contained_in_p): Delete unused function.
13206         (write_expr_attr_cache): Likewise.
13207
13208 2007-02-11  Jan Hubicka  <jh@suse.cz>
13209
13210         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
13211         previous patch.
13212
13213 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
13214
13215         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
13216         to add the REG_EQ* note.
13217         * see.c (see_merge_one_use_extension): Likewise.
13218         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
13219         turn REG_EQUAL notes into REG_EQUIV notes if the target
13220         register may have more than one set.
13221         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
13222         * gcse.c (try_replace_reg): Likewise.
13223         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
13224         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
13225         more than one REG_EQUIV note.
13226         * reload1.c (gen_reload): Use set_unique_reg_note.
13227
13228 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
13229
13230         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
13231         (ix86_builtin_conversion): New function.
13232
13233 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
13234
13235         PR target/29487
13236         * tree.h (DECL_REPLACEABLE_P): New macro.
13237         * except.c (set_nothrow_function_flags): Likewise.
13238
13239 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
13240             Ira Rosen  <irar@il.ibm.com>
13241             Dorit Nuzman  <dorit@il.ibm.com>
13242
13243         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
13244         * targhooks.c (default_builtin_vectorized_conversion): New.
13245         * targhooks.h (default_builtin_vectorized_function): New declaration.
13246         * target.h (struct vectorize): Add builtin_conversion field.
13247         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
13248         stmt_vec_info_type value.
13249         (vectorizable_conversion): New declaration.
13250         * tree-vect-analyze.c (vect_analyze_operations): Add
13251         vectorizable_conversion call.
13252         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
13253         * tree-vect-transform.c (vectorizable_conversion): New function.
13254         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
13255         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
13256         mode.
13257         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
13258         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
13259         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
13260         or ALTIVEC_BUILTIN_VCFSX.
13261
13262 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13263
13264         PR target/30634
13265         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
13266         CONST_DOUBLE and operand 0 is a hard register.
13267         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
13268         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
13269         is a hard floating-point register.
13270
13271 2007-02-10  Richard Henderson  <rth@redhat.com>
13272             Jakub Jelinek  <jakub@redhat.com>
13273             Alexandre Oliva  <aoliva@redhat.com>
13274
13275         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
13276         * builtin-types.def (BT_WORD): Make unsigned.
13277         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
13278         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
13279         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
13280         * c-decl.c (grokdeclarator): Don't error if !have_tls.
13281         * c-parser.c (c_parser_omp_threadprivate): Likewise.
13282         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
13283         emulated tls.
13284         * expr.c (emutls_var_address): New.
13285         (expand_expr_real_1): Expand emulated tls.
13286         (expand_expr_addr_expr_1): Likewise.
13287         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
13288         * output.h (emutls_finish): Declare.
13289         * toplev.c (compile_file): Call it.
13290         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
13291         address before wrapping in CONST.
13292         * varasm.c (emutls_htab, emutls_object_type): New.
13293         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
13294         (get_emutls_object_name, get_emutls_object_type): New.
13295         (get_emutls_init_templ_addr, emutls_decl): New.
13296         (emutls_common_1, emutls_finish): New.
13297         (assemble_variable): When emulating tls, swap decls; generate
13298         constructor for the emutls objects.
13299         (do_assemble_alias): When emulating tls, swap decl and target name.
13300         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
13301         for emulated tls.
13302         * varpool.c (decide_is_variable_needed): Look at force_output.
13303         Recurse for emulated tls.
13304         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
13305         with decide_is_variable_needed.
13306         * emutls.c: New file.
13307         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
13308         tls_object for real tls.
13309
13310 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13311
13312         PR rtl-optimization/29599
13313         * reload1.c (eliminate_regs_in_insn): Take the destination
13314         mode into account when computing the offset.
13315
13316 2007-02-09  Stuart Hastings  <stuart@apple.com>
13317             Richard Henderson  <rth@redhat.com>
13318
13319         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13320         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13321         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
13322         fixuns_truncdfhi2): New.
13323         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
13324         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
13325         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
13326         (floatunssidf2): Allow nonimmediate source.
13327         * config/i386/sse.md (movdi_to_sse): New.
13328         (vec_concatv2di): Drop '*'.
13329         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
13330         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13331         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
13332         New.
13333         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
13334         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13335         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
13336         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
13337         (ix86_build_signbit_mask): Fix decl of v, refactor to call
13338         ix86_build_const_vector.
13339         (x86_emit_floatuns): Rewrite.
13340
13341 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13342
13343         * genautomata.c (longest_path_length): Delete unused function.
13344         (struct state): Delete unused longest_path_length.
13345         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
13346         (get_free_state): Delete unused.
13347
13348 2007-02-09  Jan Hubicka  <jh@suse.cz>
13349
13350         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
13351         * doc/invoke.texi (inline-unit-growth): Update default value.
13352
13353         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
13354         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
13355         (rebuild_cgraph_edges): Likewise.
13356         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
13357         (dump_cgraph_node): Dump frequencies.
13358         (cgraph_clone_edge): Add frequency scales.
13359         (cgraph_clone_node): Add freuqnecy.
13360         * cgraph.h (cgraph_edge): Add freuqnecy argument.
13361         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
13362         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
13363         * tree-pass.h (TODO_rebuild_frequencies): New constant.
13364         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
13365         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
13366         (save_inline_function_body): Likewise.
13367         * ipa-inline.c: inluce rtl.h
13368         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
13369         (cgraph_edge_badness): Use frequencies.
13370         (cgraph_decide_recursive_inlining): Update clonning.
13371         (cgraph_decide_inlining_of_small_function): Dump frequency.
13372         * predict.c (estimate_bb_frequencies): Export.
13373         * predict.h (estimate_bb_frequencies): Declare.
13374         * tree-inline.c (copy_bb): Watch overflows.
13375         (expand_call_inline): Update call of cgraph_create_edge.
13376         (optimize_inline_calls): Use TODO flags to update frequnecies.
13377         * passes.h: Include predict.h
13378         (init_optimization_passes): Move profile ahead.
13379         (execute_function_todo): Handle TODO_rebuild_frequencies.
13380
13381 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13382
13383         * config/alpha/alpha.c (emit_insxl): Force the first operand of
13384         the insbl or inswl pattern into a register.
13385
13386 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13387
13388         * config/ia64/ia64.md (bswapdi2): New define_insn.
13389
13390 2007-02-09  Richard Henderson  <rth@redhat.com>
13391
13392         * config/i386/constraints.md (Ym): New constraint.
13393         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
13394         (movdi_1_rex64): Split sse and xmm general register moves from
13395         memory move alternatives.  Use conditional register constraints.
13396         (movsf_1, movdf_integer): Likewise.
13397         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
13398         (movdf_integer_rex64): New.
13399         (pushsf_rex64): Fix output constraints.
13400         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
13401         (sse2_stored): Likewise.
13402         (sse2_storeq_rex64): New.
13403         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
13404         amd and not generic.
13405         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
13406         for optimize_size.  Remove SF/DFmode hack.
13407
13408 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13409
13410         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
13411         (bit_SSE4a): New.
13412
13413 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
13414             Richard Sandiford  <richard@codesourcery.com>
13415
13416         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
13417         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
13418         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
13419         m68k/t-mlib to tmake_file.
13420         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
13421         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
13422         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
13423         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
13424         variable is not empty, add t-$m68k_arch_family to tmake_file.
13425         Add t-mlibs to tmake_file.
13426         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
13427         * config/m68k/t-cf: New file.
13428         * config/m68k/t-m68k: Likewise.
13429         * config/m68k/t-mlibs: Likewise.
13430         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13431         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13432         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13433         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13434         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
13435         Delete.
13436         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
13437         (INSTALL_LIBGCC): Delete.
13438         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13439         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13440         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13441         (M68K_MLIB_CPU): Define.
13442         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13443         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13444         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
13445
13446 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
13447             Richard Guenther  <rguenther@suse.de>
13448
13449         PR middle-end/23361
13450         * fold-const.c (fold_comparison): Handle obfuscated comparisons
13451         against INT_MIN/INT_MAX.
13452         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
13453         file if a loop is removed.
13454
13455 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
13456
13457         * calls.c (store_one_arg): Pass correct alignment to
13458         emit_push_insn for non-BLKmode values.
13459         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
13460         unaligned stack slot via a suitably aligned slot.
13461
13462 2007-02-08  DJ Delorie  <dj@redhat.com>
13463
13464         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
13465         warnings.
13466         (legal_subregs): Use unsigned char, make const.
13467         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
13468
13469 2007-02-08  Paul Brook  <paul@codesourcery.com>
13470
13471         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
13472         special interworking needed.
13473
13474 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
13475
13476         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
13477         conditional to __SSE2__.
13478         (Entries below should have been added to first ChangeLog
13479         entry for amdfam10 dated 2007-02-05)
13480         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
13481         defined.
13482         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
13483         defined.
13484         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
13485         defined.
13486
13487 2007-02-08  DJ Delorie  <dj@redhat.com>
13488
13489         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
13490         * config/m32c/m32c.c (legal_subregs): New.
13491         (m32c_illegal_subreg_p): New.
13492         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
13493         unsupported subregs of hard regs.
13494
13495 2007-02-08  Jan Hubicka  <jh@suse.cz>
13496
13497         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
13498         the same one; always update histograms.
13499
13500 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13501
13502         * passes.c (init_optimization_passes): Tidy comment.
13503
13504 2007-02-08  Roger Sayle  <roger@eyesopen.com>
13505
13506         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
13507         strip zero_extend, bswap and rotates from POCOUNT's argument.
13508         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
13509         zero_extend and rotates from PARITY's argument.
13510         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
13511         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
13512         of an integer constant at compile-time.
13513
13514 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13515
13516         PR 30562
13517         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
13518         Update all users.
13519         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
13520         users.
13521         (init_alias_info):
13522         * tree-ssa-live.c (remove_unused_locals): Do not remove
13523         TREE_ADDRESSABLE variables.
13524         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
13525         * tree-ssa-operands.c (add_virtual_operand): Remove argument
13526         FOR_CLOBBER.  Update all users.
13527         If VAR has an associated alias set, add a virtual operand for
13528         it if no alias is found to conflict with the memory reference.
13529
13530 2007-02-07  Jan Hubicka  <jh@suse.cz>
13531             Robert Kidd <rkidd@crhc.uiuc.edu>
13532
13533         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
13534
13535 2007-02-07  Ian Lance Taylor  <iant@google.com>
13536
13537         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
13538
13539 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13540
13541         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
13542         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
13543         tablejumpdi, movsi_to_cr_one): Remove constraints from
13544         define_expand's match_operands.
13545
13546 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13547
13548         * global.c (compute_regsets): Move declatation of "i" inside of
13549         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
13550
13551 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
13552
13553         PR c++/30703
13554         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
13555         of INDIRECT_REF <RESULT_DECL>.
13556
13557         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
13558
13559 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
13560             Kaz Kojima  <kkojima@gcc.gnu.org>
13561
13562         PR target/29746
13563         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
13564         properly.
13565         (sh_initialize_trampoline): Add parentheses to avoid a warning.
13566
13567 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
13568
13569         * doc/loop.texi: Document possibility not to perform disambiguation
13570         of loops with multiple latches.
13571         * cfgloopmanip.c (alp_enum_p): Removed.
13572         (add_loop): Handle subloops.  Use get_loop_body_with_size.
13573         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
13574         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
13575         the new forwarder block.
13576         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
13577         Handle the case latch is NULL.
13578         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
13579         when marking loop exits.
13580         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
13581         be modified.
13582         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
13583         disambiguate_loops_with_multiple_latches.
13584         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
13585         before fix_loop_structure.
13586         * cfgloop.c: Include pointer-set.h and output.h.
13587         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
13588         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
13589         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
13590         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
13591         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
13592         disambiguate_multiple_latches, get_loop_body_with_size,
13593         disambiguate_loops_with_multiple_latches): New functions.
13594         (flow_loop_dump): Dump multiple latch edges.
13595         (flow_loop_nodes_find): Handle loops with multiple latches.
13596         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
13597         (glb_enum_p): Modified.
13598         (get_loop_body): Use get_loop_body_with_size.
13599         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
13600         (AVOID_CFG_MODIFICATIONS): New constant.
13601         (disambiguate_loops_with_multiple_latches, add_loop,
13602         get_loop_body_with_size): Declare.
13603         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
13604
13605 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
13606
13607         PR inline-asm/28686
13608         * global.c (compute_regsets): New function.
13609         (global_alloc): Refactored ELIMINABLE_REGSET
13610         and NO_GLOBAL_ALLOC_REGS computation out.
13611         (rest_of_handle_global_alloc): Call compute_regsets()
13612         for non-optimizing case.
13613
13614 2007-02-06  Richard Henderson  <rth@redhat.com>
13615
13616         * config/i386/constraints.md (Y2): Rename from Y.
13617         (Yi): New constraint.
13618         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
13619         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
13620         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
13621         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
13622         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
13623         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
13624         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
13625         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
13626         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
13627         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
13628         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
13629         vec_extractv2si_1): Change Y constraints to Y2.
13630         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
13631         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
13632         Change Y constraints to Y2.
13633         (sse2_loadld): Change Y constraints to x.
13634
13635 2007-02-06  Roger Sayle  <roger@eyesopen.com>
13636
13637         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
13638         (parity<mode>2): New define_expand using rs6000_emit_parity.
13639         * config/rs6000/rs6000.c (rs6000_emit_popcount,
13640         rs6000_emit_parity): New functions.
13641         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
13642         rs6000_emit_parity): Prototype here.
13643
13644 2007-02-06  Ian Lance Taylor  <iant@google.com>
13645
13646         * lower-subreg.c (simple_move_operand): Reject CONST.
13647         (resolve_clobber): Call validate_change rather than directly
13648         assigning to XEXP (pat, 0).
13649
13650 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13651
13652         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
13653         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
13654         (tree-cfg.o): Remove hashtab.h dependency.
13655
13656         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
13657         (struct ivopts_data): Change niters to pointer_map_t.
13658         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
13659         (niter_for_exit): Create pointer_map on demand.  Change for
13660         pointer_map API.
13661         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
13662         (free_loop_data): Destroy data->niters if created and reset field.
13663         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
13664         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
13665
13666         * tree-ssa-reassoc.c: Include pointer-set.h.
13667         (bb_rank): Change to long *.
13668         (operand_rank): Change to pointer_map_t.
13669         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
13670         (insert_operand_rank): Accept long.
13671         (operand_entry_hash, operand_entry_eq): Remove.
13672         (get_rank): Return long.  Adjust for changes above.
13673         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
13674         and operand_rank.
13675         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
13676
13677         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
13678         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
13679         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
13680         is not NULL.
13681         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
13682         directly since it cannot be NULL.
13683         (get_vi_for_tree): Rewrite for pointer_map API.
13684         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
13685         (init_alias_vars): Create vi_for_tree as pointer_map.
13686         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
13687
13688         * tree-cfg.c: Don't include hashtab.h.
13689         (edge_to_cases): Declare as pointer_map.
13690         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
13691         Delete.
13692         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
13693         (start_recording_case_labels): Create edge_to_cases as pointer_map.
13694         (end_recoding_case_labels): Cleanup edge_to_cases manually before
13695         destroying it.
13696         (record_switch_edge): Delete.
13697         (get_cases_for_edge): Adjust for pointer_map API, inline
13698         record_switch_edge (rewritten for new API), remove goto.
13699
13700 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13701
13702         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
13703         * tree-nested.c: Include pointer-set.h.
13704         (var_map_elt, var_map_eq, var_map_hash): Delete.
13705         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
13706         to pointer_map_t's.
13707         (nesting_info_bitmap_obstack): New.
13708         (lookup_field_for_decl): Adjust for pointer_map API.
13709         (lookup_tramp_for_decl): Adjust for pointer_map API.
13710         (get_nonlocal_debug_decl): Adjust for pointer_map API.
13711         (get_local_debug_decl): Adjust for pointer_map API.
13712         (convert_nl_goto_reference): Adjust for pointer_map API.
13713         (convert_nl_goto_receiver): Adjust for pointer_map API.
13714         (create_nesting_tree): Create outside GGC space.  Create bitmap on
13715         the new obstack.  Create field_map and var_map as pointer_maps.
13716         (free_nesting_tree): Adjust for changes to create_nesting_tree.
13717         (root): Delete.
13718         (lower_nested_functions): Move root here, no need to NULL it.
13719         Initialize and release the obstack.
13720
13721 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
13722
13723         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
13724         Remove prototypes and make them non-static.
13725         (struct tree_int_map): Remove.
13726         * tree.h (struct tree_int_map): Move here, turning TO into an
13727         unsigned int.
13728         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
13729
13730         * tree.h (TREE_COMPLEXITY): Remove.
13731         (struct tree_exp): Remove complexity field.
13732         * tree.c (build1_stat): Don't set it.
13733
13734 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
13735             Victor Kaplansky  <victork@il.ibm.com>
13736
13737         * tree-vectorizer.c (vect_is_simple_use): Support induction.
13738         (vect_is_simple_reduction): Support reduction with induction as
13739         one of the operands.
13740         (vect_is_simple_iv_evolution): Fix formatting.
13741         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
13742         formatting.  Don't mark induction phis for vectorization.
13743         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
13744         * tree-vect-transform.c (get_initial_def_for_induction): New function.
13745         (vect_get_vec_def_for_operand): Support induction.
13746         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
13747         induction case.
13748         (vectorizable_reduction): Support reduction with induction as one of
13749         the operands.
13750         (vectorizable_type_demotion): Use def-type of stmt argument rather
13751         than dummy def-type.
13752
13753         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
13754         flag_tree_scev_cprop.
13755         * common.opt (tree-scev-cprop): New flag.
13756
13757         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
13758         call to vect_get_new_vect_var.
13759
13760 2007-02-06  Ira Rosen  <irar@il.ibm.com>
13761
13762         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
13763         vectype is not NULL.
13764         (vect_pattern_recog_1): Likewise.
13765
13766 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13767
13768         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
13769         (fold_negate_expr): Likewise.
13770
13771 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
13772
13773         PR debug/30189
13774         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
13775         even if cv-qualification is the same.
13776
13777 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
13778
13779         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
13780         __enable_execute_stack on completion.
13781
13782 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13783
13784         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
13785         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
13786         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
13787         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
13788         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
13789         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
13790         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
13791         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
13792
13793 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13794
13795         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
13796         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
13797         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
13798         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
13799         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
13800         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
13801         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
13802         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
13803         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
13804         umuldi3_highpart_rex64, umulsi3_highpart_insn,
13805         umulsi3_highpart_zext, smuldi3_highpart_rex64,
13806         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
13807         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
13808         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
13809         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
13810         sqrtextenddfxf2_i387): Added amdfam10_decode.
13811
13812         * config/i386/athlon.md (athlon_idirect_amdfam10,
13813         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
13814         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
13815         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
13816         athlon_ivector_store_amdfam10): New define_insn_reservation.
13817         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
13818         amdfam10.
13819
13820 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13821
13822         * config/i386/athlon.md (athlon_call_amdfam10,
13823         athlon_pop_amdfam10, athlon_lea_amdfam10): New
13824         define_insn_reservation.
13825         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
13826         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
13827         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
13828
13829 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13830
13831         * config/i386/athlon.md (athlon_sseld_amdfam10,
13832         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
13833         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
13834
13835 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13836
13837         * config/i386/athlon.md (athlon_sseins_amdfam10): New
13838         define_insn_reservation.
13839         * config/i386/i386.md (sseins): Added sseins to define_attr type
13840         and define_attr unit.
13841         * config/i386/sse.md: Set type attribute to sseins for insertq
13842         and insertqi.
13843
13844 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13845
13846         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
13847         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
13848         ssecomi_load_amdfam10, ssecomi_amdfam10,
13849         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
13850         define_insn_reservation.
13851         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
13852
13853 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13854
13855         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
13856         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
13857         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
13858         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
13859         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
13860         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
13861         define_insn_reservation.
13862
13863         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
13864         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
13865         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
13866         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
13867         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
13868
13869 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13870
13871         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
13872         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
13873         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
13874         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
13875         athlon_ssemul_load_k8): Added amdfam10.
13876
13877 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13878
13879         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
13880         (x86_sse_unaligned_move_optimal): New variable.
13881
13882         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
13883         m_AMDFAM10.
13884         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
13885         for unaligned vector SSE double/single precision loads for AMDFAM10.
13886
13887 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13888
13889         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
13890         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
13891         Define TARGET_CPU_DEFAULT_amdfam10.
13892         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
13893         (processor_type): Add PROCESSOR_AMDFAM10.
13894
13895         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
13896         processor_type in config/i386/i386.h.
13897         Enable imul peepholes for TARGET_AMDFAM10.
13898
13899         * config.gcc: Add support for --with-cpu option for amdfam10.
13900
13901         * config/i386/i386.c (amdfam10_cost): New variable.
13902         (m_AMDFAM10): New macro.
13903         (m_ATHLON_K8_AMDFAM10): New macro.
13904         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
13905         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
13906         x86_promote_QImode, x86_integer_DFmode_moves,
13907         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13908         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
13909         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
13910         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
13911         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
13912         Enable/disable for amdfam10.
13913         (override_options): Add amdfam10_cost to processor_target_table.
13914         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
13915         processor_alias_table.
13916         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
13917         (ix86_adjust_cost): Add code for amdfam10.
13918
13919 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13920
13921         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
13922         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
13923         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
13924         * config/i386/i386.h: Add builtin definition for SSE4A.
13925         * config/i386/i386.md: Add support for ABM instructions
13926         (popcnt and lzcnt).
13927         * config/i386/sse.md: Add support for SSE4A instructions
13928         (movntss, movntsd, extrq, insertq).
13929         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
13930         Add -march=amdfam10 flag.
13931         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
13932         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
13933         and amdfam10.
13934         * doc/extend.texi: Add documentation for SSE4A builtins.
13935
13936 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
13937
13938         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
13939
13940 2007-02-05  Richard Guenther  <rguenther@suse.de>
13941
13942         * tree-vectorizer.h (vectorizable_function): Add argument type
13943         argument, change return type.
13944         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
13945         * tree-vect-transform.c (vectorizable_function): Handle extra
13946         argument, return vectorized function decl.
13947         (build_vectorized_function_call): Remove.
13948         (vectorizable_call): Handle calls with result and argument types
13949         differing.  Handle loop vectorization factor correctly.
13950         * targhooks.c (default_builtin_vectorized_function): Adjust for
13951         extra argument.
13952         * targhooks.h (default_builtin_vectorized_function): Likewise.
13953         * target.h (builtin_vectorized_function): Add argument type
13954         argument.
13955         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
13956         extra argument, allow vectorizing of lrintf.
13957         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
13958         documentation of target hook.
13959
13960 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
13961
13962         PR target/30665
13963         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
13964         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
13965         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
13966
13967 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13968
13969         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
13970         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
13971         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
13972         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
13973         before canonicalizing sincos to cexpi.
13974         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
13975
13976 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13977
13978         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
13979         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
13980         (alpha_init_builtins): Use alpha_add_builtins to process tables.
13981
13982 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13983
13984         * mips-tfile.c (initialize_init_file): Correct endianness test.
13985
13986 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
13987
13988         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
13989         the 'y' constraint.
13990
13991 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13992
13993         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
13994         saves in a PARALLEL before the register assignments.
13995
13996 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13997
13998         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
13999         DWARF_FRAME_RETURN_COLUMN to be a general register.
14000         * dwarf2out.c (init_return_column_size): New function, split from...
14001         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
14002         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
14003         to be nongeneral registers.
14004         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
14005         integer registers.
14006         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
14007         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
14008
14009 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
14010
14011         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
14012
14013 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
14014
14015         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
14016         (remove_path): Use can_remove_branch_p and remove_branch instead
14017         of loop_delete_branch_edge.
14018         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
14019         (tree_transform_and_unroll_loop): Remove dead branches immediately.
14020         Update profile using scale_dominated_blocks_in_loop.
14021         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
14022         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
14023         (can_remove_branch_p, remove_branch): Declare.
14024         * tree-cfg.c (tree_can_remove_branch_p): New function.
14025         (tree_cfg_hooks): Add tree_can_remove_branch_p.
14026         * cfgrtl.c (rtl_can_remove_branch_p): New function.
14027         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
14028
14029 2007-02-05  Jan Hubicka  <jh@suse.cz>
14030
14031         PR middle-end/30696
14032         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
14033         nodes in cgraph, don't remove offline copy of the function.
14034
14035 2007-02-04  Jan Hubicka  <jh@suse.cz>
14036
14037         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
14038         vectors might cause maybe_lookup_element_for_expr to be called
14039         on non-sra-candidate.
14040
14041 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14042
14043         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
14044         config/bfin/bfin.md, config/bfin/predicates.md: Follow
14045         spelling conventions.
14046
14047 2007-02-04  Richard Guenther  <rguenther@suse.de>
14048
14049         PR middle-end/30636
14050         * fold-const.c (try_move_mult_to_index): Make sure to not
14051         overflow one dimension of a multi-dimensional array access.
14052
14053 2007-02-04  Jan Hubicka  <jh@suse.cz>
14054
14055         * passes.c (init_optimization_passes): Reindent.
14056
14057 2007-02-04  Jan Hubicka  <jh@suse.cz>
14058             Eric Botcazou  <ebotcazou@adacore.com>
14059
14060         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
14061         (execute_fixup_cfg): Break out the abnormal goto code.
14062         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
14063         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
14064         (optimize_inline_calls): Call make_nonlocal_label_edges.
14065
14066 2007-02-04  Jan Hubicka  <jh@suse.cz>
14067
14068         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
14069         true when something was changed.
14070         (rename_ssa_copies): When something was changed, do
14071         TODO_remove_unused_locals.
14072         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
14073         add TODO_remove_unused_locals when instruction was removed.
14074
14075 2007-02-04  Jan Hubicka  <jh@suse.cz>
14076
14077         * ipa-inline.c (try_inline): Improve debug output; work on already
14078         inline edges too.
14079         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
14080         call try_inline for already inlined edges too when flattening;
14081         inline also functions that make callee growth but overall unit size
14082         reduce.
14083
14084 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14085
14086         * config/m32c/bitops.md, config/m32c/jump.md,
14087         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
14088         config/m32r/m32r.h, config/m32r/m32r.md,
14089         config/m32r/predicates.md, config/m68hc11/larith.asm,
14090         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
14091         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
14092         config/mips/mips-protos.h, config/mips/mips.c,
14093         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
14094         config/mn10300/mn10300.h, config/mn10300/predicates.md,
14095         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
14096         spelling conventions.
14097
14098         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
14099         Follow spelling conventions.
14100
14101 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
14102
14103         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
14104         warn about C++0x compatibility.
14105
14106 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14107
14108         * config/h8300/h8300.c, config/h8300/h8300.h,
14109         config/h8300/h8300.md: Follow spelling conventions.
14110
14111 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
14112
14113         PR middle-end/30667
14114         * combine.c (try_combine): Do not substitute source operand
14115         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
14116
14117 2007-02-03  Jan Hubicka  <jh@suse.cz>
14118
14119         PR gcov-profile/30650
14120         * value-prof.c (stringop_block_profile): Fix handling of size counter;
14121         do not divide by zero for never executed counters.
14122         (tree_find_values_to_profile): Fix counters.
14123         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
14124
14125 2007-02-03  Ian Lance Taylor  <iant@google.com>
14126
14127         * lower-subreg.c (simple_move_operand): New static function,
14128         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
14129         operands.
14130         (simple_move): Call simple_move_operand.
14131         (find_decomposable_subregs): Add special handling of MEMs.
14132         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
14133         meaning of return value.  If we see a hard register, test whether
14134         it can store a word_mode value.  Change all callers.
14135
14136 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14137
14138         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
14139         ftrapv insns and expanders.
14140         (subdi3): Change define_expand operand 1 to arith11_operand, and
14141         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
14142         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
14143         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
14144         respectively.
14145
14146         PR middle-end/30174
14147         * varasm.c (notice_global_symbol): Treat global objects as weak when
14148         flag_shlib is true.
14149
14150 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14151
14152         * emit-rtl.c (dconstpi): Delete.
14153         (dconstsqrt2): New.
14154         (init_emit_once): Delete dconstpi and init dconstsqrt2.
14155         * real.h (dconstpi): Delete.
14156         (dconstsqrt2): New.
14157         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
14158         (fold_builtin_hypot): Likewise.
14159
14160 2007-02-03  Tom Tromey  <tromey@redhat.com>
14161
14162         PR driver/30246
14163         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
14164         -gcoff3, -gxcoff3, -gvms3 implies -dD.
14165
14166 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
14167
14168         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
14169         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
14170         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
14171         config/rs6000/cell.md, config/rs6000/darwin.h,
14172         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
14173         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
14174         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
14175         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
14176         typos.  Follow spelling conventions.
14177         * doc/invoke.texi: Follow spelling conventions.
14178
14179 2007-02-03  Roger Sayle  <roger@eyesopen.com>
14180
14181         * simplify-rtx.c (simplify_relational_operation_1): Implement some
14182         canonicalization transformations that attempt to simplify integer
14183         constant comparisons to become comparisons against zero.
14184
14185 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14186
14187         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
14188         fabs(x)*sqrt(2).
14189         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
14190         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
14191
14192 2007-02-02  Mike Stump  <mrs@apple.com>
14193
14194         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
14195         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
14196         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
14197         generate a branch island.
14198
14199 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
14200
14201         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
14202         (xtensa_legitimate_address_p): New.
14203         (xtensa_legitimize_address): New.
14204         (xtensa_output_addr_const_extra): New.
14205         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
14206         (BASE_REG_P): New.
14207         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
14208         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
14209         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
14210         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
14211         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
14212         (xtensa_legitimize_address): New.
14213         (xtensa_output_addr_const_extra): New.
14214
14215 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
14216
14217         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
14218
14219 2007-02-02  Ian Lance Taylor  <iant@google.com>
14220
14221         * expmed.c (expand_divmod): Add comment.
14222
14223 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
14224
14225         * emit-rtl.c (renumber_insns): Remove.
14226         * flags.h: Remove the extern for flag_renumber_insns.
14227         * rtl.h: Remove the prototype for renumber_insns.
14228         * toplev.c (flag_renumber_insns): Remove.
14229
14230 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
14231
14232         Revert for x86 darwin:
14233         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
14234
14235         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
14236         code before the following patch under TARGET_MACHO.
14237         (ix86_function_value_regno_p): Likewise.
14238
14239 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14240
14241         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
14242         COMPLEX_EXPR.
14243
14244 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14245
14246         PR target/29682
14247         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
14248         general or fp registers.  Add comments.
14249         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
14250
14251 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
14252
14253         * pointer-set.c (insert_aux): Only return insertion slot.
14254         (pointer_set_insert): Adjust.
14255         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
14256         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
14257         pointer_map_traverse): New.
14258         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
14259         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
14260         pointer_map_contains, pointer_map_traverse): Declare.
14261
14262 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
14263
14264         PR middle-end/30473
14265         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
14266         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
14267
14268 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14269
14270         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
14271
14272         (struct _dep): New type.
14273         (dep_t): New typedef.
14274         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
14275         (DEP_STATUS): New access macro.  The macro with the same name was
14276         renamed to DEP_LINK_STATUS.
14277         (dep_init): Declare function
14278
14279         (struct _dep_link): New type.
14280         (dep_link_t): New typedef.
14281         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
14282         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
14283         (DEP_LINK_STATUS): New macro.
14284         (debug_dep_links): New debug function.
14285
14286         (struct _deps_list): New type.
14287         (deps_list_t): New typedef.
14288         (DEPS_LIST_FIRST): New access macro.
14289         (FOR_EACH_DEP_LINK): New cycle macro.
14290         (create_deps_list, free_deps_list, delete_deps_list): Declare
14291         functions.
14292         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
14293         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
14294         (copy_deps_list_change_con): Ditto.
14295
14296         (move_dep_link): Declare function.
14297
14298         (struct _dep_node): New type.
14299         (dep_node_t): New typedef.
14300         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
14301
14302         (struct haifa_insn_data.back_deps): New field to hold backward
14303         dependencies of the insn.
14304         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
14305         to deps_list_t.
14306         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
14307         Change its type to deps_list_t.
14308         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
14309         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
14310         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
14311
14312         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
14313
14314         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
14315
14316         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
14317         all callers.
14318         (dep_cost): Declare.
14319
14320         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
14321         (ds_to_dk, dk_to_ds): New functions.
14322
14323         (init_dep_1): New static function.
14324         (init_dep): New function.
14325         (copy_dep): New static function.
14326
14327         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
14328         functions.
14329         (detach_dep_link): New static function.
14330         (move_dep_link): New function.
14331
14332         (dep_links_consistent_p, dump_dep_links): New static functions.
14333         (debug_dep_links): New debugging function.
14334
14335         (deps_obstack, dl_obstack, dn_obstack): New static variables.
14336
14337         (alloc_deps_list, init_deps_list): New static functions.
14338         (create_deps_list): New function.
14339         (clear_deps_list): New static function.
14340         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
14341         (deps_list_consistent_p, dump_deps_list): New static functions.
14342         (debug_deps_list): New function.
14343         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
14344         functions.
14345         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
14346
14347         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
14348         use new scheduler dependencies lists.
14349         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
14350         (sched_analyze): Ditto.  Initialize dependencies lists.
14351         (add_forw_dep, compute_forward_dependences): Update to use new
14352         scheduler dependencies lists.
14353
14354         (init_dependency_caches): Init deps_obstack.
14355         (free_dependency_caches): Free deps_obstack.
14356
14357         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
14358         new scheduler dependencies lists.
14359         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
14360         (add_back_forw_dep, delete_back_forw_dep): Ditto.
14361
14362         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
14363         Update to use new scheduler dependencies lists.
14364         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
14365         (debug_dependencies): Ditto.
14366         (schedule_region): Update comments.
14367
14368         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
14369         scheduler dependencies lists.
14370         (schedule_ebb): Update comments.
14371
14372         * rtl.def (DEPS_LIST): Remove.
14373
14374         * lists.c (unused_deps_list): Remove.
14375         (free_list): Update assertions.
14376
14377         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
14378         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14379
14380         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
14381         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14382
14383         * haifa-sched.c (comments): Update.
14384         (insn_cost1): Remove.  Inline the code into insn_cost ().
14385         (insn_cost): Update to use new scheduler dependencies lists.  Move
14386         processing of the dependency cost to dep_cost ().
14387         (dep_cost): New function.  Use it instead of insn_cost () when
14388         evaluating cost of the dependency.  Use compatible interface to
14389         interact with the target.
14390         (priority): Update to use new scheduler dependencies lists.
14391         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
14392         with greater number of insns that depend on the insn.
14393         (schedule_insn): Update to use new scheduler dependencies lists.  Add
14394         code to free backward dependencies lists.  Inline and optimize code
14395         from resolve_dep () - see PR28071.
14396         (ok_for_early_queue_removal): Update to use new scheduler dependencies
14397         lists.  Update call to targetm.sched.is_costly_dependence hook.
14398
14399         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
14400         scheduler dependencies lists.
14401
14402         (resolve_dep): Remove.  Move the logic to schedule_insn ().
14403         (init_h_i_d): Initialize dependencies lists.
14404
14405         (process_insn_depend_be_in_spec): Rename to
14406         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
14407         dependencies lists.
14408         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
14409         Update to use new scheduler dependencies lists.
14410         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
14411
14412         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
14413         new scheduler dependencies lists.
14414         (build_intra_loop_deps): Ditto.
14415
14416         * target.h (struct _dep): Declare to use in
14417         gcc_target.sched.is_costly_dependence.
14418         (struct gcc_target.sched.adjust_cost): Fix typo.
14419         (struct gcc_target.sched.is_costly_dependence): Change signature to use
14420         single dep_t parameter instead of an equivalent triad.
14421         (struct gcc_target.sched.adjust_cost_2): Remove.
14422
14423         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
14424
14425         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
14426
14427         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
14428         documentation.
14429         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
14430
14431         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
14432         (REG_DEP_TRUE): Document.
14433
14434         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
14435         Change signature to correspond to the targetm.sched.adjust_cost hook.
14436         Update use in TARGET_SCHED_ADJUST_COST_2.
14437         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
14438         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
14439         new scheduler dependencies lists.
14440         (ia64_gen_check): Ditto.
14441
14442         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
14443         dependencies lists.
14444
14445         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
14446         signature to correspond to the targetm.sched.is_costly_dependence hook.
14447         (is_costly_group): Update to use new scheduler dependencies lists.
14448
14449         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
14450         instead of INSN_COST () macro.
14451
14452 2007-02-01  Ian Lance Taylor  <iant@google.com>
14453
14454         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
14455
14456 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
14457
14458         * pa.md (tp_load): Correct mfctl instruction syntax.
14459
14460 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
14461
14462         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
14463         altivec_padding_size calculation on AIX.  Improve comment, add
14464         assert to verify that it's right.
14465
14466         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
14467         64-bit.
14468
14469 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
14470
14471         PR inline-asm/28686
14472         * global.c (global_alloc): Add mising initialization of
14473         ELIMINABLE_REGSET.
14474
14475 2007-02-01  Roger Sayle  <roger@eyesopen.com>
14476
14477         * alias.c (init_alias_analysis): Correct whitespace.
14478         * bb-reorder.c (fix_edges_for_rarely_executed_code,
14479         partition_hot_cold_basic_blocks): Likewise.
14480         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
14481         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
14482         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
14483         fold_builtin_snprintf_chk, fold_builtin_printf,
14484         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
14485         do_mpfr_arg3, do_mpfr_sincos): Likewise.
14486         * cfgcleanup.c (cleanup_cfg): Likewise.
14487         * cfgexpand.c (tree_expand_cfg): Likewise.
14488         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
14489         * function.c (get_next_funcdef_no): Likewise.
14490         * gengtype.c (main): Likewise.
14491         * genmodes.c (main): Likewise.
14492         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
14493         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
14494         * ifcvt.c (noce_emit_move_insn): Likewise.
14495         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
14496         Likewise.
14497         * stor-layout.c (get_best_mode): Likewise.
14498         * tree-ssa-loop-niter.c (get_val_for): Likewise.
14499         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
14500         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
14501         perform_var_substitution, solve_graph): Likewise.
14502         * tree-vrp.c (vrp_finalize): Likewise.
14503
14504 2007-02-01  Ian Lance Taylor  <iant@google.com>
14505
14506         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
14507         high part of a paradoxical subreg, return a constant zero.
14508
14509 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
14510
14511         * toplev.c (lang_dependent_init): Call init_set_costs.
14512         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
14513
14514 2007-02-01  Richard Guenther  <rguenther@suse.de>
14515
14516         PR middle-end/30656
14517         * fold-const.c (fold_negate_expr): Allow negating a
14518         constant if overflow does not change.
14519
14520 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14521
14522         * doc/c-tree.texi (Expression trees): Improve markup.
14523         * doc/tm.texi (Register Classes, Addressing Modes)
14524         (Floating Point): Fix spacing after abbreviations.  Fix some
14525         typos.
14526
14527 2007-02-01  Ben Elliston  <bje@au.ibm.com>
14528
14529         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
14530         * doc/contrib.texi: Likewise.
14531         * doc/install.texi: Likewise.
14532
14533 2007-01-31  Richard Henderson  <rth@redhat.com>
14534             Ian Lance Taylor  <iant@google.com>
14535
14536         * lower-subreg.c: New file.
14537         * rtl.def (CONCATN): Define.
14538         * passes.c (init_optimization_passes): Add pass_lower_subreg and
14539         pass_lower_subreg2.
14540         * emit-rtl.c (update_reg_offset): New static function, broken out
14541         of gen_rtx_REG_offset.
14542         (gen_rtx_REG_offset): Call update_reg_offset.
14543         (gen_reg_rtx_offset): New function.
14544         * regclass.c: Revert patch of 2006-03-05, restoring
14545         reg_scan_update.
14546         (clear_reg_info_regno): New function.
14547         * dwarf2out.c (concatn_loc_descriptor): New static function.
14548         (loc_descriptor): Handle CONCATN.
14549         * common.opt (fsplit_wide_types): New option.
14550         * opts.c (decode_options): Set flag_split_wide_types when
14551         optimizing.
14552         * timevar.def (TV_LOWER_SUBREG): Define.
14553         * rtl.h (gen_reg_rtx_offset): Declare.
14554         (reg_scan_update): Declare.
14555         * regs.h (clear_reg_info_regno): Declare.
14556         * tree-pass.h (pass_lower_subreg): Declare.
14557         (pass_lower_subreg2): Declare.
14558         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
14559         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
14560         -fsplit-wide-types.
14561         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
14562         * Makefile.in (OBJS-common): Add lower-subreg.o.
14563         (lower-subreg.o): New target.
14564
14565 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14566
14567         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
14568
14569 2007-01-31  Anatoly Sokolov <aesok@post.ru>
14570
14571         PR target/19087
14572         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
14573
14574 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14575
14576         PR middle-end/29335
14577         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
14578
14579 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
14580
14581         * cfgloop.h: Include vec-prim.h.
14582         (enum li_flags): Remove LI_ONLY_OLD.
14583         (loop_iterator): Changed.
14584         (fel_next, fel_init): Iterate over loop tree.
14585         (FOR_EACH_LOOP_BREAK): New macro.
14586         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
14587         FOR_EACH_LOOP.
14588         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
14589         * modulo-sched.c (sms_schedule): Ditto.
14590         * tree-vectorizer.c (vectorize_loops): Ditto.
14591         * doc/loop.texi: Update information on loop numbering and behavior of
14592         FOR_EACH_LOOP wrto new loops.
14593         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
14594         add_to_evolution_1): Test nestedness of loops instead of comparing
14595         their numbers.
14596         * tree-chrec.c (chrec_fold_plus_poly_poly,
14597         chrec_fold_multiply_poly_poly, chrec_evaluate,
14598         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
14599         reset_evolution_in_loop): Ditto.
14600         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
14601
14602 2007-01-31  Dirk Mueller  <dmueller@suse.de>
14603
14604         * c-common.c (warn_about_parentheses): Separate warning about
14605         un-parenthized sequence of comparison operators from the one
14606         which is supposed to warn about x <= y <= z.
14607
14608 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
14609
14610         * optabs.h (enum optab_index): Add new OTI_isinf.
14611         (isinf_optab): Define corresponding macro.
14612         * optabs.c (init_optabs): Initialize isinf_optab.
14613         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
14614         patterns.
14615         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
14616         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
14617         using isinf_optab.
14618         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
14619         expand_builtin_interclass_mathfn.
14620         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
14621         * config/i386/i386.md (UNSPEC_FXAM): New constant.
14622         (fxam<mode>2_i387): New insn pattern.
14623         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
14624         built-in functions as x87 inline asm.
14625
14626 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14627
14628         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
14629
14630 2007-01-30  Eric Christopher  <echristo@apple.com>
14631
14632         * config.gcc: Add geode.
14633
14634 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14635
14636         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
14637         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
14638         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
14639         value-prof.c: Fix comment typos.
14640
14641 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14642
14643         PR c++/24745
14644         * doc/invoke.texi (Wpointer-arith): Document warning.
14645
14646 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
14647
14648         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
14649         the list of discrepancies from the draft TR.
14650
14651 2007-01-30  Dirk Mueller  <dmueller@suse.de>
14652
14653         PR c++/30601
14654         * doc/invoke.texi (-Wreturn-type): Update description to
14655         match new behavior.
14656
14657 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
14658
14659         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
14660
14661 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
14662
14663         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
14664         to handle optabs that operate on floating point input argument and
14665         output to integer output.
14666         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
14667         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
14668         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
14669         expand_builtin_interclass_mathfn ().
14670         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
14671         (ilogbsi2): Remove.
14672         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
14673         ilogbl built-in functions as x87 intrinsics.
14674
14675 2007-01-30  Richard Guenther  <rguenther@suse.de>
14676
14677         PR middle-end/27657
14678         * dwarf2out.c (reference_to_unused): Query varpool if the
14679         variable was output.
14680
14681 2007-01-30  Richard Guenther  <rguenther@suse.de>
14682
14683         PR middle-end/30313
14684         * passes.c (execute_one_pass): Reset in_gimple_form to not
14685         confuse non-unit-at-a-time mode.
14686
14687 2007-01-29  Roger Sayle  <roger@eyesopen.com>
14688             Richard Guenther  <rguenther@suse.de>
14689
14690         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
14691         avoid undefined behaviour on overflow.  Use force_fit_type_double
14692         to construct the constant with the specified TREE_OVERFLOW.
14693
14694 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14695
14696         * config/dfp-bit.c: Add parameterized support for fp exceptions.
14697         * config/dfp-bit.h: Ditto.
14698
14699 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14700
14701         * c-decl.c (pop_scope): Replace warnings with call to
14702         warn_for_unused_label.
14703         * c-common.h (warn_for_unused_label): Declare.
14704         * c-common.c (warn_for_unused_label): Define.
14705
14706 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14707
14708         * tree-optimize.c (update_inlined_to_pointers): Delete unused
14709         function.
14710
14711 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14712
14713         * Makefile.in (USER_H): Remove decfloat.h.
14714         * ginclude/decfloat.h: Delete, moving contents to ...
14715         * ginclude/float.h: Add support for decimal floating point,
14716         guarded by __STDC_WANT_DEC_FP__.
14717
14718 2007-01-29  Mike Stump  <mrs@apple.com>
14719
14720         * doc/gccint.texi (Top): Rename Loop Representation to Loop
14721         Analysis and Representation to resolve case insensitive conflict.
14722         * doc/loop.texi (Loop Analysis and Representation): Likewise.
14723
14724 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
14725
14726         * tree.h (struct tree_memory_tag): Add aliases member.
14727         (MTAG_ALIASES): New macro.
14728         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
14729         (add_may_alias): Remove pointer-set. Update for may_aliases being
14730         a bitmap.
14731         (mark_aliases_call_clobbered): Update for may_aliases being a
14732         bitmap.
14733         (compute_tag_properties): Ditto.
14734         (create_partition_for): Ditto.
14735         (compute_memory_partitions): Ditto.
14736         (dump_may_aliases_for): Ditto.
14737         (is_aliased_with): Ditto.
14738         (add_may_alias_for_new_tag): Ditto.
14739         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
14740         (compute_is_aliased): New function.
14741         (compute_may_aliases): Call compute_is_aliased).
14742         (init_alias_info): Initialize alias_bitmap_obstack.
14743         (union_alias_set_into): New function.
14744         (compute_flow_sensitive_aliasing): Use union_aliases_into.
14745         (have_common_aliases_p): Rewrite to take two bitmaps and use
14746         intersection.
14747         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
14748         Update for bitmaps.
14749         (finalize_ref_all_pointers): Update for add_may_alias changes.
14750         (new_type_alias): Ditto.
14751         * tree-flow-inline.h (may_aliases): Return a bitmap.
14752         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
14753         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
14754         may_aliases being a bitmap.
14755         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
14756         may_aliases now returns a bitmap.
14757         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
14758         being a bitmap.
14759         * tree-ssa-operands.c (add_virtual_operand): Update for
14760         may_aliases being a bitmap.
14761
14762 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
14763
14764         PR tree-optimization/30630
14765         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
14766         variable as changed.
14767
14768 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
14769
14770         PR c++/28266
14771         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
14772         expanded only once even if an error occurs.
14773
14774 2007-01-29  Ben Elliston  <bje@au.ibm.com>
14775
14776         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
14777         (__gcov_average_profiler): Likewise.
14778         (__gcov_ior_profiler): Likewise.
14779         (__gcov_merge_ior): Likewise.
14780
14781 2007-01-28  Jan Hubicka  <jh@suse.cz>
14782
14783         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
14784         * value-prof.c (stringop_block_profile): Likewise.
14785
14786 2007-01-28  Jan Hubicka  <jh@suse.cz>
14787
14788         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
14789         variant handling histograms; add wrapper.
14790         (clear_storage_via_libcall): Export.
14791         (emit_block_move_hints): Break out from ...; add histograms.
14792         (emit_block_move): ... this one.
14793         (clear_storage_hints): Break out from ...; add histograms.
14794         (clear_storage): ... this one.
14795         (set_storage_via_memset): Handle histogram.
14796         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
14797         (clear_storage_hints, clear_storage_via_libcall): Declare.
14798         (set_storage_via_setmem): Update prototype.
14799         * doc/md.texi (movmem, setmem): Document new arguments.
14800
14801         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
14802         new histograms.
14803         (stringop_block_profile): New global function.
14804         (tree_stringops_values_to_profile): Profile block size and alignment.
14805         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
14806         HIST_TYPE_IOR.
14807         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
14808         (stringop_block_profile): Declare.
14809         * builtins.c: Include value-prof.h.
14810         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
14811         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
14812         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
14813         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
14814         * profile.c (instrument_values): Add new counters.
14815         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
14816         calls.
14817         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
14818         (tree_init_edge_profiler): Build new profilers.
14819         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
14820         (pass_tree_profile): Add dump.
14821         (tree_profile_hooks): Update.
14822         * Makefile.in (LIBGCOV): Add new constants.
14823         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
14824         __gcov_ior_profiler): New.
14825         * i386.md (movmem/setmem expanders): Add new optional arguments.
14826
14827 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
14828
14829         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
14830
14831 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14832
14833         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
14834         (tree_unswitch_single_loop): Pass eni_size_weights to
14835         tree_num_loop_insns.
14836         * tree-ssa-loop-manip.c: Include tree-inline.h.
14837         (can_unroll_loop_p): Pass eni_size_weights to
14838         tree_num_loop_insns.
14839         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
14840         Pass eni_size_weights to estimate_num_insns.
14841         * tree.h (init_inline_once): Export.
14842         * toplev.c (backend_init): Call init_inline_once.
14843         * cgraphunit.c (cgraph_process_new_functions,
14844         cgraph_analyze_function): Pass eni_inlining_weights to
14845         estimate_num_insns.
14846         * ipa-inline.c (compute_inline_parameters): Ditto.
14847         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
14848         to estimate_num_insns.
14849         (try_unroll_loop_completely): Pass eni_size_weights to
14850         tree_num_loop_insns.
14851         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
14852         ot estimate_num_insns.
14853         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
14854         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
14855         * tree-inline.c (eni_inlining_weights, eni_size_weights,
14856         eni_time_weights): New variables.
14857         (init_inline_once): Initialize them.
14858         (struct eni_data): Mew.
14859         (estimate_num_insns_1, estimate_num_insns): Use weights.
14860         * tree-inline.h (struct eni_weights_d): New.
14861         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
14862         (estimate_num_insns): Declaration changed.
14863         * cfgloop.h (tree_num_loop_insns): Declaration changed.
14864         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
14865         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
14866
14867 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14868
14869         * tree-data-ref.c (conflict_fn): Assert that the number of affine
14870         relations in the conflict function is valid.
14871
14872 2007-01-27  Ian Lance Taylor  <iant@google.com>
14873
14874         * common.opt: Add fstrict-overflow.
14875         * opts.c (decode_options): Set flag_strict_overflow if -O2.
14876         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
14877         (TYPE_OVERFLOW_UNDEFINED): Define.
14878         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
14879         Replace all uses.
14880         * tree.h (TYPE_TRAP_SIGNED): Don't define.
14881         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
14882         (fold_negate_expr): Likewise.
14883         (make_range): Likewise.
14884         (extract_muldiv_1): Likewise.
14885         (maybe_canonicalize_comparison): Likewise.
14886         (fold_comparison): Likewise.
14887         (fold_binary): Likewise.
14888         (tree_expr_nonnegative_p): Likewise.
14889         (tree_expr_nonzero_p): Likewise.
14890         * tree-vrp.c (compare_values): Likewise.
14891         (extract_range_from_binary_expr): Likewise.
14892         (extract_range_from_unary_expr): Likewise.
14893         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
14894         Likewise.
14895         (nowrap_type_p): Likewise.
14896         * tree-scalar-evolution.c (simple_iv): Likewise.
14897         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
14898         (build_range_check): Likewise.
14899         (extract_muldiv_1): Likewise.
14900         (fold_comparison): Likewise.
14901         * tree-vrp.c (vrp_int_const_binop): Likewise.
14902         (extract_range_from_unary_expr): Likewise.
14903         * convert.c (convert_to_integer): Likewise.
14904         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
14905         (fold_comparison): Likewise.
14906         (fold_binary): Likewise.
14907         * optabs.c (optab_for_tree_code): Likewise.
14908         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
14909         * simplify-rtx.c (simplify_const_relational_operation): Check
14910         flag_strict_overflow and flag_trapv.
14911         (simplify_const_relational_operation): Likewise.
14912         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
14913         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
14914         -fstrict-overflow.
14915
14916 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14917
14918         * tree.c (tree_fold_gcd): Delete.
14919         * tree.h (tree_fold_gcd): Remove prototype.
14920         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
14921         test whether one constant integer is a multiple of another.  Instead
14922         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
14923         * fold-const.c (multiple_of_p):  We've determined both TOP and
14924         BOTTOM are integer constants so we can call int_const_binop directly
14925         instead of the more generic const_binop.
14926
14927 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14928
14929         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
14930         1*X check that the constant hasn't overflowed, to preserve the
14931         TREE_OVERFLOW bit.
14932         (round_up): Provide an efficient implementation when rouding-up an
14933         INTEGER_CST to a power-of-two.
14934
14935 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14936
14937         * doc/sourcebuild.texi: Add comma for clarity.
14938         * doc/extend.texi: Fix some typos.
14939         * doc/passes.texi: Likewise.
14940         * doc/cppinternals.texi: Likewise.
14941         * doc/c-tree.texi: Likewise.
14942         * doc/tree-ssa.texi: Likewise.
14943         * doc/install.texi: Likewise.
14944
14945 2007-01-27  Jan Hubicka  <jh@suse.cz>
14946
14947         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
14948         (pass_sra): Do not require alias information.
14949         * passes.c (init_optimization_passes): Add SRA
14950
14951 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
14952
14953         * tracer.c (rest_of_handle_tracer): We already cleaned
14954         up the CFG in tracer() so don't do it here again.
14955         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
14956         cleanup_cfg here, either.  And don't call renumber_insns.
14957
14958         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
14959         and BB_HEAD are in the insn stream here.  Instead make sure
14960         that BB_INSN is valid on all insns.  Also, do check here that
14961         there are no pending branch predictions...
14962         (rtl_verify_flow_info): ...instead of doing it here.  Checks
14963         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
14964         here.
14965
14966 2007-01-26  Roger Sayle  <roger@eyesopen.com>
14967
14968         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
14969         function to simplify/factorize operand order canonicalization.
14970         (ix86_fixup_binary_operands): Reorganize using the above function.
14971         (ix86_binary_operator_ok): Likewise.
14972
14973 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
14974
14975         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
14976         file scope from optimize_attrs.
14977         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
14978         up search.
14979         (optimize_attrs): Clear insn_code_values after freeing it.
14980
14981 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14982
14983         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
14984         a parts.base assignment.
14985
14986 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14987
14988         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
14989         (compute_subscript_distance, initialize_data_dependence_relation,
14990         finalize_ddr_dependent, analyze_ziv_subscript,
14991         analyze_siv_subscript_cst_affine,
14992         compute_overlap_steps_for_affine_univar,
14993         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14994         analyze_siv_subscript, analyze_miv_subscript,
14995         analyze_overlapping_iterations, subscript_dependence_tester_1,
14996         compute_self_dependence, free_dependence_relation): Work
14997         with affine_fn instead of chrecs.
14998         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
14999         common_affine_function, affine_function_base,
15000         affine_function_constant_p, affine_fn_op, affine_fn_plus,
15001         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
15002         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
15003         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
15004         (all_chrecs_equal_p): Removed.
15005         * tree-data-ref.h (affine_fn, conflict_function): New types.
15006         (struct subscript): Change type of conflicting_iterations_in_a
15007         and conflicting_iterations_in_b.
15008
15009 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
15010
15011         PR other/30182
15012         * config/pa/pa.h (TARGET_HPUX_11): New.
15013         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
15014         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
15015
15016 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
15017         Richard Guenther  <rguenther@suse.de>
15018
15019         * tree-ssa-structalias.c (solve_graph): Handle case
15020         we merged the variable to another.
15021
15022 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15023
15024         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
15025         functions.
15026
15027         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
15028         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
15029
15030 2007-01-25  DJ Delorie  <dj@redhat.com>
15031
15032         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
15033         allow changes to modes which don't fit in those registers.
15034
15035         * reload1.c (choose_reload_regs): Check for invalid subregs before
15036         computing their locations, not after.
15037
15038 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
15039
15040         PR 25127
15041         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
15042         save Altivec registers in an eh_return function.
15043         (compute_vrsave_mask): Likewise.
15044         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
15045         for saving Altivec registers.
15046         (rs6000_emit_prologue): Don't allocate stack twice in
15047         eh_return function.  Correct expected value of altivec_save_offset
15048         when using save_world.  Describe save of R0 to stack when using
15049         save_world.  Describe stack pointer adjustment when using
15050         save_world.  Remove duplicated eh_return parameter register saving.
15051         Update sp_offset variable after save_world.
15052         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
15053         darwin-world.asm.
15054         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
15055         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
15056         implies Altivec.
15057
15058 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
15059
15060         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
15061
15062 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
15063
15064         PR other/30182
15065         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
15066         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
15067
15068 2007-01-25  Richard Guenther  <rguenther@suse.de>
15069
15070         * doc/invoke.texi (-Wcoverage-mismatch): Document.
15071         * common.opt (-Wcoverage-mismatch): New warning option.
15072         * coverage.c (get_coverage_counts): Ignore coverage mismatch
15073         if -Wcoverage-mismatch is given.
15074
15075 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
15076
15077         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
15078         (ipcp_driver): Change to static definition.
15079         Add dumping of the ifunctions.
15080         (constant_val_insert): Remove unused parameter. Support for SSA.
15081         (ipcp_propagate_const): Support for SSA.
15082         (ipcp_profile_bb_print): Print only analyzed nodes.
15083         (ipcp_replace_map_create): Remove support for Fortran constant
15084         for now.
15085         * ipa-prop.c (ipa_method_modify_stmt,
15086         ipa_callsite_compute_param): Support for SSA.
15087         * ipa-prop.h (ipcp_driver): Remove declaration.
15088         (IS_VALID_TREE_MAP_INDEX): Add define.
15089
15090 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
15091
15092         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
15093
15094 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15095
15096         PR middle-end/30447
15097         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
15098         constant argument to cabs and do it without checking for
15099         -funsafe-math-optimizations.
15100
15101 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
15102
15103         * c-common.h (RID_FIRST_CXX0X): New.
15104         (RID_LAST_CXX0X): New.
15105         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
15106         by -Wall.
15107         * c.opt (Wc++0x-compat): New.
15108         * doc/invoke.texi (-Wc++0x-compat): Document.
15109
15110 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15111
15112         * builtins.c (fold_builtin_carg): New.
15113         (fold_builtin_1): Use it.
15114
15115 2007-01-24  Jan Hubicka  <jh@suse.cz>
15116
15117         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
15118
15119         * ipa-inline.c (initial_insns, max_insns): Delete.
15120         (compute_max_insns): New function.
15121         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
15122         of insns as base for code growth.
15123         (cgraph_decide_inlining): Make initial_insns local; do not compute
15124         max_insns.
15125         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
15126         * doc/invoke.texi (inline-unit-growth): Update docs.
15127
15128 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
15129
15130         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
15131         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
15132         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
15133         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
15134         for CPUs that have PTA_CX16 set.
15135
15136         PR middle-end/27416
15137         * gimplify.c (omp_check_private): New function.
15138         (gimplify_scan_omp_clauses): Use it for
15139         firstprivate/lastprivate/reduction.
15140
15141         PR middle-end/30494
15142         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
15143         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
15144
15145         PR middle-end/30421
15146         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
15147         If lower_lastprivate_clauses emits some statements, append them
15148         to dlist rather than body_p and to body_p append an initializer.
15149         (lower_omp_for): Adjust caller.
15150
15151 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
15152
15153         * target.h (globalize_decl_name): New.
15154         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
15155         * output.h (default_globalize_decl_name): New.
15156         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
15157         globalize_label.
15158         (globalize_decl): Ditto.
15159         (default_globalize_decl_name): New.
15160         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
15161         (ia64_handle_version_id_attribute): New.
15162         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
15163         (ia64_asm_output_external): Use globalize_decl_name instead
15164         of globalize_label.
15165         * doc/extend.texi (version_id): New pragma.
15166         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
15167
15168 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15169
15170         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
15171         _uleb128_t and _Unwind_SWord with _sleb128_t.
15172         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
15173         uw_frame_state_for, uw_update_context_1): Likewise.
15174         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
15175         * unwind-pe.h (read_uleb128, read_sleb128,
15176         read_encoded_value_with_base): Likewise.
15177         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
15178
15179 2007-01-24  Richard Guenther  <rguenther@suse.de>
15180
15181         * builtins.c (expand_builtin_cexpi): Get the fndecl
15182         for cexp in the correct way.
15183
15184 2007-01-24  Jan Hubicka  <jh@suse.cz>
15185
15186         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
15187
15188 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15189
15190         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
15191         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
15192         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
15193         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
15194         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
15195         __SIZEOF_PTRDIFF_T__.
15196         * doc/cpp.texi: Documentation for the new builtin macros added.
15197
15198 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
15199
15200         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
15201         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
15202         instead of operands[2] to avoid access past the end of array.
15203
15204 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
15205
15206         * reload1.c (emit_reload_insns): Pass the reload register
15207         for a non-spill output reload through forget_old_reloads_1.
15208
15209 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
15210
15211         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
15212         _SOFT_DOUBLE if doubles use software floating-point.
15213         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
15214         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
15215         * config/rs6000/darwin-ldouble.c: Also compile functions for
15216         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
15217         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
15218         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
15219         commented-out long double override.
15220         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
15221         * config/rs6000/eabispe.h: Likewise.
15222         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
15223         long double for non-SPE.
15224         (rs6000_handle_option): Likewise.
15225         (invalid_e500_subreg): Disallow more subregs involding DImode,
15226         DFmode, TImode or TFmode.
15227         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
15228         E500 double.
15229         (legitimate_lo_sum_address_p): Also check for TFmode for E500
15230         double.
15231         (rs6000_legitimize_address): Also handle TFmode for E500 double.
15232         (rs6000_legitimize_reload_address): Also handle TFmode for E500
15233         double.
15234         (rs6000_legitimate_address): Also check for TFmode for E500
15235         double.
15236         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
15237         (spe_build_register_parallel): Handle TFmode and TCmode.
15238         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
15239         double.
15240         (function_arg): Handle TFmode and TCmode for E500 double.
15241         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
15242         in general.
15243         (print_operand): Handle TFmode and TImode for %y.
15244         (rs6000_generate_compare): Handle TFmode comparisons for E500
15245         double.
15246         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
15247         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
15248         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
15249         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
15250         TFmode for E500 double.
15251         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
15252         (floatsidf2): Enable for E500 double.
15253         (movtf_softfloat): Use rs6000_nonimmediate_operand.
15254         (extenddftf2): Change to extenddftf2_fprs.
15255         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
15256         depending on TARGET_E500_DOUBLE.
15257         (extendsftf2): Enable for E500 double.
15258         (trunctfdf2): Enable for E500 double.
15259         (trunctfsf2): Change to trunctfsf2_fprs.
15260         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
15261         depending on TARGET_E500_DOUBLE.
15262         (floatsitf2): Enable for E500 double.
15263         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
15264         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
15265         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
15266         (negtf2): Change to negtf2_internal.
15267         (negtf2): New expander.
15268         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
15269         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
15270         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
15271         (movdi_internal32): Use rs6000_nonimmediate_operand.
15272         (unnamed splitter): Likewise.
15273         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
15274         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
15275         (SPE64TF, DITI): New mode macros.
15276         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
15277         modes.
15278         (frob_tf_ti): New.
15279         (frob_<mode>_di_2): New.
15280         (frob_tf_di_8_2): New.
15281         (frob_di_df): Change to frob_di_<mode>; allow more modes.
15282         (frob_ti_tf): New.
15283         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
15284         more modes.
15285         (frob_ti_<mode>_8_2): New.
15286         (frob_ti_tf_2): New.
15287         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
15288         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
15289         TFmode.
15290         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
15291         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
15292         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
15293         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
15294         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
15295         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
15296         tsttflt_gp): New.
15297
15298 2007-01-23  Ian Lance Taylor  <iant@google.com>
15299
15300         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
15301         insn-*.o first.
15302         (OBJS-archive): Reformat, alphabetize.
15303         (OBJS): Change out_object_file to OBJS-md.
15304
15305 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
15306
15307         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
15308         JUMP_P and CALL_P predicates where applicable.
15309         * config/i386/i386.c: Ditto.
15310         * config/i386/i386.md: Ditto.
15311         * config/i386/mmx.md: Ditto.
15312         * config/i386/predicates.md: Ditto.
15313
15314 2007-01-22  Andreas Schwab  <schwab@suse.de>
15315
15316         * config/m68k/m68k.h: Fix comment.
15317
15318 2007-01-22  Jan Hubicka  <jh@suse.cz>
15319
15320         * passes.c (init_optimization_passes): Do not rerun
15321         pass_early_warn_uninitialized.
15322
15323 2007-01-22  Richard Guenther  <rguenther@suse.de>
15324
15325         PR tree-optimization/30038
15326         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
15327         function.
15328         (execute_cse_sincos_1): Likewise.
15329         (execute_cse_sincos): Likewise.
15330         (gate_cse_sincos): Likewise.
15331         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
15332         the cexpi() canonicalization of sincos().
15333         * tree-pass.h (pass_cse_sincos): Declare.
15334         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
15335
15336 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
15337
15338         PR rtl-optimization/29329
15339         * combine.c (replaced_rhs_insn): Rename to i2mod.
15340         (replaced_rhs_value): Rename to i2mod_new_rhs.
15341         (i2mod_old_rhs): New global variable.
15342         (combine_instructions): Adjust for above change.  Save a copy of
15343         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
15344         note are substituted in the second instruction.
15345         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
15346         ditch the note if it pertains to the second eliminated register
15347         and this register is mentioned in i2mod_old_rhs.
15348
15349         Revert:
15350         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
15351
15352         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
15353         the insn to which the note was originally attached.
15354
15355 2007-01-21  Jan Hubicka  <jh@suse.cz>
15356
15357         * ipa-inline.c (inlining_mode): Comment, move up.
15358         (cgraph_decide_inlining_incrementally): Do not perform inlining
15359         itself; fix handling of flattening of self recursive functions.
15360         (cgraph_find_cycles): Remove.
15361         (cgraph_flatten_node): Remove.
15362         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
15363         (try_inline): New function.
15364         (cgraph_early_inlining): Update call of
15365         cgraph_decide_inlining_incrementally.  Apply inlining here.
15366         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
15367
15368 2007-01-21  Dirk Mueller  <dmueller@suse.de>
15369
15370         PR bootstrap/30511
15371         * tree-vrp.c (check_array_bounds): do not warn
15372         about ADDR_EXPR's of ARRAY_REF's which are immediately
15373         used in binary expressions.
15374
15375 2007-01-21  Ira Rosen  <irar@il.ibm.com>
15376
15377         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
15378         read_write_dep and macros for its access.
15379         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
15380         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
15381         argument, call vect_check_interleaving for every independent pair of
15382         data-refs. Mark loads that access the same memory location as a store
15383         in the loop.
15384         (vect_check_dependences): Remove.
15385         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
15386         call, fix the call to vect_analyze_data_ref_dependence.
15387         (vect_analyze_data_ref_access): For statements that access the same
15388         data-ref, check that they are not stores; for loads, check that there
15389         is no store that access the same location.
15390
15391 2007-01-20  Roger Sayle  <roger@eyesopen.com>
15392             Joseph Myers  <joseph@codesourcery.com>
15393
15394         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
15395         (-fdump-rtl-stack): Likewise.
15396         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
15397         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
15398         (-mpt-fixed): Use @minus{} for minus sign.
15399         (Using Precompiled Headers): Fix under/overfull hbox.
15400
15401 2007-01-20  Jan Hubicka  <jh@suse.cz>
15402
15403         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
15404         place within annotation.
15405
15406 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15407
15408         * pa.c (output_move_double): Change array size of xoperands to 4.
15409
15410 2007-01-20  Jan Hubicka  <jh@suse.cz>
15411
15412         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
15413         as temporary.
15414
15415 2007-01-19  Ian Lance Taylor  <iant@google.com>
15416
15417         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
15418         constant to unsigned HOST_WIDE_INT before negating.
15419
15420 2007-01-19  Ian Lance Taylor  <iant@google.com>
15421
15422         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
15423         to unsigned.
15424         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
15425         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15426         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
15427         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
15428         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15429         (realloc_vdef, realloc_vuse): Change second parameter to
15430         unsigned.
15431         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
15432         fields to unsigned.
15433         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
15434         unsigned. Change x and lim locals to unsigned.
15435         (realloc_vdef, realloc_vuse): Change num_elem parameter to
15436         unsigned.
15437         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
15438         (copy_virtual_operands): Change i and n locals to unsigned.
15439
15440 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15441
15442         PR middle-end/29335
15443         * builtins.c (fold_builtin_1): Handle builtin fdim.
15444
15445 2007-01-20  Jan Hubicka  <jh@suse.cz>
15446
15447         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
15448         * tree-ssa-structalias.c (compute_points_to_sets): Do call
15449         init_alias_heapvars.
15450         (init_alias_heapvars): Initialize only when not already initialized.
15451         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
15452
15453 2007-01-19  Roger Sayle  <roger@eyesopen.com>
15454
15455         * common.opt (fsigned-zeros): New command line option.
15456         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
15457         of flag_unsafe_math_optimizations.
15458         * opts.c (set_fast_math_flags): The -ffast-math command line option
15459         implies -fno-signed-zeros.
15460         (fast_math_flags_set_p): Likewise.
15461
15462         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
15463         the documentation of -ffast-math appropriately.  Wrap long lines.
15464
15465 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
15466
15467         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
15468         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
15469
15470 2007-01-19  Tomas Bily  <tbily@suse.cz>
15471
15472         * cgraphunit.c (cgraph_finalize_function): Updating of pid
15473         * tree-profile.c:
15474         (tree_init_ic_make_global_vars): New function
15475         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
15476         (tree_gen_ic_profiler): New function
15477         (tree_gen_ic_func_profiler): New function
15478         (tree_profiling): Added calling of tree_gen_ic_func_profiler
15479         (tree_profile_hooks): Added hook for indirec/virtual calls
15480         * value-prof.c (tree_find_values_to_profile): New case for
15481         indirect calls
15482         (tree_values_to_profile): Call for determining indirect/virtual
15483         counters
15484         (tree_indirect_call_to_profile): New function
15485         (tree_ic_transform): New function
15486         (tree_ic): New function
15487         (find_func_by_pid): New function
15488         (init_pid_map): New function
15489         (tree_value_profile_transformations): Added check for
15490         indirect/virtual call transformation
15491         * value-prof.h (enum hist_type): New counter type for
15492         indirect/virtual calls
15493         (profile_hooks): Added new hook for profiling indirect/virtual
15494         calls
15495         * profile.c (instrument_values): New case for indirect/virtual
15496         call added
15497         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
15498         (GCOV_COUNTER_V_INDIR): New counter type
15499         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
15500         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
15501         call added
15502         * cgraph.c: Definition of cgraph_max_pid
15503         (cgraph_create_node): Default init of pid attribute
15504         * cgraph.h: Declaration of cgraph_max_pid
15505         (struct cgraph_node): Added pid attribute
15506         * libgcov.c (__gcov_indirect_call_profiler): New function
15507         (__gcov_one_value_profiler_body): New function
15508         (__gcov_one_value_profiler): Body was moved to
15509         __gcov_one_value_profiler_body and calls it
15510
15511 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
15512
15513         * doc/gty.texi (Options): Document the mark_hook option to GTY.
15514         * gengtype.c (write_types_data, write_func_for_structure,
15515         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
15516         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
15517         (walk_type, write_func_for_structure): Generate the mark_hook if
15518         needed.
15519
15520 2007-01-19  Jan Hubicka  <jh@suse.cz>
15521
15522         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
15523         'early' argument take inlining mode argument specifying whether to
15524         inline for size/speeed or all functions; add support for flattening;
15525         improve dumpting.
15526         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
15527
15528 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15529
15530         PR c++/17947
15531         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
15532         the name of the declared identifier.
15533
15534 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15535
15536         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
15537         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
15538         duplicate evaluation.
15539
15540 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15541
15542         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
15543         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
15544         to XFMode, use acosxf2 and truncate result to requested mode.
15545         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
15546         (asin<mode>2): Similarly, with asin expanders.
15547         (*fscalexf4_i387): Rename from *fscalexf4.
15548         (expNcorexf3): New expander.
15549         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
15550         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
15551         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
15552         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
15553         patterns for SSE math.
15554         (exp10<mode>2): Similarly, with exp10 expanders.
15555         (exp2<mode>2): Similarly, with exp2 expanders.
15556         (expm1<mode>2): Similarly, with expm1 expanders.
15557         (ldexp<mode>3): Similarly, with ldexp expanders.
15558         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
15559         Use gen_truncxf<mode>2_i387_noop to truncate result.
15560
15561 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15562
15563         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
15564         for ColdFire targets.
15565
15566 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
15567             Richard Sandiford  <richard@codesourcery.com>
15568
15569         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
15570         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
15571         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
15572         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
15573         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15574         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15575
15576 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15577
15578         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
15579         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
15580         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
15581         (*adddi_dilshr32_cf): New pattern.
15582         (adddi3, subdi3): Remove first alternatives.
15583
15584 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15585
15586         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
15587         implemented using move.l, do not use its cc result for floating-point
15588         comparisons.
15589
15590 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15591
15592         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
15593         from accepting 's' constraints if flag_pic.
15594
15595 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15596
15597         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
15598         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
15599         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
15600         condition from TARGET_68881 to TARGET_HARD_FLOAT.
15601
15602 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
15603
15604         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
15605         ColdFire alternatives.
15606         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
15607         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
15608         architectures that support ff1 instruction.
15609
15610 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15611             Julian Brown  <julian@codesourcery.com>
15612
15613         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
15614         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
15615         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
15616         Add commentary.
15617
15618 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15619
15620         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
15621         and return a bool.
15622         (output_move_const_into_data_reg, output_move_simode_const): Delete.
15623         * config/m68k/m68k.c (const_method, const_int_cost): Take a
15624         HOST_WIDE_INT instead of an rtx.
15625         (m68k_rtx_costs): Update call accordingly.
15626         (output_move_const_into_data_reg): Likewise.  Fix formatting.
15627         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
15628         Return a bool.
15629         (output_move_simode_const): Update calls after above changes.
15630         Rework to use automatic variables and predicates like MEM_P.
15631         * config/m68k/m68k.md (pushexthisi_const): Update call to
15632         valid_mov3q_const.
15633
15634 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15635
15636         * tree-ssa-alias.c (perform_var_substitution): Fix typo
15637         in dump_flags test.
15638
15639 2007-01-19  Richard Guenther  <rguenther@suse.de>
15640
15641         * builtins.c (expand_builtin_cexpi): Fall back to expanding
15642         via cexp in case sincos is not available.
15643
15644 2007-01-19  Richard Guenther  <rguenther@suse.de>
15645
15646         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
15647         * defaults.h (TARGET_HAS_SINCOS): Default to off.
15648         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
15649         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
15650         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
15651         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
15652         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
15653         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
15654
15655 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15656
15657         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
15658         New insn patterns.
15659         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
15660         (atan2xf3): Directly generate RTL pattern.
15661         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
15662         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15663         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15664         disable patterns for SSE math.
15665         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
15666         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15667         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15668         disable patterns for SSE math.
15669
15670 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
15671
15672         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
15673
15674 2007-01-18  Roger Sayle  <roger@eyesopen.com>
15675
15676         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
15677         VIEW_CONVERT_EXPR to the same type as it's operand.
15678
15679 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
15680
15681         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
15682         configured for long double 128.
15683
15684 2007-01-18  Mike Stump  <mrs@apple.com>
15685
15686         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
15687         error.
15688
15689 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
15690
15691         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
15692         type correct.
15693
15694 2007-01-18  Jan Hubicka  <jh@suse.cz>
15695
15696         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
15697         greater than NUM_VOP_FREE_BUCKETS.
15698
15699 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
15700
15701         * tree-ssa-structalias.c: Update comments.
15702         (ptabitmap_obstack): Removed.
15703         (pta_obstack): New.
15704         (oldpta_obstack): Ditto.
15705         (stats): Add a few members.
15706         (struct variable_info): Remove node, complex, address_taken, and
15707         indirect_target members. Add oldsolution member.
15708         (new_var_info): Do not initialize removed members.
15709         (constraint_expr_type): Remove INCLUDES.
15710         (constraint_graph): Add size, implicit_preds, rep,
15711         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
15712         (FIRST_REF_NODE): New macro.
15713         (LAST_REF_NODE): Ditto.
15714         (FIRST_ADDR_NODE): Ditto.
15715         (find): New function.
15716         (unite): Ditto.
15717         (dump_constraint): Do not handle INCLUDES.
15718         (insert_into_complex): Do not insert duplicate constraints.
15719         (condense_varmap_nodes): Renamed and rewritten into ...
15720         (merge_node_constraints): This. Also fix bug in handling of
15721         offseted copy constraints.
15722         (clear_edges_for_node): No longer need to deal with preds at all,
15723         or removing associated preds/succs.
15724         (merge_graph_nodes): Deal with indirect_cycles.
15725         Don't deal with predecessors.
15726         (add_implicit_graph_edge): New function.
15727         (add_pred_graph_edge): Ditto.
15728         (add_graph_edge): Don't deal with predecessors.
15729         (build_constraint_graph): Removed.
15730         (build_pred_graph): New function.
15731         (build_succ_graph): Ditto.
15732         (struct scc_info): Removed in_component. Added roots, dfs, and
15733         node_mapping. Remove visited_index, unification_queue.
15734         (scc_visit): Deal with union-find we do now.
15735         Deal with cycles with REF nodes.
15736         (collapse_nodes): Renamed and rewritten to ...
15737         (unify_nodes): This.
15738         (process_unification_queue): Removed.
15739         (topo_visit): Cleanup
15740         (do_da_constraint): Use find.
15741         (do_sd_constraint): Ditto.
15742         (do_ds_constraint): Ditto.
15743         (do_complex_constraint): Ditto.
15744         (init_scc_info): Update for removed and added members.
15745         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
15746         (find_indirect_cycles): This.
15747         (equivalence_class): New variable.
15748         (label_visit): New function.
15749         (perform_variable_substitution): Rewritten.
15750         (free_var_substitution_info): New function.
15751         (find_equivalent_node): Ditto.
15752         (move_complex_constraints): Ditto.
15753         (eliminate_indirect_cycles): Ditto.
15754         (solve_graph): Only propagate changed bits.
15755         Use indirect cycle elimination.
15756         Use find.
15757         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
15758         (tree_id_eq): Renamed to ...
15759         (tree_vi_eq): This. Update for member change
15760         (insert_id_for_tree): Renamed and rewritten to ...
15761         (insert_vi_for_tree): This.
15762         (lookup_id_for_tree): Renamed and rewritten to ...
15763         (lookup_vi_for_tree): This.
15764         (get_id_for_tree): Renamed and rewritten to ...
15765         (get_vi_for_tree): Ditto.
15766         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
15767         (process_constraint): Don't handle INCLUDES.
15768         Remove special ADDRESSOF case.
15769         (find_func_aliases): Rewrite to use vi functions instead of id
15770         ones.
15771         (create_function_info_for): Ditto.
15772         (create_variable_info_for): Ditto.
15773         (intra_create_variable_infos): Ditto.
15774         (merge_smts_into): Ditto.
15775         (find_what_p_points_to): Ditto.
15776         (init_base_vars): Ditto.
15777         (init_alias_vars): Ditto.
15778         (remove_preds_and_fake_succs): New function.
15779         (dump_sa_points_to_info): Dump new stats.
15780         (dump_solution_for_var): Use find.
15781         (set_used_smts): Fix formatting.
15782         (compute_points_to_sets): Updated for new functions.
15783         (ipa_pta_execute): Ditto.
15784
15785 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15786             Richard Sandiford  <richard@codesourcery.com>
15787
15788         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
15789         parallels.
15790         * calls.c (expand_call): If the return value is a PARALLEL,
15791         extract its first member.
15792         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
15793         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15794         use FUNCTION_EXTRA_EPILOGUE.
15795         (m68k_function_value): Return a PARALLEL if the return value
15796         is of a pointer type.
15797         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
15798         (FUNCTION_EXTRA_EPILOGUE): Remove.
15799         * config/m68k/m68k.md (D0_REG): New constant.
15800
15801 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15802
15803         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15804         output a NOP for empty epilogues.
15805
15806 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15807
15808         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
15809         before function.  Extend register save check to include all
15810         registers, not just integer ones.
15811
15812 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15813
15814         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
15815         (m68k_use_return_insn): ...this.
15816         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
15817         * config/m68k/m68k.c (use_return_insn): Rename to...
15818         (m68k_use_return_insn): ...this.
15819         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
15820         of USE_RETURN_INSN.
15821
15822 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15823
15824         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
15825         nearest even, fix denormal rounding overflow.
15826
15827 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15828
15829         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
15830         f%$smove and f%$move.
15831         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
15832         (extendsfdf2_cf): Use fdmove instead of f%&move.
15833         (truncdfsf2_cf): Use fsmove instead of f%$smove.
15834         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
15835
15836 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15837
15838         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
15839         GPR<-GPR moves.
15840
15841 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15842
15843         * real.h (real_format): Add a canonical_nan_lsbs_set field.
15844         (coldfire_single_format): Declare.
15845         (coldfire_double_format): Likewise.
15846         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
15847         of qnan_msb_set to determine the lower bits of a canonical
15848         NaN significand.
15849         (encode_ieee_double): Likewise.
15850         (encode_ieee_quad): Likewise.
15851         (ieee_single_format): Initialize canonical_nan_lsbs_set.
15852         (mips_single_format): Likewise.
15853         (ieee_double_format): Likewise.
15854         (mips_double_format): Likewise.
15855         (ieee_extended_motorola_format): Likewise.
15856         (ieee_extended_intel_96_format): Likewise.
15857         (ieee_extended_intel_128_format): Likewise.
15858         (ieee_extended_intel_96_round_53_format): Likewise.
15859         (ibm_extended_format): Likewise.
15860         (mips_extended_format): Likewise.
15861         (ieee_quad_format): Likewise.
15862         (mips_quad_format): Likewise.
15863         (vax_f_format): Likewise.
15864         (vax_d_format): Likewise.
15865         (vax_g_format): Likewise.
15866         (i370_single_format): Likewise.
15867         (i370_double_format): Likewise.
15868         (decimal_single_format): Likewise.
15869         (decimal_double_format): Likewise.
15870         (decimal_quad_format): Likewise.
15871         (c4x_single_format): Likewise.
15872         (c4x_extended_format): Likewise.
15873         (real_internal_format): Likewise.
15874         (coldfire_single_format): New real_format.
15875         (coldfire_double_format): Likewise.
15876         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
15877         canonical_nan_lsbs_set.
15878         (pdp11_d_format): Likewise.
15879         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
15880         if TARGET_COLDFIRE_CPU.
15881
15882 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15883
15884         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
15885         (output_call, m68k_legitimize_call_address): Declare.
15886         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
15887         parenthesees.  Add support for a 'W' constraint.
15888         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
15889         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
15890         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
15891         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
15892         variables.
15893         (override_options): Initialize them.  Do not set flag_no_function_cse
15894         for TARGET_ID_SHARED_LIBRARY.
15895         (m68k_output_pic_call): Delete.
15896         (m68k_legitimize_call_address): New function.
15897         (print_operand): Remove the %o prefix.  Handle the %p prefix.
15898         (output_call): New function.
15899         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
15900         target address from the GOT if symbolic jumps are not allowed.
15901         * config/m68k/m68k.md (call, general_operand): Do not set
15902         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
15903         Merge separate flag_pic and !flag_pic define_insns into...
15904         (*call, *call_value): ...these new patterns.  Match the address
15905         rather than the containing MEM and require it to be a call_operand.
15906         Use output_call to generate the asm template.
15907         * config/m68k/predicates.md (const_call_operand): New predicate.
15908         (call_operand): Likewise.
15909
15910 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15911
15912         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
15913         (STACK_GROWS_DOWNWARD): Define to 1.
15914         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
15915         comments, emphasizing that these values are only defaults.
15916         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
15917         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
15918
15919 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15920
15921         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
15922
15923 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15924             Richard Sandiford  <richard@codesourcery.com>
15925
15926         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
15927         (FP_REGNO_P): New macros.
15928         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
15929         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
15930         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
15931         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
15932
15933 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15934
15935         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15936         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
15937         to $tmake_file.
15938         * config/m68k/t-floatlib: New file, extracting common code from...
15939         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
15940         * config/m68k/t-uclinux: Here.
15941         * config/m68k/fpgnulib.c: Do not compile extendeed precision
15942         routines on ColdFire targets.
15943
15944 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15945
15946         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15947         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
15948         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
15949         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
15950         explicitly set MOTOROLA to 1.
15951         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
15952
15953 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15954             Nathan Sidwell  <nathan@codesourcery.com>
15955
15956         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
15957         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
15958         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
15959         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
15960         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
15961         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
15962         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
15963         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
15964         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
15965         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15966         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
15967         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
15968         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
15969         (DBX_REGISTER_NUMBER): Delete.
15970         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
15971         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15972         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
15973
15974 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15975
15976         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
15977         * config/flat.h: New file.
15978         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
15979         OBJECT_FORMAT_FLAT.
15980         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
15981         indirect references for -msep-data or -mid-shared-library.
15982         Do not use PC-relative code addresses either.
15983         * config/m68k/m68k.c (override_options): Restrict -fPIC error
15984         to -mpcrel.
15985         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
15986         for shared libraries and crt1.o for executables.  Use crti.o and
15987         crtbegin.o.
15988         (ENDFILE_SPEC): Use crtend.o and crtn.o.
15989         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
15990         Do not add -elf2flt or -shared-lib-id options here.
15991         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
15992         Pass -shared-lib-id if -mid-shared-library, taking the library
15993         identifier from -mshared-library-id if given, otherwise
15994         defaulting to 0.
15995         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
15996         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
15997         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
15998         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
15999         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
16000         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
16001         and crtend.o.
16002         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
16003         jump sequence for ISA A and ISA A+.
16004         (PICJUMP): Likewise.
16005
16006 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16007
16008         * config.gcc (m68k-*-uclinux*): Base the port on the common
16009         and m68k GNU/Linux files rather than on the generic ELF ones.
16010         * config/m68k/uclinux.h (TARGET_VERSION): Override.
16011         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
16012
16013 2007-01-18  Julian Brown  <julian@codesourcery.com>
16014             Richard Sandiford  <richard@codesourcery.com>
16015
16016         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
16017         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
16018         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
16019         before redefining.
16020         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
16021         80 unconditionally.
16022         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
16023
16024 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16025
16026         * doc/install.texi: Document m68k-uclinuxoldabi.
16027         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
16028         * config/m68k/uclinux-oldabi.h: New file, copied from
16029         config/m68k/uclinux.h.
16030
16031 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
16032
16033         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
16034         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
16035         (m32r_compute_frame_size): Use unsigned for regno.
16036         (m32r_reload_lr): Use gen_frame_mem.
16037         (pop): New.
16038         (m32r_output_function_epilogue): Don't output the function epilogue
16039         textually here.
16040         (m32r_expand_epilogue): New.
16041         (direct_return): Return false if the function has the interrupt
16042         attribute.
16043         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
16044         * config/m32r/m32r.md (epilogue): New expander.
16045         (return_lr, return_rte): New insns.
16046         (return): Make it expander.
16047         (return_normal): New expander.
16048
16049 2007-01-18  Josh Conner  <jconner@apple.com>
16050
16051         PR target/30485
16052         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
16053         support for UNLE, UNLT, UNGE, and UNGT.
16054
16055 2007-01-18  Jan Hubicka  <jh@suse.cz>
16056
16057         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
16058         * tree-tailcall (add_virtual_phis): Likewise.
16059         (optimize_tail_call): Return TODOs.
16060         (execute_tail_calls): Return TODOs.
16061         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
16062         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
16063         changed.
16064         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
16065         Cleanup cfg using TODO.
16066         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
16067         * passes.c (execute_function_todo): When cleanup did something, remove
16068         unused locals.
16069         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
16070         (make_edges): Don't cleanup_cfg.
16071
16072 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
16073
16074         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
16075         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
16076         operate on the top of stack.
16077         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
16078         register handling of instructions that output to the second
16079         stack slot.
16080         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
16081         (move_for_stack_reg): Special-case check for dead destination
16082         stack slot for constant load of 1.0 inside UNSPEC_TAN.
16083
16084         * config/i386/i386.md (UNSPEC_TAN): New constant.
16085         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
16086         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
16087         to correctly model move of constant 1.0 to top stack slot.
16088         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
16089         (unnamed peephole2 pattern): Remove corresponding peephole2
16090         pattern that optimizes tan insn and loading of constant 1.0.
16091         (tanxf2): Use fptanxf4_i387.
16092         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
16093         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
16094         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
16095         disable patterns for SSE math.
16096         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
16097         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
16098
16099 2007-01-18  Dirk Mueller  <dmueller@suse.de>
16100             Richard Guenther <rguenther@suse.de>
16101
16102         PR diagnostic/8268
16103         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
16104         * common.opt (Warray-bounds): Add new warning option.
16105         * c-opts.c (c_common_handle_option): Define -Warray-bounds
16106         if -Wall is given.
16107         * Makefile.in: make tree-vrp.o depend on toplev.h
16108         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
16109         is enabled.
16110         (check_array_refs, check_array_bounds, check_array_ref): New.
16111
16112 2007-01-18  Jan Hubicka  <jh@suse.cz>
16113
16114         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
16115         (execute_ssa_ccp): Return flags conditionally.
16116         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
16117         changed.
16118         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
16119
16120 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
16121
16122         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
16123         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
16124
16125         * Makefile.c (GTFILES): Add cfglayout.h.
16126         * gengtype.c (open_base_files): Likewise.
16127         * cfglayout.c (cfg_layout_function_footer,
16128         cfg_layout_function_header) Reindent to make gengtype happy.
16129         * cfglayout.h (cfg_layout_function_footer,
16130         cfg_layout_function_header): Add GTY(()) marker.
16131
16132         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
16133
16134 2007-01-18  Ben Elliston  <bje@au.ibm.com>
16135
16136         * genautomata.c (write_automata): Include xstrerror output in the
16137         error message if writing the DFA description file fails.
16138
16139 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
16140
16141         * config/mips/mips-protos.h (mips_output_external): Make it
16142         return void.
16143         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
16144         * config/mips/mips.c (irix_output_external_libcall): Likewise.
16145         (extern_list): Likewise.
16146         (extern_head): Likewise.
16147         (TARGET_ASM_FILE_END): Likewise.
16148         (mips_file_end): Likewise.
16149         (mips_output_external): Rewritten.
16150
16151 2007-01-18  Ben Elliston  <bje@au.ibm.com>
16152
16153         * genpreds.c (write_insn_preds_c): Only write out the function
16154         body for regclass_for_constraint if we have register constraints.
16155
16156 2007-01-17  Tom Tromey  <tromey@redhat.com>
16157
16158         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
16159         * doc/install.texi (Testing): Use sourceware.org.
16160         (Binaries): Likewise.
16161         (Specific): Likewise.
16162         * doc/contrib.texi (Contributors): Use sourceware.org.
16163
16164 2007-01-17  Anatoly Sokolov <aesok@post.ru>
16165
16166         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
16167         (AVR_ENHANCED): Rename to ...
16168         (AVR_HAVE_MUL): ... new.
16169         (avr_enhanced_p): Rename to ...
16170         (avr_have_mul_p): ... new.
16171         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
16172         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
16173         * config/avr/avr.c (avr_enhanced_p): Rename to ...
16174         (avr_have_mul_p): ... new.
16175         (base_arch_s): Rename 'enhanced' to 'have_mul'.
16176         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
16177         'avr_enhanced_p' and 'enhanced'.
16178         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
16179         AVR_HAVE_MUL instead of AVR_ENHANCED.
16180         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
16181         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
16182         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
16183         instead of AVR_ENHANCED.
16184         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
16185         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
16186         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
16187
16188 2007-01-17  Ian Lance Taylor  <iant@google.com>
16189
16190         * vec.h (VEC_reserve_exact): Define.
16191         (vec_gc_p_reserve_exact): Declare.
16192         (vec_gc_o_reserve_exact): Declare.
16193         (vec_heap_p_reserve_exact): Declare.
16194         (vec_heap_o_reserve_exact): Declare.
16195         (VEC_OP (T,A,reserve_exact)): New static inline function, three
16196         versions.
16197         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
16198         negative parameter.
16199         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
16200         (VEC_OP (T,A,copy)) [all versions]: Likewise.
16201         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
16202         * vec.c (calculate_allocation): Add exact parameter.  Change all
16203         callers.
16204         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
16205         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
16206         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
16207         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
16208         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
16209         (vec_heap_p_reserve_exact): New function.
16210         (vec_heap_o_reserve_exact): New function.
16211
16212 2007-01-17  Jan Hubicka  <jh@suse.cz>
16213
16214         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
16215
16216 2007-01-17  Eric Christopher  <echristo@apple.com>
16217
16218         * config.gcc: Support core2 processor.
16219
16220 2007-01-16  Jan Hubicka  <jh@suse.cz>
16221
16222         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
16223         the names, just unlink the chain so we don't crash on dangling pointers
16224         to dead SSA names.
16225
16226 2007-01-16  Jan Hubicka  <jh@suse.cz>
16227
16228         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
16229         * tree-pass.h: Reorder to make IPA passes appear toegher.
16230         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
16231         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
16232         parameters, do not call early inliner.
16233         * ipa-inline.c: Update comments.  Include tree-flow.h
16234         (cgraph_decide_inlining): Do not compute inlining parameters.
16235         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
16236         be called with function context set up.
16237         (pass_ipa_inline): Remove unreachable functions before pass.
16238         (cgraph_early_inlining): Simplify assuming to be called from the
16239         PM as local pass.
16240         (pass_early_inline): New pass.
16241         (cgraph_gate_ipa_early_inlining): New gate.
16242         (pass_ipa_early_inline): Turn into simple wrapper.
16243         (compute_inline_parameters): New function.
16244         (gate_inline_passes): New gate.
16245         (pass_inline_parameters): New pass.
16246         (apply_inline): Move here from tree-optimize.c
16247         (pass_apply_inline): New pass.
16248         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
16249         transforming.
16250         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
16251         doing them by hand.
16252         (tree_function_versioning): Do not allocate dummy struct function.
16253         * tree-inline.h (optimize_inline_calls): Update prototype.
16254         * tree-optimize.c (execute_fixup_cfg): Export.
16255         (pass_fixup_cfg): Remove
16256         (tree_rest_of_compilation): Do not apply inlines.
16257         * tree-flow.h (execute_fixup_cfg): Declare.
16258         * Makefile.in (gt-passes.c): New.
16259         * passes.c: Include gt-passes.h
16260         (init_optimization_passes): New passes.
16261         (nnodes, order): New static vars.
16262         (do_per_function_toporder): New function.
16263         (execute_one_pass): Dump current pass here.
16264         (execute_ipa_pass_list): Don't dump current pass here.
16265
16266 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
16267
16268         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
16269         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
16270
16271 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
16272
16273         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
16274         (strong_alias): Define.
16275         (__gcc_qmul): Provide non-FMA for soft-float.
16276         (__gcc_qdiv): Same.
16277         (__gcc_qneg): New.
16278         (__gcc_qeq): New.
16279         (__gcc_qle): New.
16280         (__gcc_qge): New.
16281         (__gcc_qunord): New.
16282         (__gcc_stoq): New.
16283         (__gcc_dtoq): New.
16284         (__gcc_qtos): New.
16285         (__gcc_qtod): New.
16286         (__gcc_qtoi): New.
16287         (__gcc_qtou): New.
16288         (__gcc_itoq): New.
16289         (__gcc_utoq): New.
16290         (fmsub): New.
16291         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
16292         soft-float functions.
16293         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
16294         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
16295         about long double soft float.
16296
16297 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
16298             Tehila Meyzels  <tehila@il.ibm.com>
16299
16300         * tree-vectorizer.h (is_pattern_stmt_p): New.
16301         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
16302         formatting (tabs instead of spaces). Cleanup and clarify setting
16303         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
16304         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
16305         (vectorizable_type_demotion): Check that types are integral.
16306         (vectorizable_type_promotion): Likewise.
16307         (vectorizable_store): Fix typo.  Eliminate new-line at end of
16308         comments.
16309
16310 2007-01-16  Jan Hubicka  <jh@suse.cz>
16311
16312         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
16313         cgraph edges too.
16314
16315 2007-01-15  Eric Christopher  <echristo@apple.com>
16316
16317         * ifcvt.c: Include vec.h, vecprim.h.
16318         (check_cond_move_block): New argument regs.
16319         Reorganize. Add registers used to regs.
16320         (cond_move_process_if_block): Use regs set above as
16321         loop bounds.
16322
16323 2007-01-15  Eric Christopher  <echristo@apple.com>
16324
16325         * config/darwin.h: Update copyright.
16326         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
16327         (LINK_COMMAND_SPEC): Add -u.
16328         (LINK_SPEC): Fix umbrella for above.
16329
16330 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
16331
16332         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
16333         glibc CVS.
16334
16335 2007-01-15  Tom Tromey  <tromey@redhat.com>
16336
16337         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
16338         * doc/install.texi (Testing): Don't mention jacks.
16339         (Configuration): Document --enable-java-maintainer-mode.  Move
16340         --with-java-home to libgcj-specific section.  Document
16341         --with-ecj-jar.
16342         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
16343
16344 2007-01-15  Jan Hubicka  <jh@suse.cz>
16345
16346         * tree-ssa-dce.c (DCE_TODOs): New.
16347         (propagate_necessity): Return if something changed.
16348         (eliminate_unnecessary_stmts): Likewise.
16349         (perform_tree_ssa_dce): Return TODO flags when needed.
16350         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
16351
16352 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
16353
16354         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
16355         (fyl2x_extend<mode>xf3_i387): New insn pattern.
16356         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
16357         patterns using X87MODEF12 mode macro.  Extend operand 1
16358         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
16359         (log10<mode>2): Ditto.
16360         (log2<mode>2): Ditto.
16361         (log1p<mode>2): Ditto.
16362         (logb<mode>2): Ditto.
16363         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
16364         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
16365         (*fxtractxf3_i387): Rename from *fxtractxf3.
16366         (fxtract_extend<mode>xf3_i387): New insn pattern.
16367         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
16368         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
16369         and gen_fyl2xxf3_i387().
16370
16371 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
16372
16373         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
16374         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
16375         get_loop_exit_edges.  Changed return type to bool.
16376         * cfgloop.h (fix_loop_placement): Declaration removed.
16377
16378 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
16379
16380         * param.h (MIN_VECT_LOOP_BOUND): New.
16381         * params.def (MIN_VECT_LOOP_BOUND): New.
16382         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
16383         argument - minimum threshold for number of iterations.
16384         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
16385         argument to declaration.
16386         * tree-vect-analyze.c (vect_analyze_operations): Check value of
16387         MIN_VECT_LOOP_BOUND.
16388         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
16389         slpeel_tree_peel_loop_to_edge with additional argument.
16390         (vect_do_peeling_for_alignment): Likewise.
16391         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
16392
16393 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
16394
16395         PR target/30413
16396         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
16397         operands of size 1.
16398
16399 2007-01-14  Jan Hubicka  <jh@suse.cz>
16400
16401         * tree-dfa.c (remove_referenced_var): New function.
16402         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
16403         prune referenced vars list too.
16404         * tree-flow.h (remove_referenced_var): Declare.
16405
16406 2007-01-14  Jan Hubicka  <jh@suse.cz>
16407
16408         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
16409         separately.
16410         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
16411         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
16412         * except.h (verify_eh_throw_table_statements): Kill prototype.
16413         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
16414         into call exrepssions.
16415         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
16416         eh trhow verifier.
16417         * tree-cfg.c: Include pointer-set.h.
16418         (verify_node_sharing): Work on pointer set.
16419         (verify_eh_throw_stmt_node): New.
16420         (verify_stmts): Use pointers sets, verify throw_stmt.
16421
16422 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
16423
16424         * ipa-reference.c (analyze_function): Consider also addresses taken
16425         in phi nodes.
16426
16427 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16428
16429         * c-typeck.c (null_pointer_constant_p): Replace use of
16430         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16431         (build_c_cast): Likewise.
16432
16433 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16434
16435         * tree.h (force_fit_type_double): Remove unused final argument.
16436         * c-common.c (constant_expression_warning): Replace use of
16437         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16438         (convert_and_check): Likewise.
16439         (shorten_compare): Update call to force_fit_type_double.
16440         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
16441         * convert.c (convert_to_pointer): Update call to
16442         force_fit_type_double.
16443         * fold-const.c (force_fit_type_double): Remove overflowed_const
16444         argument.
16445         (int_const_binop, fold_convert_const_int_from_int,
16446         fold_convert_const_int_from_real, fold_div_compare,
16447         fold_sign_changed_comparison, fold_unary, fold_negate_const,
16448         fold_abs_const, fold_not_const): Remove the final argument from
16449         calls to force_fit_type_double.
16450
16451 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16452
16453         * configure.ac: Set insn to "nop" for spu-*-* also.
16454         * configure: Regenerate.
16455
16456 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
16457
16458         * builtins.def : Add BUILT_IN_FREE.
16459
16460 2007-01-12  Jan Hubicka  <jh@suse.cz>
16461
16462         PR tree-optimization/30443
16463         * tree-inline.c (tree_function_versioning): Do not optimize when
16464         cloning for inlining.
16465
16466 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
16467
16468         * doc/loop.texi: Document recording of loop exits.
16469         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
16470         (update_single_exits_after_duplication,
16471         update_single_exit_for_duplicated_loop,
16472         update_single_exit_for_duplicated_loops): Removed.
16473         (duplicate_loop_to_header_edge): Do not call
16474         update_single_exits_after_duplication and
16475         update_single_exit_for_duplicated_loops.
16476         (loop_version): Do not update single_exit information.
16477         (fix_loop_structure): Use record_loop_exits instead of
16478         mark_single_exit_loops.
16479         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
16480         the lists of loop exits.
16481         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
16482         split_edge, merge_blocks): Update the lists of loop exits.
16483         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
16484         loop_optimizer_init.
16485         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
16486         of mark_single_exit_loops.
16487         (loop_optimizer_finalize): Call release_recorded_exits.
16488         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
16489         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
16490         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
16491         update single exit information.
16492         * lambda-code.c (perfect_nestify): Ditto.
16493         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
16494         (mark_single_exit_loops): Removed.
16495         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
16496         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
16497         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
16498         functions.
16499         (get_loop_exit_edges, single_exit): Use recorded exit lists.
16500         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
16501         (verify_loop_structure): Verify consistency of the exit lists.
16502         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
16503         (set_single_exit): Removed.
16504         * cfgloop.h (struct loop_exit): New function.
16505         (struct loop): single_exit_ field replaced by exits field.
16506         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
16507         (struct loops): Added exits hash.
16508         (mark_single_exit_loops, set_single_exit): Declaration removed.
16509         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
16510
16511 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16512
16513         * doc/invoke.texi: Avoid use of @headitem.
16514
16515 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16516
16517         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
16518
16519 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16520
16521         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
16522         list of targets.
16523
16524 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16525             Richard Sandiford  <richard@codesourcery.com>
16526
16527         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
16528         * config/m68k/m68k.opt: Resort options.
16529         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
16530
16531 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16532             Richard Sandiford  <richard@codesourcery.com>
16533
16534         * doc/invoke.texi: Document the macros that are defined by
16535         m68k's -mtune and -mhard-float options.
16536         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
16537         (m68k_cpp_cpu_family): Likewise.
16538         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
16539         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
16540         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
16541         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
16542         (m68k_cpp_cpu_family): Likewise.
16543
16544 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16545
16546         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
16547         macros besides mc68000 as tuning macros.  Use a switch statement
16548         to set them and mcpu32.
16549
16550 2007-01-12  Julian Brown  <julian@codesourcery.com>
16551
16552         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
16553         (TARGET_68040_ONLY): Rename to...
16554         (TARGET_68040): ...this.
16555         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
16556         * config/m68k/m68k.md: Likewise.
16557
16558 2007-01-12  Julian Brown  <julian@codesourcery.com>
16559             Nathan Sidwell  <nathan@codesourcery.com>
16560             Richard Sandiford  <richard@codesourcery.com>
16561
16562         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
16563         the -mcpu= argument associated with the --with-cpu setting.
16564         Define M68K_DEFAULT_TUNE to the default -mtune= option,
16565         if different from the one implied by the -mcpu setting.
16566         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
16567         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
16568         * doc/invoke.texi: Mention ColdFire in the introduction to the
16569         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
16570         -mno-div and -mhard-float options.  Make -m68881 a synonym for
16571         -mhard-float.  Document the previously-undocumented -m5206e,
16572         -m528x, -m5307 and -m5407 options.  Tweak the existing option
16573         documentation for consistency.
16574         * doc/install.texi: Mention new --with-cpu arguments.
16575         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
16576         default CPU if neither -mcpu nor -march are specified.
16577         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
16578         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
16579         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
16580         using m68k_tune to decide between families that implement the
16581         same ISA.  Use m68k_tune to set __mcfv4e__.
16582         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
16583         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
16584         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
16585         (FL_ISA_C, FL_ISA_MMU): New macros.
16586         (MASK_COLDFIRE): Delete.
16587         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
16588         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
16589         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
16590         (TARGET_HARD_FLOAT): Do not define here.
16591         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
16592         (TUNE_68000): New macro.
16593         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
16594         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
16595         (TUNE_CFV2): Redefine in terms of m68k_tune.
16596         (uarch_type, target_device, fpu_type): New enums.
16597         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
16598         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
16599         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
16600         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
16601         (FL_FOR_isa_c): New macros.
16602         (m68k_isa): New enum.
16603         (m68k_target_selection): New structure.
16604         (all_devices, all_isas, all_microarchs): New tables.
16605         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
16606         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
16607         (MASK_ALL_CPU_BITS): Delete.
16608         (m68k_find_selection): New function.
16609         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
16610         Map the legacy target options to a combination of the new ones.
16611         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
16612         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
16613         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
16614         settings.
16615         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
16616         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
16617         properties.
16618         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
16619         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
16620         * config/m68k/m68k-devices.def: New file.
16621
16622 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16623             Nathan Sidwell  <nathan@codesourcery.com>
16624
16625         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
16626         (SUBTARGET_EXTRA_SPECS): New macros.
16627         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
16628         use %(asm_cpu_spec) instead.
16629         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
16630         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
16631         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
16632         (EXTRA_SPECS): Rename to...
16633         (SUBTARGET_EXTRA_SPECS): ...this.
16634
16635 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16636             Richard Sandiford  <richard@codesourcery.com>
16637             Julian Brown  <julian@codesourcery.com>
16638
16639         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16640         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
16641         to the configuration's default CPU.
16642         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
16643         Remove default masks.
16644         (m680[012]0-*-*): Set the default with_cpu to the first part of
16645         the target name.
16646         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
16647         (m68k*-*-linux): Extend the --with-cpu handling to...
16648         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
16649         and m68010.  Don't set target_cpu_default2.
16650         * doc/install.texi: Document --with-cpu for m68k.
16651         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
16652         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
16653         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
16654         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
16655         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
16656         (ASM_SPEC): Remove use of %(asm_cpu_default).
16657         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
16658         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
16659         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
16660         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
16661         __HAVE_FPU__ if TARGET_HARD_FLOAT.
16662         (TARGET_DEFAULT): Delete.
16663         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
16664         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
16665         (CPP_CPU_SPEC): Delete.
16666         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
16667         the appropriate string.
16668         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
16669         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
16670         (ASM_SPEC): Don't use %(asm_default_spec).
16671         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
16672         TARGET_DEFAULT and add MASK_68881.
16673         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
16674
16675 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16676
16677         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
16678         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
16679         MASK_68010 alongside MASK_68020.
16680         * doc/invoke.texi: Document -m68010.
16681         * config/m68k/m68k.opt (m68010): New.
16682         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
16683         if TUNE_68010.
16684         (TUNE_68010): New macro.
16685         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
16686         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
16687         (M68K_CPU_m68332): Add MASK_68010.
16688         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
16689         fallback definition.
16690         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
16691         defines.
16692         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
16693         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
16694         to all entries that use MASK_68020.
16695         (output_move_simode_const, output_move_himode, output_move_qimode)
16696         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
16697         instead of TARGET_68020 to select clr behavior.  Remove comment
16698         about there being no TARGET_68010.
16699         * config/m68k/m68k.md: Likewise throughout.
16700
16701 2007-01-12  Julian Brown  <julian@codesourcery.com>
16702
16703         * config/m68k/m68k.h (TARGET_ISAB): New macro.
16704         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
16705         * config/m68k/m68k.md: Likewise.
16706
16707 2007-01-12  Julian Brown  <julian@codesourcery.com>
16708
16709         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
16710         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
16711
16712 2007-01-12  Julian Brown  <julian@codesourcery.com>
16713
16714         * config/m68k/m68k.h (TUNE_68040_60): New macro.
16715         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
16716         * config/m68k/m68k.md: Likewise.
16717
16718 2007-01-12  Julian Brown  <julian@codesourcery.com>
16719             Richard Sandiford  <richard@codesourcery.com>
16720
16721         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
16722         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
16723         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
16724         TARGET_CPU32.
16725         (TARGET_CPU32): Rename to...
16726         (TUNE_CPU32): ...this.
16727         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
16728         (TUNE_CFV2): New macros.
16729         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
16730         remove conditions that are implied by TARGET_68020.
16731         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
16732         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
16733         (m68k_output_function_epilogue): Likewise.
16734         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
16735         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
16736         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
16737         non-68000 timings.  Refactor multiplication and division costs.
16738         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
16739         TUNE_CPU32 instead of TARGET_CPU32.
16740         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
16741         and TUNE_68060 instead of TARGET_68060.
16742         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
16743         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
16744         TARGET_CPU32.
16745         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
16746         && !TARGET_COLDFIRE" to choose between moveq and clr.
16747         Likewise in the unnamed movsf pattern.
16748         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
16749         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
16750         ashiftrt pattern.
16751
16752 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16753
16754         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
16755         of tabbing before backslashes.
16756
16757 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16758
16759         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
16760         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
16761         (ASM_OUTPUT_INTERNAL_LABEL): Define.
16762
16763 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16764
16765         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
16766         find_interesting_uses_cond.
16767         (find_interesting_uses_cond): Use extract_cond_operands.
16768         (rewrite_use_compare): Use extract_cond_operands and
16769         force_gimple_operand_bsi.  Do not call update_stmt.
16770         (determine_use_iv_cost_condition): Use extract_cond_operands.
16771         Return cheaper of using original bound and changing the exit bound.
16772
16773 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16774
16775         PR tree-optimization/29516
16776         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
16777         most_expensive_mult_to_index, addr_to_parts,
16778         create_mem_ref, maybe_fold_tmr): Make the type of
16779         fields of TARGET_MEM_REF sizetype.
16780         (move_fixed_address_to_symbol, move_pointer_to_base):
16781         New functions.
16782         * tree.def (TARGET_MEM_REF): Add comment on types of
16783         the operands.
16784
16785 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
16786
16787         * c-common.c (vector_types_convertible_p): Treat opaque types as
16788         always convertible if they have the same size, but not otherwise.
16789
16790 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
16791
16792         * ifcvt.c (struct noce_if_info): Add comments to the fields.
16793         Remove the b_unconditional field.
16794         (noce_try_sign_mask): Do not look at b_unconditional.
16795         (noce_process_if_block): Do not use merge_if_blocks.  Update
16796         the CFG here.  Do not set b_unconditional.
16797         (cond_move_process_if_block): Likewise.
16798         (find_cond_trap): Likewise.
16799         (check_cond_move_block): Require simple jump insns at the end
16800         of the basic block.
16801
16802 2007-01-11  Jan Hubicka  <jh@suse.cz>
16803
16804         PR tree-optimization/1046
16805         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
16806         when alias info is not ready.
16807         (pass_tail_recursion): Do not require aliasing.
16808         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
16809         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
16810         * tree-ssa-copy.c (pass_copy_prop): Likewise.
16811         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
16812         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
16813         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
16814         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
16815         before inlining.
16816         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
16817         When aliasing is not build, mark statement as volatile.
16818
16819 2007-01-11  Tom Tromey  <tromey@redhat.com>
16820
16821         PR preprocessor/15185, PR preprocessor/20989:
16822         * doc/cppopts.texi <-MT>: Update description of algorithm for
16823         computing default target.
16824         <-M, -MD>: Reword "basename" text.
16825
16826 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16827
16828         * builtins.c (expand_builtin_pow, expand_builtin_powi,
16829         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
16830         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
16831         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
16832         fold_builtin_bswap, real_constp, fold_builtin_pow,
16833         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
16834         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
16835         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16836         * convert.c (convert_to_pointer): Likewise.
16837         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16838         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
16839         const_binop, fold_convert_const_int_from_int,
16840         fold_convert_const_int_from_real,
16841         fold_convert_const_real_from_real, sign_bit_p,
16842         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
16843         fold_sign_changed_comparison, fold_unary, fold_comparison,
16844         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
16845         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
16846         * print-tree.c (print_node_brief, print_node): Likewise.
16847         * stor-layout.c (place_field, layout_type): Likewise.
16848         * tree-chrec.c (keep_cast): Likewise.
16849         * tree.c (build_vector, build_real, build_real_from_int_cst,
16850         build_complex): Likewise.
16851
16852 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16853
16854         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
16855         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
16856
16857 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
16858
16859         * configure.ac (strict1_warn): Rename to strict_warn.
16860         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
16861         cc_set_by_configure, quoted_cc_set_by_configure,
16862         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
16863         all_boot_languages, all_stagestuff): Remove.
16864         (target_list): Remove bootstrap targets.
16865         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
16866         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
16867         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
16868         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
16869         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
16870         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
16871         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
16872         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
16873         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
16874         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
16875         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
16876         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
16877         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
16878         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
16879         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
16880         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
16881         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
16882         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
16883         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
16884         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
16885         (mostlyclean): Adjust.
16886         (clean, distclean): Don't mention bootstrap stuff.
16887         * configure: Regenerate.
16888         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
16889         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
16890         treelang/config-lang.in (stagestuff): Remove.
16891         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
16892         stageprofile, stagefeedback, stagestuff): Remove mention.
16893
16894 2007-01-11  Nick Clifton  <nickc@redhat.com>
16895
16896         * config/mcore/predicates.md (mcore_general_movesrc_operand):
16897         Accept CONSTs.
16898         (mcore_general_movdst_operand): Do not accept CONST_INTs.
16899         (mcore_arith_K_S_operand): Run the test for the S constraint not
16900         the test for the M constraint.
16901         (mcore_addsub_operand): Do not accept integer values that are
16902         larger than 32 bits.
16903         * config/mcore/mcore.md: Remove unused constraints from split.
16904         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
16905         (addsi3): Likewise.
16906         (allocate_stack): Likewise.
16907         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
16908         operands to 32 bits.
16909         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
16910         INTVAL.
16911         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
16912         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
16913         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
16914         mcore_output_bclri, mcore_output_andn, output_inline_const,
16915         mcore_output_move, mcore_output_movedouble): Likewise.
16916         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
16917         (output_inline_const): Likewise.
16918         (output_inline_const): Fix format strings used in sprintf
16919         statements.
16920         * config/mcore/mcore-protos.h: Update prototypes for changed
16921         functions in mcore.c.
16922         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
16923         HOST_WIDE_INT and not int.
16924         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
16925         CONST_OK_FOR_N): Likewise.
16926         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
16927         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
16928         an INTVAL.
16929
16930 2007-01-10  Jan Hubicka  <jh@suse.cz>
16931
16932         * tree-vrp.c (remove_range_assertions): Release defs.
16933         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
16934         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
16935
16936 2007-01-10  Paul Brook  <paul@codesourcery.com>
16937
16938         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
16939         * config/arm/arm.md (mulsi3subsi): New insn.
16940
16941 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
16942
16943         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
16944         (tree_transform_and_unroll_loop): New.
16945         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
16946         Declare.
16947
16948 2007-01-10  Robert Kennedy <jimbob@google.com>
16949
16950         * fold-const.c (fold_comparison): Fold comparisons like (x *
16951         1000 < 0) to (x < 0).
16952
16953 2007-01-10  Ian Lance Taylor  <iant@google.com>
16954
16955         * tree-pretty-print.c (dump_generic_node): Print parentheses when
16956         operands have the same priority.
16957
16958 2007-01-10  Tom Tromey  <tromey@redhat.com>
16959
16960         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
16961         (fold_binary): Likewise.
16962         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
16963         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
16964         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
16965         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
16966         * langhooks.h (struct lang_hooks): Removed field
16967         'can_use_bit_fields_p'.
16968
16969 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
16970
16971         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
16972
16973 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
16974
16975         * function.c (get_last_funcdef_no): New function.
16976         * function.h (get_last_funcdef_no): Declare.
16977         * tree-inline.c (initialize_cfun): Add initialization.
16978         (tree_function_versioning): Cleanup.
16979
16980 2007-01-10  Jan Hubicka  <jh@suse.cz>
16981
16982         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
16983         PHIs.
16984
16985 2007-01-10  Sa Liu  <saliu@de.ibm.com>
16986             Ben Elliston  <bje@au.ibm.com>
16987
16988         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
16989         for SAVE_NONLOCAL and Pmode for any other save level.
16990         * spu-protos.h (spu_restore_stack_block): Declare.
16991         * spu.md (save_stack_block): Remove.
16992         (restore_stack_block): Call spu_restore_stack_block.
16993         * spu.c (spu_restore_stack_block): New function.
16994         (spu_expand_epilogue): Remove old comment.
16995
16996 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
16997
16998         PR tree-optimization/30322
16999         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
17000         (cand_value_at): Return the value as aff_tree.
17001         (may_eliminate_iv): Convert the bound from aff_tree to tree.
17002         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
17003         aff_combination_mult): New functions.
17004         (aff_combination_add): Use aff_combination_add_cst.
17005         (aff_combination_convert): Allow conversions to a wider type.
17006         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
17007         * tree-affine.h (aff_combination_mult): Declare.
17008
17009 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
17010
17011         * doc/tm.texi: Update documentation to reflect reality of exec
17012         and start file search behaviours. Update copyright year.
17013         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
17014         header file directories.
17015
17016 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
17017
17018         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
17019         (*cosxf2): Rename to cosxf2_i387.
17020         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
17021         using X87MODEF12 mode macro. Rename patterns to
17022         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
17023         for SSE math.
17024         (*cosdf2, *cossf2): Ditto.
17025         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
17026         to match extended input operands.
17027         (sincos<mode>3): New expander.
17028         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
17029         insn patterns and corresponding splitters.
17030
17031 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
17032
17033         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
17034         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
17035
17036 2007-01-09  Nicolas Pitre  <nico@cam.org>
17037
17038         PR target/30173
17039         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
17040
17041 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
17042
17043         * target.h (struct gcc_target): New field library_rtti_comdat.
17044         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
17045         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
17046         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
17047         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
17048
17049 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
17050
17051         * doc/invoke.texi (Optimize Options): Correct description of -O0.
17052
17053 2007-01-08  Richard Guenther  <rguenther@suse.de>
17054
17055         * tree.h (force_fit_type_double): Export.
17056         (force_fit_type): Remove.
17057         * fold-const.c (force_fit_type_double): New function.
17058         (force_fit_type): Remove.
17059         (int_const_binop): Use it.
17060         (fold_convert_const_int_from_int): Likewise.
17061         (fold_convert_const_int_from_real): Likewise.
17062         (fold_div_compare): Likewise.
17063         (fold_sign_changed_comparison): Likewise.
17064         (fold_unary): Likewise.
17065         (fold_negate_const): Likewise.
17066         (fold_abs_const): Likewise.
17067         (fold_not_const): Likewise.
17068         * c-common.c (shorten_compare): Use force_fit_type_double.
17069         * convert.c (convert_to_pointer): Likewise.
17070
17071 2007-01-08  Richard Guenther  <rguenther@suse.de>
17072
17073         * tree.h (build_int_cst_wide_type): Export.
17074         * tree.c (build_int_cst_wide_type): New function.
17075         (build_int_cst_wide): Fix comment.
17076         * builtins.c (fold_builtin_object_size): Use build_int_cst
17077         to build -1 or 0 of the correct type.  Use fit_double_type
17078         to check for overflow.
17079         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
17080         to build the mask.
17081         (decode_field_reference): Likewise.
17082         (all_ones_mask_p): Likewise.
17083         (native_interpret_int): Use build_int_cst_wide_type.
17084         (fold_binary): Use build_int_cst_type to build an all-ones
17085         value.
17086         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
17087
17088 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
17089
17090         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
17091
17092 2007-01-09  Ben Elliston  <bje@au.ibm.com>
17093
17094         * genautomata.c (STATS_OPTION): New option.
17095         (stats_flag): New flag.
17096         (gen_automata_option): Handle it.
17097         (initiate_automaton_gen): Ditto.
17098         (write_automata): Output statistics only if stats_flag is
17099         set. Likewise, output time statistics only if time_flag is set.
17100         * doc/md.texi (Processor pipeline description): Document new flag.
17101
17102 2007-01-08  Richard Guenther  <rguenther@suse.de>
17103
17104         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
17105         * tree.c (build_int_cst_type): Likewise.
17106         (size_in_bytes): Don't call force_fit_type on the result.
17107         (int_fits_type_p): Use fit_double_type.
17108         * fold-const.c (fit_double_type): New function.
17109         (force_fit_type): Use it.
17110         * tree.h (fit_double_type): Export.
17111
17112 2007-01-08  Jan Hubicka  <jh@suse.cz>
17113
17114         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
17115         * ipa.c (function_and_variable_visibility): Fix return type.
17116
17117 2007-01-08  Richard Guenther  <rguenther@suse.de>
17118
17119         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
17120         of offset to build the index.
17121         * tree-pretty-print.c (dump_generic_node): Don't build negated
17122         const just for printing.
17123         * c-pretty-print.c (pp_c_integer_constant): Likewise.
17124         * builtins.c (fold_builtin_int_roundingfn): Check if result
17125         fits the type by using force_fit_type and comparing the result.
17126         * predict.c (predict_loops): Use compare_tree_int for comparison.
17127         * tree.c (build_int_cst): Fall back to integer_type_node for
17128         NULL_TREE type.
17129         (build_int_cst_wide): Assert type is non-null.
17130
17131 2007-01-08  Roberto Costa  <roberto.costa@st.com>
17132
17133         * tree-vrp.c (extract_range_from_cond_expr): New.
17134         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
17135         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
17136         as expressions.
17137         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
17138         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
17139         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
17140         used as expressions.
17141         * tree-object-size.c (cond_expr_object_size): New.
17142         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
17143
17144 2007-01-08  Jan Hubicka  <jh@suse.cz>
17145
17146         * tree-ssa-forwprop.c (forward_propagate_into_cond,
17147         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
17148         statement.
17149
17150 2007-01-08  Richard Guenther  <rguenther@suse.de>
17151
17152         PR tree-optimization/23603
17153         * tree-vrp.c (set_value_range_to_truthvalue): New function.
17154         (extract_range_from_binary): Fall back to truthvalue instead of
17155         varying for TRUTH_*_EXPR.
17156         (extract_range_from_comparison): Fall back to truthvalue instead of
17157         varying.
17158         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
17159         if all visited PHI values were constant.
17160
17161 2007-01-08  Jan Hubicka  <jh@suse.cz>
17162
17163         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
17164         (cgraph_analyze_function): break out from ...
17165         (cgraph_finalize_compilation_unit): ... here.
17166         (cgraph_expand_function): Remove forgoten commented out line.
17167         (cgraph_optimize): Analyze functions.
17168
17169 2007-01-08  Jan Hubicka  <jh@suse.cz>
17170
17171         * tree-pas.h (TODO_remove_function): New flag.
17172         (TODO_update*): Renumber.
17173         (pass_ipa_increase_alignment,
17174         pass_ipa_function_and_variable_visibility): New passes.
17175         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
17176         (cgraph_function_and_variable_visibility): Move to ipa.c
17177         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
17178         cgraph_increase_alignment.
17179         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
17180         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
17181         calling tree-inline.
17182         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
17183         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
17184         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
17185         (gate_increase_alignment): New function.
17186         (pass_ipa_increase_alignment): New pass.
17187         * ipa.c: Inline tree-pass.h and timevar.h
17188         (function_and_variable_visibility): Move here from cgraphunit.c
17189         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
17190         * passes.c (init_optimization_passes): Add the two new passes.
17191         (execute_todo): Handle cgraph_remove_functions.
17192
17193 2007-01-08  Nick Clifton  <nickc@redhat.com>
17194
17195         * config/frv/predicates.md (reg_or_0_operand): Accept
17196         CONST_DOUBLEs.
17197
17198 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
17199
17200         * config/bfin/rtems.h, config/bfin/t-rtems: New.
17201         * config.gcc: Add bfin*-rtems*.
17202
17203 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
17204
17205         * c.opt: Add -flax-vector-conversions.
17206         * c-typeck.c (convert_for_assignment): Pass flag to
17207         vector_types_convertible_p to allow emission of note.
17208         (digest_init): Likewise.
17209         * c-opts.c: Handle -flax-vector-conversions.
17210         * c-common.c (flag_lax_vector_conversions): New.
17211         (vector_types_convertible_p): Unless -flax-vector conversions
17212         has been passed, disallow conversions between vectors with
17213         differing numbers of subparts and/or element types.  If such
17214         a conversion is disallowed, possibly emit a note on the first
17215         occasion only to inform the user of -flax-vector-conversions.
17216         The new last argument specifies this.
17217         * c-common.h (flag_lax_vector_conversions): New.
17218         (vector_types_convertible_p): Add extra argument.
17219         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
17220         char_type_node for V*QI type vectors.
17221         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
17222         Update to satisfy new typechecking rules.
17223         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
17224         C and C++ variants.
17225         * doc/invoke.texi (C Dialect Options): Document
17226         -flax-vector-conversions.
17227
17228 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
17229
17230         PR tree-optimization/29877
17231         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
17232         a register variable on the RHS to not be replaceable.
17233
17234 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
17235         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
17236         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
17237         const_simm15, const_pow2, const_npow2): Added.
17238         * config/score/misc.md (insv, extv, extzv, movmemsi,
17239         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
17240         * config/score/score.c (score_address_cost, score_select_cc_mode):
17241         Added.
17242         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
17243         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
17244         Update score_print_operand.
17245         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
17246         Adjust register allocate order and update some macro define.
17247         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
17248         mdx_block_move_straight, mdx_block_move_loop_head,
17249         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
17250         mdx_block_move): Added.
17251         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
17252         mdp_limm): Updated and fix some bug and typo.
17253         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
17254         (movsf, movdf, doloop_end): Added.
17255
17256 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
17257
17258         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
17259         config/arm/thumb2.md: Fix comment typos.
17260         * doc/extend.texi: Fix a typo.
17261
17262 2007-01-07  Eric Christopher  <echristo@apple.com>
17263
17264         * configure.ac: Check for __stack_chk_fail for darwin.
17265         * configure: Regenerate.
17266
17267 2007-01-07  Richard Guenther  <rguenther@suse.de>
17268
17269         * tree-vrp.c (extract_range_from_assert): CSE calls to
17270         compare_values where possible.
17271         (extract_range_from_unary_expr): Likewise.
17272
17273 2007-01-07  Anatoly Sokolov <aesok@post.ru>
17274
17275         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
17276         * config/avr/avr.c (call_insn_operand): Delete function.
17277         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
17278         instead of register number. Use predicates.
17279         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
17280         call_insn_operand): Add.
17281
17282 2007-01-06  Jan Hubicka  <jh@suse.cz>
17283
17284         * tree-pass.h (pass_build_cgraph_edges): Declare.
17285         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
17286         (visited_nodes): Remove.
17287         (cgraph_create_edges): Move to cgraphbuild.c; rename to
17288         build_cgrpah_edges; make visited_nodes local.
17289         (cgraph_process_new_functions): DO not call initialize_inline_failed.
17290         (record_references_in_initializer): Move to cgraphbuild.c
17291         (initialize_inline_failed, rebuild_cgraph_edges,
17292         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
17293         (verify_cgraph_node): Make visited_nodes local.
17294         (cgraph_analyze_function): Do not call cgraph_create_edges and
17295         initialize_inline_failed.
17296         (cgraph_expand_function): Do not call cgraph_lower_function;
17297         assert that function is already lowered.
17298         * Makefile.in (cgraphbuild.o): New.
17299         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
17300         at the end of lowering passes.
17301
17302 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
17303
17304         * ifcvt.c (cond_move_convert_if_block): New function, code
17305         factored out from...
17306         (cond_move_process_if_block): ...here.  Call the new function
17307         on the THEN and ELSE blocks.
17308         (merge_if_block): Do not copy global_live_at_end, merge_blocks
17309         already takes care of this.
17310
17311 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17312
17313         PR c/19978
17314         * tree.h (TREE_OVERFLOW_P): New.
17315         * c-typeck.c (parser_build_unary_op): Warn only if result
17316         overflowed and operands did not.
17317         (parser_build_binary_op): Likewise.
17318         (convert_for_assignment): Remove redundant overflow_warning.
17319         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
17320
17321 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17322
17323         * c-typeck.c (store_init_value): Split over two lines to follow
17324         the GNU coding style.
17325
17326 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
17327
17328         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
17329         __GXX_EXPERIMENTAL_CXX0X__.
17330         * doc/cpp.texi: Same.
17331
17332 2007-01-05  Richard Guenther  <rguenther@suse.de>
17333
17334         PR middle-end/27826
17335         * tree.c (get_narrower): Do not construct COMPONENT_REFs
17336         with mismatched types.  Instead explicitly build a
17337         conversion NOP_EXPR.
17338
17339 2007-01-05  Ian Lance Taylor  <iant@google.com>
17340
17341         * c-common.c (decl_with_nonnull_addr_p): New function.
17342         (c_common_truthvalue_conversion): Call it.
17343         * c-typeck.c (build_binary_op): Likewise.
17344         * c-common.h (decl_with_nonnull_addr_p): Declare.
17345
17346 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
17347
17348         PR c/30360
17349         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
17350         denom against 0.0.
17351
17352 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
17353
17354         * doc/install.texi (Final install): Document the fact that
17355         the GNAT runtime should not be stripped.
17356
17357 2007-01-04  Jan Hubicka  <jh@suse.cz>
17358
17359         * tree-inline.c (fold_marked_statements): Update operand caches
17360         and EH after folding
17361
17362 2007-01-04  Ian Lance Taylor  <iant@google.com>
17363
17364         * c-common.c (check_function_nonnull): Whitespace fix.
17365
17366 2007-01-04  Jan Hubicka  <jh@suse.cz>
17367
17368         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
17369         comitted older version of patch.
17370         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
17371         function, celanup cfg and collect garbage.
17372
17373 2007-01-04  Mike Stump  <mrs@apple.com>
17374
17375         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
17376         (clean): Likewise.
17377
17378 2007-01-04  Eric Christopher  <echristo@apple.com>
17379
17380         * libgcc2.c (__bswapsi2): Use SItype.
17381         (__bswapdi2): Use DItype.
17382         * libgcc2.h: Update for above.
17383
17384 2007-01-04  Paul Brook  <paul@codesourcery.com>
17385
17386         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
17387         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
17388         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
17389         umulsidi3, umulsidi3adddi, smulsi3_highpart,
17390         umulsi3_highpart): Make conditional on !arm_arch6.
17391         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
17392         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
17393         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
17394         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
17395         umulsi3_highpart_v6): New insns.
17396
17397 2007-01-04  Roger Sayle  <roger@eyesopen.com>
17398
17399         * fold-const.c (fold_convert): When casting an expression to void,
17400         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
17401         have a type.  Instead of attempting to build a NOP_EXPR, return
17402         these "special" trees directly.
17403
17404 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
17405
17406         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
17407         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
17408         rs6000_cost->fp not 0 as adjustment for outer NEG.
17409
17410 2007-01-04  Jan Hubicka  <jh@suse.cz>
17411
17412         * cgraph.c (cgraph_release_function_body): New function.
17413         (cgraph_remove_node): Use it.
17414         * cgraph.h (cgraph_release_function_body): Declare.
17415         * cgraphunit.c (cgraph_expand_function): Use it.
17416         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
17417         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
17418         is initialized and while compilation of other function is running.
17419         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
17420         statement CFG annotations from here to ...
17421         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
17422
17423 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
17424
17425         * cfgloop.h (enum li_flags): Make the constants powers of two.
17426
17427 2007-01-04  Jan Hubicka  <jh@suse.cz>
17428
17429         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
17430         set.
17431         (fold_marked_statements): New function.
17432         (optimize_inline_calls, tree_function_versioning): Fold new statements.
17433         * tree-inline.h (copy_body_data): Add statements_to_fold.
17434
17435 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
17436
17437         * config.gcc: Mention libgcc/config.host.
17438         * Makefile.in: Update comments mentioning libgcc.
17439         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
17440         (all.cross, start.encap, rest.encap, rest.cross): Update
17441         dependencies for libgcc move.
17442         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
17443         (clean-target, clean-target-libgcc): Delete.
17444         (srcdirify, GCC_EXTRA_PARTS): New macros.
17445         (libgcc-support, libgcc.mvars): New rules.
17446         (distclean): Remove mention of mklibgcc.
17447         (install): Don't reference INSTALL_LIBGCC.
17448         (install-common): Don't reference EXTRA_PARTS.
17449         (install-libgcc, install-multilib): Delete rules.
17450         * mklibgcc.in: Delete file.
17451         * doc/configfiles.texi: Don't mention mklibgcc.
17452
17453         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
17454         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
17455         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
17456         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
17457         (mklibgcc, ldblspecs): Likewise.
17458
17459         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
17460         (posixpre.def): Use $(T).
17461         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
17462         (SHLIB_SRC, SHLIB_INSTALL): Delete.
17463         (SHLIB_LINK): Make dummy.
17464         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
17465
17466         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
17467
17468         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
17469         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
17470         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
17471         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
17472
17473         * configure.ac (all_outputs): Remove mklibgcc.
17474         * configure: Regenerated.
17475
17476 2007-01-03  Josh Conner  <jconner@apple.com>
17477
17478         PR middle-end/29683
17479         * calls.c (compute_argument_addresses): Set stack and stack_slot
17480         for partial args, too.
17481         (store_one_arg): Use locate.size.constant for the size when
17482         generating a save_area.
17483
17484 2007-01-03  Robert Kennedy <jimbob@google.com>
17485
17486         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
17487         whose definitions are deleted due to basic block merging.
17488
17489 2007-01-03  Paul Brook  <paul@codesourcery.com>
17490
17491         PR target/16634
17492         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
17493         functions.
17494         (use_return_insn): Return 0 for Thumb interrupt functions.
17495         (print_multi_reg): Add rfe argument for IRQ returns.
17496         (arm_output_epilogue): Pop interrupt return address directly into PC.
17497         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
17498
17499 2007-01-03  Paul Brook  <paul@codesourcery.com>
17500
17501         Merge from sourcerygxx-4_1.
17502         * config/arm/thumb2.md: New file.
17503         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
17504         Thumb-2.
17505         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
17506         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17507         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
17508         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
17509         tables.
17510         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17511         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
17512         comptibility.
17513         * config/arm/ieee754-sf.S: Ditto.
17514         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
17515         (thumb1_base_register_rtx_p): ... to this.
17516         (thumb_index_register_rtx_p): Rename...
17517         (thumb1_index_register_rtx_p): ... to this.
17518         (thumb_output_function_prologue): Rename...
17519         (thumb1_output_function_prologue): ... to this.
17520         (thumb_legitimate_address_p): Rename...
17521         (thumb1_legitimate_address_p): ... to this.
17522         (thumb_rtx_costs): Rename...
17523         (thumb1_rtx_costs): ... to this.
17524         (thumb_compute_save_reg_mask): Rename...
17525         (thumb1_compute_save_reg_mask): ... to this.
17526         (thumb_final_prescan_insn): Rename...
17527         (thumb1_final_prescan_insn): ... to this.
17528         (thumb_expand_epilogue): Rename...
17529         (thumb1_expand_epilogue): ... to this.
17530         (arm_unwind_emit_stm): Rename...
17531         (arm_unwind_emit_sequence): ... to this.
17532         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
17533         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
17534         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
17535         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
17536         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
17537         thumb2_output_casesi): New functions.
17538         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
17539         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
17540         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
17541         THUMB2_WORK_REGS): Define.
17542         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
17543         arm_condexec_mask, arm_condexec_masklen)): New variables.
17544         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
17545         (arm_override_options): Check new CPU capabilities.
17546         Set new architecture flag variables.
17547         (arm_isr_value): Handle v7m interrupt functions.
17548         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
17549         Thumb-2.
17550         (const_ok_for_arm): Handle Thumb-2 constants.
17551         (arm_gen_constant): Ditto.  Use movw when available.
17552         (arm_function_ok_for_sibcall): Return false for v7m interrupt
17553         functions.
17554         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
17555         (thumb_find_work_register, arm_load_pic_register,
17556         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
17557         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
17558         print_multi_reg, output_mov_long_double_fpa_from_arm,
17559         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
17560         output_mov_double_fpa_from_arm, output_move_double,
17561         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
17562         output_return_instruction, arm_output_function_prologue,
17563         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
17564         arm_output_mi_thunk, thumb_set_return_address): Ditto.
17565         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
17566         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
17567         (arithmetic_instr, shift_op): Use arm_shift_nmem.
17568         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
17569         '!' and 'L'.
17570         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
17571         (thumb_expand_prologue): Use thumb_set_frame_pointer.
17572         (arm_file_start): Output directive for unified syntax.
17573         (arm_unwind_emit_set): Handle stack alignment instruction.
17574         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
17575         Add v6t2, v7, v7a, v7r and v7m.
17576         (RETLDM): Add Thumb-2 code.
17577         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
17578         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
17579         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
17580         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
17581         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
17582         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
17583         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
17584         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
17585         ADJUST_INSN_LENGTH): Define.
17586         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
17587         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
17588         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
17589         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
17590         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
17591         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
17592         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
17593         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
17594         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
17595         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
17596         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
17597         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
17598         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
17599         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
17600         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
17601         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
17602         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
17603         cortex-m3.
17604         * config/arm/arm-tune.md: Regenerate.
17605         * config/arm/arm-protos.h: Update prototypes.
17606         * config/arm/vfp.md: Enable patterns for Thumb-2.
17607         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
17608         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
17609         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
17610         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
17611         * config/arm/libunwind.S: Add Thumb-2 code.
17612         * config/arm/constraints.md: Update include Thumb-2.
17613         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
17614         * config/arm/ieee754-df.S: Ditto.
17615         * config/arm/bpabi.S: Ditto.
17616         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
17617         * config/arm/predicates.md (low_register_operand,
17618         low_reg_or_int_operand, thumb_16bit_operator): New.
17619         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
17620         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
17621         * config/arm/t-arm-elf: Add armv7 multilib.
17622         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
17623         Include thumb2.md.
17624         (UNSPEC_STACK_ALIGN, ce_count): New.
17625         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
17626         arm_zero_extendsidi2, arm_zero_extendqidi2): New
17627         insns/expanders.
17628         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
17629         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
17630         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
17631         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
17632         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
17633         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
17634         insns.
17635         * doc/extend.texi: Document ARMv7-M interrupt functions.
17636         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
17637
17638 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
17639
17640         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
17641         (struct _Unwind_Context): Rename args_size to flags, remove
17642         signal_frame field, add a new args_size field and version field.
17643         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
17644         _Unwind_IsExtendedContext): New inline functions.
17645         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
17646         Assume by_value array is only present if _Unwind_IsExtendedContext.
17647         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
17648         _Unwind_IsSignalFrame.
17649         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
17650         (uw_update_context_1): Use _Unwind_SetSignalFrame.
17651         (uw_init_context_1): Initialize context->flags to
17652         EXTENDED_CONTEXT_BIT.
17653         * config/rs6000/linux-unwind.h (frob_update_context): Use
17654         _Unwind_SetSignalFrame.
17655
17656 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17657
17658         PR middle-end/30353
17659         * gimplify.c (gimplify_modify_expr_complex_part): Move below
17660         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
17661         the value.
17662
17663 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
17664
17665         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
17666         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
17667         RET, AT_SP): Remove.
17668         * config/i386/i386.md (*sse_prologue_save_insn): Use return
17669         instead of RET.
17670
17671         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17672         * cfgbuild.c (find_basic_blocks): Likewise.
17673         * cfgrtl.c (rtl_create_basic_block): Likewise.
17674         * function.c (temp_slots_at_level): Likewise.
17675         * reg-stack.c (stack_regs_mentioned): Likewise.
17676         * regclass.c (allocate_reg_info): Likewise.
17677         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17678         set_bb_for_stmt, move_block_to_fn): Likewise.
17679         * tree-complex.c (tree_lower_complex): Likewise.
17680         * vec.h (VEC_safe_grow_cleared): New.
17681
17682         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
17683
17684 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
17685
17686         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
17687         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
17688         to loop_version.
17689         * cfgloopmanip.c (scale_loop_frequencies): Export.
17690         (loopify): Scale the frequencies by prescribed coefficients.
17691         (set_zero_probability): New function.
17692         (duplicate_loop_to_header_edge): Improve updating of frequencies.
17693         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
17694         and frequencies according to arguments.
17695         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
17696         correctly.
17697         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
17698         * modulo-sched.c (sms_schedule): Set probabilities for entering
17699         versioned loop correctly.
17700         * tree-vect-transform.c (vect_transform_loop): Ditto.
17701         * cfgloop.h (loopify, loop_version): Declaration changed.
17702         (scale_loop_frequencies): Declared.
17703
17704 2007-01-02  Jan Hubicka  <jh@suse.cz>
17705
17706         * cgraph.c: Include tree-flow.h
17707         (cgraph_add_new-function): Handle IPA_SSA mode; execute
17708         early_local_passes.
17709         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
17710         * tree-pass.h (pass_all_early_optimizations): Declare.
17711         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
17712         early_local_passes.
17713         (cgraph_analyze_function): Do early_local_passes.
17714         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17715         Do not add referenced vars.
17716         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
17717         SSA form.
17718         (gate_all_early_local_passes): New gate.
17719         (pass_early_local_passes): Use new gate.
17720         (execute_early_local_optimizations): New functions.
17721         (gate_all_early_optimizations): New gate.
17722         (pass_all_early_optimizations): New pass.
17723         (execute_free_datastructures): Free SSA only when initialized.
17724         (gate_init_datastructures): Init only when optimizing.
17725         (tree_lowering_passes): Do early local passes when called late.
17726         * tree-profile.c (do_tree_profiling): Don't profile functions added
17727         late.
17728         (do_early_tree_profiling, pass_early_tree_profile): Kill.
17729         * tree-cfg.c (update_modified_stmts): Do not update when operands are
17730         not active.
17731         * passes.c (init_optimizations_passes): Reorder so we go into SSA
17732         during early_local_passes.
17733         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
17734
17735
17736 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17737
17738         * Makefile.in: Update copyright year.
17739
17740 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17741
17742         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
17743         in $(lang_checks) and check-consistency targets.
17744
17745 2007-01-02  Jan Hubicka  <jh@suse.cz>
17746
17747         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17748         Do not add referenced vars.
17749         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
17750         are not active.
17751         * passes.c (init_optimization_passes): Put mudflap_2 after
17752         free_datastructures.
17753
17754 2007-01-02  Jan Hubicka  <jh@suse.cz>
17755
17756         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
17757         Set NOTHROW flag on call statements proved to be nothrow.
17758         Update statement of local calls so new pure/const functions are
17759         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
17760         goto receivers.
17761         (tree_rest_of_compilation): Register hooks and initialize bitmap
17762         early. Do not set after_inlining flag.
17763
17764 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
17765
17766         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
17767         HOST_BITS_PER_LONGLONG
17768
17769 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
17770
17771         PR c/19977
17772         * c-typeck.c (store_init_value): Don't emit pedantic overflow
17773         warning for non-static initializers.
17774
17775 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
17776
17777         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
17778         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
17779         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
17780         Always use set_unique_reg_note to add REG_EQUAL notes.
17781
17782 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17783
17784         Revert:
17785         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17786
17787         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17788         * cfgbuild.c (find_basic_blocks): Likewise.
17789         * cfgrtl.c (rtl_create_basic_block): Likewise.
17790         * function.c (temp_slots_at_level): Likewise.
17791         * reg-stack.c (stack_regs_mentioned): Likewise.
17792         * regclass.c (allocate_reg_info): Likewise.
17793         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17794         set_bb_for_stmt, move_block_to_fn): Likewise.
17795         * tree-complex.c (tree_lower_complex): Likewise.
17796         * vec.h (VEC_safe_grow_cleared): New.
17797
17798 2007-01-02  Ian Lance Taylor  <iant@google.com>
17799
17800         * c-common.c (c_common_truthvalue_conversion): When warning about
17801         using an assignment as a truth value, set TREE_NO_WARNING.
17802
17803 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17804
17805         PR middle-end/7651
17806         * c.opt (Wold-style-declaration): New.
17807         * doc/invoke.texi (C-only Warning Options): New.
17808         (Wold-style-declaration): Document it.
17809         (Wextra): Enabled by -Wextra.
17810         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17811         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
17812         -Wold-style-declaration.
17813
17814 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17815
17816         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17817         * cfgbuild.c (find_basic_blocks): Likewise.
17818         * cfgrtl.c (rtl_create_basic_block): Likewise.
17819         * function.c (temp_slots_at_level): Likewise.
17820         * reg-stack.c (stack_regs_mentioned): Likewise.
17821         * regclass.c (allocate_reg_info): Likewise.
17822         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17823         set_bb_for_stmt, move_block_to_fn): Likewise.
17824         * tree-complex.c (tree_lower_complex): Likewise.
17825         * vec.h (VEC_safe_grow_cleared): New.
17826
17827 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
17828
17829         * c-common.c (c_common_nodes_and_builtins): Since variants of
17830         void_type_node get built before it is given a name, we need to
17831         give those variants the name, too.
17832         (complete_array_type): We need to work with the canonical main
17833         type of the array, from which we will build the qualified version.
17834         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
17835         * print-tree.c (print_node): Display canonical type information
17836         for each type.
17837         * stor-layout.c (layout_type): When we don't know the
17838         alignment of a type for which we're building an array, we end up
17839         guessing wrong, so make the type require structural equality.
17840         * tree.c (make_node_stat): When we build a new type, it is its
17841         own canonical type.
17842         (build_type_attribute_qual_variant): When building an attribute
17843         variant, its canonical type is the non-attribute variant. However,
17844         if the attributes are target-dependent and they differ, we need to
17845         use structural equality checks for this type.
17846         (build_qualified_type): A qualified type is not equivalent to its
17847         unqualified variant; set the canonical type appropriately.
17848         (build_distinct_type_copy): When building a distinct type from
17849         another type, the new type is its own canonical type.
17850         (build_variant_type_copy): When building a new type variant, we
17851         assume that it is equivalent to the original type.
17852         (build_pointer_type_for_mode): When building a pointer type, also
17853         build a canonical type pointer.
17854         (build_reference_type_for_mode): When building a reference type,
17855         also build a canonical type reference.
17856         (build_index_type): When we can't hash an index type (e.g.,
17857         because its maximum value is negative), the index type requires
17858         structural equality tests.
17859         (build_array_type): Build the canonical form of an array type.
17860         (build_function_type): Function types require structural equality,
17861         because they contain default arguments, attributes, etc.
17862         (build_method_type_directly): Ditto for method types.
17863         (build_offset_type): Build the canonical offset type.
17864         (build_complex_type): Build the canonical vector type.
17865         (make_vector_type): Build the canonical vector type.
17866         * tree.h (TYPE_CANONICAL): New.
17867         (TYPE_STRUCTURAL_EQUALITY_P): New.
17868         (SET_TYPE_STRUCTURAL_EQUALITY): New.
17869         (struct tree_type): Added "canonical" field.
17870         * params.h (VERIFY_CANONICAL_TYPES): New.
17871         * doc/c-tree.texi (TYPE_CANONICAL): Document.
17872         (TYPE_STRUCTURAL_EQUALITY_P): Document.
17873         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
17874         * doc/invoke.texi (verify-canonical-types): Document --param
17875         parameter for verifying canonical types.
17876
17877 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17878
17879         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
17880         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
17881         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
17882         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
17883         tm_file.
17884         * config/rs6000/e500.h: New.
17885         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
17886         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
17887         Remove.
17888         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
17889         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
17890         TARGET_E500_DOUBLE): Remove.
17891         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
17892         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
17893         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
17894         * config/rs6000/rs6000.c (rs6000_override_options): Use
17895         CHECK_E500_OPTIONS.
17896
17897 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17898
17899         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
17900         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
17901         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
17902         rs6000_emit_cmove): Don't check TARGET_E500.
17903         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
17904         sordered): Don't check TARGET_E500.
17905
17906 2007-01-01  Eric Christopher  <echristo@apple.com>
17907
17908         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
17909         HARD_REGISTER_NUM_P.
17910
17911 2007-01-01  Roger Sayle  <roger@eyesopen.com>
17912
17913         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
17914         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
17915         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
17916         eq/ne Y".
17917
17918 2007-01-01  Mike Stump  <mrs@apple.com>
17919
17920         * configure.ac: Remove support for building with Apple's gcc-3.1.
17921
17922 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17923
17924         PR middle-end/30311
17925         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
17926         REG is a hard register.  Do not modify REG before calling
17927         subreg_nregs.
17928         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
17929         multiple of the size of YMODE for certain lowpart cases.
17930
17931 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17932
17933         PR middle-end/30253
17934         * gimplify (voidify_wrapper_expr): Update for
17935         GIMPLE_MODIFY_STMT.
17936
17937 2007-01-01  Andreas Schwab  <schwab@suse.de>
17938
17939         PR target/29166
17940         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
17941         save of BR0 in extra_spill_size instead of spill_size.
17942         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
17943         area.
17944         (ia64_expand_epilogue): Restore BR0 from its new location.
17945
17946 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17947
17948         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
17949         Use a temporary variable if the left hand side is not a gimple
17950         register.
17951
17952 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17953
17954         * gimplify.c (gimplify_return_expr): Make the temporary variable
17955         for the return expression, a gimple register variable.
17956
17957 2007-01-01  Jan Hubicka  <jh@suse.cz>
17958
17959         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
17960         INSN_LIST.
17961
17962 2007-01-01  Mike Stump  <mrs@apple.com>
17963
17964         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
17965         .literal16.
17966         * config/darwin.c (machopic_select_rtx_section): Use
17967         HAVE_GAS_LITERAL16.
17968         (darwin_mergeable_constant_section): Likewise.
17969         * configure: Regenerate.
17970         * config.in: Regenerate.
17971
17972 2007-01-01  Jan Hubicka  <jh@suse.cz>
17973             Andrew Pinski  <pinskia@gmail.com>
17974
17975         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
17976         before starting IPA passes.