OSDN Git Service

PR libgomp/32468
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
2
3         PR libgomp/32468
4         * omp-low.c (check_combined_parallel): New function.
5         (lower_omp_parallel): Call it via walk_stmts, set
6         OMP_PARALLEL_COMBINED if appropriate.
7         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
8         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
9         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
10         don't consider it as combined parallel.
11
12 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
13
14         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
15         (gcc_tooldir): Likewise.
16         * configure: Regenerate.
17         * Makefile.in (libsubdir_to_prefix): New variable, based on the
18         old configure.ac gcc_tooldir setting.
19         (prefix_to_exec_prefix): New variable.
20         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
21         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
22
23 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
24
25         Fix PR tree-optimization/32583
26         Fix PR tree-optimization/32584
27         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
28         (phi_translate_set): Use phi_translate directly now.
29         (make_values_for_stmt): Don't value number RHS if we already know
30         it is constant.
31
32 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
33             Jim Wilson <wilson@specifix.com>
34
35         PR target/31684
36         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
37         copy_insn.
38
39 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
40             Richard Sandiford  <richard@codesourcery.com>
41             Nigel Stephens  <nigel@mips.com>
42
43         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
44         (mips16e_output_save_restore): Declare.
45         (mips16e_save_restore_pattern_p): Likewise.
46         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
47         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
48         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
49         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
50         (BITSET_P): New global macro, extracted from...
51         (mips_for_each_saved_reg): ...here.
52         (mips16e_save_restore_info): New struct.
53         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
54         (mips16e_save_restore_regs): New variable.
55         (mips_split_plus, mips16e_find_first_register): New functions.
56         (mips16e_mask_registers): New function.
57         (compute_frame_size): Expand the commentary before the function.
58         Enforce the MIPS16e save and restore register range restrictions.
59         Pad the general register save area at the low end.
60         (mips16e_save_restore_reg, mips16e_build_save_restore)
61         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
62         (mips16e_output_save_restore, mips16e_collect_propagate_value)
63         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
64         New functions.
65         (mips_expand_prologue, mips_expand_epilogue): Handle
66         GENERATE_MIPS16E_SAVE_RESTORE.
67         * config/mips/mips.md (*mips16e_save_restore): New pattern.
68
69 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
70
71         PR tree-optimization/31966
72         PR tree-optimization/32533
73         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
74         "basic_block" description as its third argument.  Update function
75         calls to get destination bb from "edge" argument.  Save "cond" into
76         aux field of the edge.  Update prototype for changed arguments.
77         (if_convertible_loop_p): Clear aux field of incoming edges if bb
78         contains phi node.
79         (find_phi_replacement_condition): Operate on incoming edges, not
80         on predecessor blocks.  If there is a condition saved in the
81         incoming edge aux field, AND it with incoming bb predicate.
82         Return source bb of the first edge.
83         (clean_predicate_lists): Clean aux field of outgoing node edges.
84         (tree_if_conversion): Do not initialize cond variable. Move
85         variable declaration into the loop.
86         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
87         initializations of new_stmt, arg0 and arg1 variables.
88
89 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
90
91         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
92         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
93
94 2007-07-02  Richard Guenther  <rguenther@suse.de>
95
96         * tree-ssa.c (useless_type_conversion_p): Document
97         future intent as defining the middle-end type system.
98         Re-structure to call langhook last, group by type class,
99         mark questionable parts.
100
101 2007-07-02  Richard Guenther  <rguenther@suse.de>
102
103         * tree-flow.h (types_compatible_p): Declare.
104         * tree-ssa.c (types_compatible_p): New function.
105         * ipa-type-escape.c (discover_unique_type): Use
106         types_compatible_p instead of lang_hooks.types_compatible_p.
107         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
108         * tree-vn.c (expressions_equal_p): Likewise.
109         * tree.c (fields_compatible_p): Likewise.
110         * tree-ssa-dom.c (avail_expr_eq): Likewise.
111         (cprop_operand): Use useless_type_conversion_p instead of
112         lang_hooks.types_compatible_p.
113         * tree-inline.c (setup_one_parameter): Likewise.
114         (declare_return_variable): Likewise.
115         * tree-nrv.c (tree_nrv): Likewise.
116         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
117         (maybe_fold_offset_to_component_ref): Likewise.
118         (maybe_fold_offset_to_reference): Likewise.
119         * tree-ssa-copy.c (may_propagate_copy): Likewise.
120         (merge_alias_info): Likewise.
121         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
122         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
123         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
124         * tree-tailcall.c (find_tail_calls): Likewise.
125         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
126         * gimplify.c (canonicalize_addr_expr): Likewise.
127         (fold_indirect_ref_rhs): Likewise.
128         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
129         (cpt_same_type): Likewise.
130         (check_pointer_types_r): Swap parameters to cpt_same_type
131         where appropriate.
132         * fold-const.c (fold_convert): Revert fix for PR15988.
133         * tree-inline.c (setup_one_parameter): Instead fix it here by
134         using fold_build1 instead of fold_convert and checking for
135         error_mark_node.  Convert only if the conversion is necessary.
136
137 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
138
139         * configure.ac: Check for .gnu_attribute on Power.
140         * configure: Regenerate.
141         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
142         attribute for floating-point ABI.
143
144 2007-07-02  Ira Rosen  <irar@il.ibm.com>
145
146         PR tree-optimization/32230
147         PR tree-optimization/32477
148         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
149         address is a constant.
150
151 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
152
153         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
154         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
155         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
156         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
157         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
158         64-bit targets.  Add support for *-elfoabi*.
159         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
160         different settings if $(tm_defines) does not select the EABI.
161         (MULTILIB_EXCLUSIONS): Define in those circumstances.
162         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
163         (MIPS_ARCH_OPTION_SPEC): Likewise.
164         (MIPS_ISA_LEVEL_SPEC): Likewise.
165         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
166         * config/mips/elfoabi.h: New file.
167
168 2007-07-02  Richard Guenther  <rguenther@suse.de>
169
170         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
171         (useless_type_conversion_p): ... this.
172         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
173         (useless_type_conversion_p): ... this.
174         * builtins.c (fold_builtin_memory_op): Rename
175         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
176         * tree-cfg.c (verify_expr): Likewise.
177         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
178         * tree-ssa-ccp.c (ccp_fold): Likewise.
179         * tree-ssa-copy.c (may_propagate_copy): Likewise.
180         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
181         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
182         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
183         * tree-ssa-pre.c (eliminate): Likewise.
184         * tree-ssa.c (delete_tree_ssa): Likewise.
185         (tree_ssa_useless_type_conversion): Likewise.
186         * tree.c (build2_stat): Likewise.
187
188 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
189
190         Fix PR tree-optimization/32571
191         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
192         simplifying them.
193
194 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
195
196         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
197         and other expected operations explicitly, change default to
198         gcc_unreachable. 
199
200 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
201
202         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
203         PARALLEL.
204         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
205         (tls_load_dot_plus_eight): Move the label number into the unspec.
206         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
207
208 2007-07-01  Andreas Schwab  <schwab@suse.de>
209
210         * dwarf2out.c (initial_return_save): Define only if used.
211
212 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
213
214         Unreverting Richard's Revert of:
215
216         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
217
218         * dce.c (deletable_insn_p_1): New function, split out from...
219         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
220         specially, not those inside PARALLELs.  Remove BODY argument
221         and adjust recursive call accordingly.
222         (prescan_insns_for_dce): Update call to delete_insn_p.
223
224 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
225             Revital Eres  <eres@il.ibm.com>
226
227         * ddg.c (create_ddg_all_sccs): Fix missed
228         initialization of scc_nodes.
229
230 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
231
232         PR middle-end/32559
233         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
234         X + ~X to 1 only for INTEGRAL_TYPE_P type.
235
236 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
237
238         * configure.ac: Check for .gnu_attribute on MIPS.
239         * configure, config.in: Regenerate.
240         * config/mips/mips.c (mips_file_start): If supported, output
241         attribute for floating-point ABI.
242
243 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
244
245         PR target/32433
246         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
247         (ffs_cmove): New expander to expand using ctz pattern.
248         (*ffs_cmove): Remove pattern.
249         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
250         (ffsdi2): Expand using ctz pattern.
251         (*ffs_rex64): Remove pattern.
252
253 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
254
255         PR rtl-optimization/32296
256         * pa.md (return): Delete pattern.
257         (return_internal): Remove "(const_int 1)" from pattern.
258         (epilogue): Use return_internal pattern for trivial returns.
259         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
260         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
261
262 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
263
264         * tree-ssa-pre.c (is_exception_related): New function
265         (can_value_number_operation): Use it.
266
267 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
268         
269         Fix PR tree-optimization/32540
270         Fix PR tree-optimization/31651
271
272         * tree-ssa-sccvn.c: New file.
273
274         * tree-ssa-sccvn.h: Ditto.
275         
276         * tree-vn.c: Include tree-ssa-sccvn.h
277         (val_expr_paid_d): Removed.
278         (value_table): Ditto.
279         (vn_compute): Ditto.
280         (val_expr_pair_hash): Ditto.
281         (val_expr_pair_expr_eq): Ditto.
282         (copy_vuses_from_stmt): Ditto.
283         (vn_delete): Ditto.
284         (vn_init): Ditto.
285         (shared_vuses_from_stmt): Ditto.
286         (print_creation_to_file): Moved up.
287         (sort_vuses): Ditto.
288         (sort_vuses_heap): Ditto.
289         (set_value_handle): Make non-static.
290         (make_value_handle): Ditto.
291         (vn_add): Rewritten to use sccvn lookups.
292         (vn_add_with_vuses): Ditto.
293         (vn_lookup): Ditto (and second argument removed).
294         (vn_lookup_with_vuses): Ditto.
295         (vn_lookup_or_add): Ditto (and second argument removed);
296         (vn_lookup_or_add_with_vuses): Ditto.
297         (vn_lookup_with_stmt): New.
298         (vn_lookup_or_add_with_stmt): Ditto.
299         (create_value_handle_for_expr): Ditto.
300
301         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
302         (seen_during_translate): New function.
303         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
304         (phi_trans_add): Ditto.
305         (constant_expr_p): FIELD_DECL is always constant.
306         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
307         Use constant_expr_p.
308         Avoid infinite recursion on mutually valued expressions.
309         Change callers of vn_lookup_or_add.
310         (phi_translate): New function.
311         (compute_antic_safe): Allow phi nodes.
312         (create_component_ref_by_pieces): Update for FIELD_DECL change.
313         (find_or_generate_expression): Rewrite slightly.
314         (create_expression_by_pieces): Updated for vn_lookup_or_add
315         change.
316         Update VN_INFO for new names.
317         (insert_into_preds_of_block): Update for new names.
318         (add_to_exp_gen): New function.
319         (add_to_sets): Use vn_lookup_or_add_with_stmt.
320         (find_existing_value_expr): Rewrite to changed vn_lookup.
321         (create_value_expr_from): Ditto, and use add_to_exp_gen.
322         (try_look_through_load): Removed.
323         (try_combine_conversion): Ditto.
324         (get_sccvn_value): New function.
325         (make_values_for_phi): Ditto.
326         (make_values_for_stmt): Ditto.
327         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
328         SCCVN.
329         (init_pre): Update for SCCVN changes.
330         (fini_pre): Ditto.
331         (execute_pre): Ditto.
332
333         * tree-flow.h (make_value_handle): Declare.
334         (set_value_handle): Ditto.
335         (sort_vuses_heap): Ditto.
336         (vn_lookup_or_add_with_stmt): Ditto.
337         (vn_lookup_with_stmt): Ditto.
338         (vn_compute): Remove.
339         (vn_init): Ditto.
340         (vn_delete): Ditto.
341         (vn_lookup): Update arguments.
342
343         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
344         (tree-vn.o): Ditto.
345         (tree-ssa-sccvn.o): New.
346         (OBJS-common): Add tree-ssa-sccvn.o
347         
348 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
349
350         PR c/4076
351         * c-typeck.c (build_external_ref): Don't mark as used if called
352         from itself.
353         * calls.c (rtx_for_function_call): Likewise.
354         
355 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
356
357         Revert:
358
359         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
360
361         * dce.c (deletable_insn_p_1): New function, split out from...
362         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
363         specially, not those inside PARALLELs.  Remove BODY argument
364         and adjust recursive call accordingly.
365         (prescan_insns_for_dce): Update call to delete_insn_p.
366
367 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
368
369         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
370         (try_combine): Move potential calls to undo_all() so they happen
371         before we commit to using the combined insns.
372
373 2006-06-30  Jan Hubicka  <jh@suse.cz>
374
375         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
376         code.
377
378 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
379
380         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
381         (cgraph_remove_unreachable_nodes): Likewise.
382         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
383         * ipa-inline.c (update_caller_keys): Cast according to the coding
384         conventions.
385         (cgraph_decide_recursive_inlining): Likewise.
386         (cgraph_decide_inlining_of_small_function): Likewise.
387         (try_inline): Likewise.
388         (cgraph_decide_inlining_incrementally): Likewise.
389         * ipa-pure-const.c (get_function_state): Likewise.
390         (scan_function): Likewise.
391         (analyze_function): Likewise.
392         (static_execute): Likewise.
393         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
394         (merge_callee_local_info): Likewise.
395         (analyze_function): Use type safe memory macros.
396         (static_execute): Likewise. Cast according to the coding conventions.
397         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
398         conventions.
399         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
400         names.
401         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
402         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
403         variable names.
404
405 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
406
407         PR middle-end/30024
408         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
409         for complex modes (both int and real).
410
411 2007-06-29  Jan Hubicka  <jh@suse.cz>
412
413         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
414
415 2007-06-29  Jan Hubicka  <jh@suse.cz>
416
417         PR middle-end/32372
418         * cse.c (cse_insn): Avoid invalid sharing in between register note and
419         the insn pattern.
420
421 2007-06-29  Anatoly Sokolov <aesok@post.ru>
422
423         PR target/32335
424         * config/avr/avr.c: Include dataflow header file.
425         (expand_prologue): Adjust for prologue insn change.
426         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
427         inside a insn.
428
429 2007-06-29  Richard Guenther  <rguenther@suse.de>
430
431         PR middle-end/32493
432         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
433         during type verification.
434
435 2007-06-29  Jan Hubicka  <jh@suse.cz>
436
437         * recog.c (validate_change_rtx_1): Unshare TO argument.
438
439 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
440
441         PR tree-optimization/24659
442         * tree-vect-transform.c (vectorizable_call): Handle
443         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
444
445         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
446         * config/i386/i386.c (enum ix86_builtins)
447         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
448         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
449         description.
450         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
451         const using def_builtin_const.
452         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
453         input operands in the same modes as the result.
454         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
455
456 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
457
458         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
459         (df_set_dead_notes_for_mw): Likewise.
460
461 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
462
463         * c-common.c (pointer_int_sum): Do the negation in sizetype.
464
465 2007-06-28  DJ Delorie  <dj@redhat.com>
466
467         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
468
469 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
470
471         * doc/invoke.texi (C++ Dialect Options): Document
472         fvisibility-ms-compat.
473         * c.opt (fvisibility-ms-compat): New.
474
475 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
476
477         PR tree-opt/32417
478         * tree-affine.c (aff_combination_add_elt): Handle
479         pointer addition specially.
480
481 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
482
483         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
484         decl is non-external for AIX ABI.
485
486 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
487
488         * config/rs6000/predicates.md (current_file_function_operand):
489         Ensure the symbol is non-external for AIX ABI.
490
491 2007-06-28  Nick Clifton  <nickc@redhat.com>
492
493         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
494         (fdce, fdse, fpredictive-commoning): Likewise.
495
496 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
497
498         PR other/31400
499         * gcc.c (process_command): Recognize the new -static-libgfortran
500         option.
501
502 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
503
504         PR target/32418
505         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
506         Use a call clobbered hard reg instead of a pseudo reg.
507
508 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
509
510         * config/sh/sh.md (load_gbr): Use correct operand constraint.
511
512 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
513
514         PR target/32479
515         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
516         REG_LIBCALL and REG_RETVAL notes.
517         (divsi3, mulsi3): Likewise.
518         (mulhisi3): Likewise.  Use emit_libcall_block.
519         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
520
521 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
522
523         PR rtl-optimization/32481
524         * combine.c (adjust_for_new_dest): Rescan the changed insn.
525
526 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
527
528         * dce.c (deletable_insn_p_1): New function, split out from...
529         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
530         specially, not those inside PARALLELs.  Remove BODY argument
531         and adjust recursive call accordingly.
532         (prescan_insns_for_dce): Update call to delete_insn_p.
533
534 2007-06-27  Richard Guenther  <rguenther@suse.de>
535
536         PR middle-end/32492
537         * tree.h (fold_convertible_p): Declare.
538         * fold-const.c (fold_convertible_p): New function.
539         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
540         instead of lang_hooks.types_compatible_p.
541
542 2007-06-26  Jan Hubicka  <jh@suse.cz>
543
544         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
545         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
546         early use validate_unshare_change.
547         (reload_combine): Likewise.
548         * recog.c (change_t): New field unshare.
549         (validate_change_1): Rename from validate_change; add argument unshare.
550         (validate_change): Turn into wrapper of validate_change_1; update
551         prototype for bools.
552         (validate_unshare_change): New.
553         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
554         calls of df_insn_rescan.
555         * recog.h (validate_change): Replace ints by bools.
556         (validate_unshare_change): Declare.
557
558 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
559
560         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
561         
562 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
563
564         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
565
566 2007-06-25  Jan Hubicka  <jh@suse.cz>
567
568         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
569         uninlinable call.
570         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
571         cgraph_decide_inlining_incrementally): Move uninlinability checks to
572         places other call site specific checks are performed.
573
574 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
575
576         PR tree-opt/32421
577         * tree-vect-transform.c (vectorizable_operation): Convert
578         POINTER_PLUS_EXPR over to PLUS_EXPR.
579
580 2007-06-25  Chao-ying Fu  <fu@mips.com>
581
582         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
583         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
584         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
585         Document GET_MODE_IBIT, and GET_MODE_FBIT.
586
587         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
588         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
589         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
590         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
591         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
592         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
593         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
594         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
595         ALL_FIXED_POINT_MODE_P): New define.
596         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
597         MODE_UACCUM.
598         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
599
600         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
601         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
602         MODE_VECTOR_UACCUM): New mode classes.
603
604         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
605         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
606         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
607         USA, UDA, and UTA.
608
609         * genmodes.c (struct mode_data): Add ibit and fbit fields.
610         (blank_mode): Initialize ibit and fbit.
611         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
612         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
613         (new_adjust): Change required_class to required_class_from and
614         required_class_to for testing within a range.
615         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
616         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
617         MODE_VECTOR_UACCUM.
618         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
619         (make_fixed_point_mode): New.
620         (_ADD_ADJUST): Change C to C1 and C2.
621         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
622         use a range for machine classes.
623         (ADJUST_IBIT, ADJUST_FBIT): New.
624         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
625         CONST_MODE_FBIT.
626         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
627         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
628         Emit adjustment for ibit and fbit.
629         (emit_mode_ibit, emit_mode_fbit): New.
630         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
631
632 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
633
634         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
635         as the source of the set.
636
637 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
638
639         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
640         FP_REGNO_P): Use IN_RANGE.
641         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
642         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
643         (DATA_REG_P): Use DATA_REGNO_P.
644         (FP_REG_P): Use FP_REGNO_P.
645         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
646         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
647         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
648
649 2007-06-24  Jan Hubicka  <jh@suse.cz>
650
651         PR middle-end/30563
652         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
653
654 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
655
656         PR middle-end/32461
657         * fold-const.c (fold_binary): Strip nops of operand 0
658         of BIT_NOT_EXPR before calling operand_equal_p.
659         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
660         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
661
662 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
663
664         * doc/extend.texi: Document that dllimport and dllexport imply
665         default visibility.
666         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
667         imported or exported declaration, including type declarations.
668         * c-common.c (handle_visibility_attribute): Check for conflicts
669         with dllimport/dllexport.
670         (c_determine_visibility): Handle dllimport/dllexport as an
671         explicit visibility atttribute.
672
673 2007-06-23  Richard Guenther  <rguenther@suse.de>
674
675         PR tree-optimization/16876
676         PR middle-end/29478
677         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
678         for CALL_EXPRs.
679         * tree-inline.c (initialize_inlined_parameters): Do not call
680         lang_hooks.tree_inlining.convert_parm_for_inlining.
681         * cgraphbuild.c (initialize_inline_failed): Set inline failed
682         reason for mismatched types.
683         * gimplify.c (gimplify_call_expr): Verify the call expression
684         arguments match the called function type signature.  Otherwise
685         mark the call expression to be not considered for inlining
686         using CALL_CANNOT_INLINE_P flag.
687         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
688         edges call expression.
689         (cgraph_decide_inlining_of_small_function): Likewise.
690         (cgraph_decide_inlining): Likewise.
691         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
692         Remove define.
693         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
694         * c-typeck.c (c_convert_parm_for_inlining): Remove.
695         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
696         Remove declaration.
697         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
698         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
699         Remove.
700         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
701         convert_parm_for_inlining member.
702
703 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
704
705         PR target/31152
706         * arm.md (negscc): Match the correct operand for optimized LT0 test.
707         Remove optimization for GT.
708
709 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
710
711         PR middle-end/32437
712         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
713         is a PARALLEL.
714         (prescan_insns_for_dce): Add extra parameter.
715         
716 2007-06-23  Jan Hubicka  <jh@suse.cz>
717
718         PR middle-end/31541
719         * gimplify.c (mark_addressable): New function.
720         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
721
722 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
723
724         PR middle-end/32374
725         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
726
727 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
728
729         PR target/32413
730         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
731         moves between MMX/SSE registers to at least 8 units to prevent
732         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
733
734 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
735
736         * config/i386/i386.c (override_options): Correct x86_sahf
737         setting condition.
738
739 2007-06-21  David Daney  <ddaney@avtrex.com>
740
741         PR target/32406
742         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
743         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
744         (exception_receiver): Renamed to ...
745         (nonlocal_goto_receiver): ... this.
746
747 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
748
749         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
750         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
751         partial register accesses.
752
753 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
754
755         * fold-const.c (debug_fold_checksum): Move it under
756         ENABLE_FOLD_CHECKING.
757
758 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
759
760         PR middle-end/20623
761         * tree.h (debug_fold_checksum): Declared.
762         * fold-const.c (build_fold_addr_expr_with_type_1): New.
763         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
764         build_fold_addr_expr_with_type_1.
765         (fold_addr_expr, debug_fold_checksum): New.
766         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
767         (fold_unary, fold_comparison, split_address_to_core_and_offset):
768         Use fold_addr_expr.
769         
770 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
771
772         PR tree-optimization/19590
773         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
774         of scev is a constant.
775         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
776
777 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
778
779         * df-problems.c (df_note_bb_compute): Made computation of live
780         info consistent with df_lr.
781
782 2007-06-21  Richard Guenther  <rguenther@suse.de>
783
784         PR tree-optimization/32453
785         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
786         for pointer anti-range.
787
788 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
789
790         * config/i386/i386.c (processor_target_table): Increase maximum
791         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
792         default 64bit.
793
794         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
795         byte alignment if > 8 byte alignment is preferred.
796         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
797
798 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
799
800         PR tree-optimization/31866
801         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
802         if ASM_EXPR's input is not a SSA_NAME.
803
804         PR middle-end/32362
805         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
806         but decl is a global var, instead return decl.
807         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
808         even for is_global_var decls, if they are private in some outer
809         context.
810
811 2007-06-21  Richard Guenther  <rguenther@suse.de>
812
813         PR tree-optimization/32451
814         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
815
816 2007-06-21  Christian Bruel  <christian.bruel@st.com>
817
818         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
819         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
820         (push_regs): Changed saving order or banked registers.
821         (sh_expand_epilogue): Likewise.
822         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
823         (FIRST_BANKED_REG): Likewise.
824         (LAST_BANKED_REG): Likewise.
825         * config/sh/sh.md (banked) New attribute.
826         (in_delay_slot): Check banked attribute.
827         
828 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
829
830         PR tree-optimization/32075
831         * tree-data-ref.c (subscript_dependence_tester_1, 
832         analyze_miv_subscript, analyze_overlapping_iterations,
833         add_distance_for_zero_overlaps, build_classic_dist_vector,
834         subscript_dependence_tester_1, analyze_overlapping_iterations,
835         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
836         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
837         to evolution_function_is_affine_multivariate_p.
838
839 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
840
841         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
842
843 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
844
845         PR target/32335
846         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
847         for TARGET_A16.
848         * config/m32c/prologue.md (epilogue_exitd_16): New.
849         (epilogue_reit_16): New.
850         (epilogue_exitd): Rename to epilogue_exitd_24.
851         (epilogue_reit): Rename to epilogue_reit_24.
852
853 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
854             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
855
856         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
857         New counters.
858         * haifa-sched.c (queue_to_ready): Don't requeue next insn
859         if dbg_cnt (sched_insn) reaches the limit.
860         (choose_ready): New parameter INSN_PTR and new return value.
861         (schedule_block): Handle dbg_cnt (sched_insn). Handle
862         the new return value from choose_ready.
863         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
864         (rest_of_handle_global_alloc): New global_alloc_at_func.
865
866 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
867
868         PR tree-optimization/25737
869         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
870         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
871         * tree-flow.h (struct fieldoff): Add new field alias_set.
872         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
873         argument addressable_type.  Set alias_set of fieldoff.
874         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
875         (create_overlap_variables_for): Pass alias_set from fieldoff to
876         create_sft.
877         * alias.c (get_alias_set): Use alias_set from SFT if set.
878
879 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
880
881         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
882         of a variable as an unsigned HOST_WIDE_INT integer.
883
884 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
885
886         PR rtl-optimization/32405
887         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
888
889 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
890
891         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
892
893         PR middle-end/31959
894         * builtins.c: Include diagnostic.h.
895         (expand_builtin_expect): Make gcc_assert more permissive.
896         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
897
898         PR inline-asm/32109
899         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
900         and !allows_mem.
901
902         PR middle-end/32285
903         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
904         if ACCUMULATE_OUTGOING_ARGS.
905
906 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
907
908         * config/m68hc11/m68hc11.c: Include dataflow header file.
909         (m68hc11_reorg): Port to dataflow.
910
911 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
912
913         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
914         (struct df_problem.free_blocks_on_set_blocks): New field.
915         (struct dataflow.optional_p): New field.
916         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
917         (df_live_set_all_dirty): New function.
918         * df-scan.c (df_scan_alloc): Initialize optional_p.
919         (problem_SCAN): Initialize free_blocks_on_set_blocks.
920         * df-core.c (df_set_blocks): Removed use of
921         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
922         df_problem.free_blocks_on_set_blocks to determine which blocks are
923         recycled.
924         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
925         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
926         uses dataflow.optional_p to determine if problem should be
927         deleted.
928         (rest_of_handle_df_initialize): Only start live problem if 
929         -02 or above.
930         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
931         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
932         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
933         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
934         problem_NOTE):  Initialize free_blocks_on_set_blocks.
935         (df_lr_bb_local_compute): Recompute luids if df_live problem is
936         not active.
937         (df_live_set_all_dirty, df_note_alloc): New function.
938         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
939         df_get_live_*.
940         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
941         * postreload.c (reload_combine): Ditto.
942         * cse.c (cse_extended_basic_block): Ditto.
943         * regmove.c (mark_flags_life_zones): Ditto.
944         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
945         erase_matching_seqs): Ditto.
946         * bt-load.c (compute_defs_uses_and_gen): Ditto.
947         * integrate (allocate_initial_values): Ditto.
948         * combine.c (reg_dead_at_p): Ditto.
949         * resource.c (mark_target_live_regs): Ditto.
950         * sched-rgn.c (check_live_1, update_live_1): Ditto.
951         * config/sh/sh.c (find_r0_life_regions): Ditto.
952         * global.c (rest_of_handle_global_alloc): Only add back df_live
953         for -O > 1.
954         * local-alloc.c (rest_of_handle_local_alloc): Only remove
955         df_live for -O > 1.
956         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
957         df_get_live_*.
958         (if_convert): Make sure df_live is there at -O == 1.
959         (pass_if_after_combine): Cleanup flags.
960         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
961         is there at -O == 1.
962         
963 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
964
965         * config/arm/arm.c (arm_get_frame_offsets): Set
966         offsets->locals_base to avoid negative stack size.
967         (thumb1_expand_prologue): Assert on negative stack size.
968
969 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
970
971         PR tree-optimization/32367
972         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
973         of the chrec has no evolution in that loop.
974         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
975
976 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
977
978         * config/xtensa/xtensa.c: Include "df.h".
979         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
980         (xtensa_va_start): Invoke make_tree with sizetype for
981         expand_builtin_saveregs and then convert the result to a pointer.
982         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
983         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
984         Subtract argument size from index value as integers and then use
985         POINTER_PLUS_EXPR to add the result to the array address.
986         
987 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
988
989         PR target/32335
990         * config/m32c/m32c.c: Include dataflow header file.
991         (m32c_emit_prologue): Adjust for prologue insn change.
992         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
993         once inside a PARALLEL. Assume frame size passed in operand 0
994         includes space to save the fb register.
995         (prologue_enter_24): Likewise.
996         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
997
998 2007-06-19  David Daney  <ddaney@avtrex.com
999
1000         PR target/32313
1001         * config/mips/mips.md (cprestore): Mark $gp as used.
1002
1003 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1004
1005         PR target/32369
1006         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
1007         (frv_ifcvt_modify_insn): Likewise.
1008
1009 2007-06-19  Richard Guenther  <rguenther@suse.de>
1010
1011         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
1012         only handle positive offsets that fit in a HOST_WIDE_INT.
1013
1014 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
1015
1016         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
1017         result of rsqrt insn for zero input argument to avoid NaN.
1018
1019 2007-06-19  Richard Guenther  <rguenther@suse.de>
1020
1021         PR middle-end/31950
1022         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
1023
1024 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
1025
1026         PR tree-optimization/32353
1027         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
1028
1029 2007-06-19  Nick Clifton  <nickc@redhat.com>
1030
1031         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
1032
1033 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1034
1035         PR target/32389
1036         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
1037         * config/i386/i386.c (assign_386_stack_local): Assert that
1038         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
1039         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
1040         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
1041         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
1042
1043 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
1044
1045         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
1046
1047 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
1048
1049         PR rtl-optimization/32321
1050         * gcse.c (replace_store_insn): Update the note before
1051         calling emit_insn_after.
1052
1053 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
1054
1055         PR middle-end/32355
1056         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
1057         cse_main.
1058         * df-problems.c (df_note_bb_compute): Fix dumping info.
1059         
1060 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
1061
1062         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
1063         insn with emit_jump_insn.
1064
1065 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1066
1067         PR tree-optimization/32383
1068         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
1069         * targhooks.h (default_builtin_reciprocal): Update prototype.
1070         * target.h (struct gcc_target): Update builtin_reciprocal.
1071         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
1072         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
1073         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
1074         when fndecl is in BUILT_IN_MD class.
1075         (execute_convert_to_rsqrt): Ditto.
1076
1077         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
1078         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
1079         Convert BUILT_IN_SQRTF code only  when md_fn is false.
1080
1081 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1082
1083         * bt-load.c (move_btr_def): Fix the order of arguments
1084         to validate_replace_rtx.
1085
1086 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
1087
1088         * config/m68k/m68k-devices.def: Add 54450..54455.
1089
1090 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
1091
1092         PR rtl-optimization/32366
1093         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
1094         FLOAT_EXTEND]: Prevent non-scalar modes from entering
1095         significand_size.
1096
1097 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
1098
1099         PR middle-end/32349
1100         * modulo-sched (generate_reg_moves): Added rescan parameter and if
1101         this is true, rescan insn being modified.
1102         (sms_schedule): Added rescan parameter.
1103         (rest_of_handle_sms): Moved freeing of dominance info to before
1104         getting out of cfg_layout.
1105         
1106 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
1107
1108         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
1109         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
1110         appropriate.
1111
1112         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
1113         FL_CF_EMAC from the entry for isac.
1114
1115         * config/m68k/predicates.md (const_call_operand): Adjust comment.
1116         (const_sibcall_operand): New.
1117         (sibcall_operand): Use it.
1118         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
1119         (m68k_isas): ISAC does not imply FPU or EMAC.
1120         (override_options): Add ISA_C logic for symbolic jump & call.
1121
1122 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
1123
1124         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
1125         return mode from the builtin itself.
1126         (sparc_fold_builtin): Fix cast of zero constant.
1127
1128 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1129
1130         * targhooks.c (default_builtin_reciprocal): New default target hook.
1131         * targhooks.h (default_builtin_reciprocal): Add prototype.
1132         * hooks.c (hook_tree_tree_bool_null): Remove hook.
1133         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
1134         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
1135         default_builtin_reciprocal.
1136
1137 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1138
1139         PR middle-end/31723
1140         * hooks.c (hook_tree_tree_bool_null): New hook.
1141         * hooks.h (hook_tree_tree_bool_null): Add prototype.
1142         * tree-pass.h (pass_convert_to_rsqrt): Declare.
1143         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
1144         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
1145         and convert it to reciprocal a*rfunc(b).
1146         (execute_convert_to_rsqrt): New function.
1147         (gate_convert_to_rsqrt): New function.
1148         (pass_convert_to_rsqrt): New pass definition.
1149         * target.h (struct gcc_target): Add builtin_reciprocal.
1150         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
1151         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
1152         TARGET_BUILTIN_RECIPROCAL.
1153         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
1154
1155         * config/i386/i386.h (TARGET_RECIP): New define.
1156         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
1157         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1158         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1159         and not optimizing for size.
1160         (*rcpsf2_sse): New insn pattern.
1161         (*rsqrtsf2_sse): Ditto.
1162         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1163         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1164         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1165         and not optimizing for size.
1166         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
1167         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1168         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1169         and not optimizing for size.
1170         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
1171         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1172         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1173         and not optimizing for size.
1174         (*sse_rsqrtv4sf2): Do not export.
1175         (sqrtv4sf2): Ditto.
1176         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1177         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1178         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1179         and not optimizing for size.
1180         (sqrtv4sf2): Ditto.
1181         * config/i386/i386.opt (mrecip): New option.
1182         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
1183         (ix86_emit_swsqrtsf): Ditto.
1184         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
1185         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
1186         builtin definition.
1187         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
1188         ix86_expand_unop1_builtin.
1189         (ix86_emit_swdivsf): New function.
1190         (ix86_emit_swsqrtsf): Ditto.
1191         (ix86_builtin_reciprocal): New function.
1192         (TARGET_BUILTIN_RECIPROCAL): Use it.
1193         (ix86_vectorize_builtin_conversion): Rename from
1194         ix86_builtin_conversion.
1195         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
1196         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
1197         "i386 and x86_64 Options" section.
1198         (Intel 386 and AMD x86_64 Options): Document -mrecip.
1199
1200 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
1201             Zdenek Dvorak <dvorakz@suse.cz>
1202             Richard Guenther  <rguenther@suse.de>
1203             Kaz Kojima  <kkojima@gcc.gnu.org>
1204
1205         * tree-vrp.c (compare_values_warnv): Convert val2 to
1206         the type of val1.
1207         (extract_range_from_assert): Create
1208         POINTER_PLUS_EXPR for pointer types.
1209         (extract_range_from_binary_expr): Handle
1210         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
1211         for pointer types.
1212         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
1213         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
1214         POINTER_PLUS_EXPR as PLUS_EXPR.
1215         (number_of_iterations_lt_to_ne):
1216         For pointer types, use sizetype when
1217         creating MINUS_EXPR/PLUS_EXPRs.
1218         (assert_loop_rolls_lt): For pointer types, use sizetype when
1219         creating MINUS_EXPR/PLUS_EXPRs.
1220         (number_of_iterations_le): Likewise.
1221         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
1222         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
1223         like PLUS_EXPR and MINUS_EXPR.
1224         * tree-pretty-print.c (dump_generic_node): Handle
1225         POINTER_PLUS_EXPR.
1226         (op_prio): Likewise.
1227         (op_symbol_1): Likewise.
1228         * optabs.c (optab_for_tree_code): Likewise.
1229         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
1230         specially.
1231         * tree-tailcall.c (process_assignment): Mention
1232         POINTER_PLUS_EXPR in a TODO comment.
1233         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
1234         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
1235         not used with a pointer and an integer type.
1236         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
1237         increment using chrec_convert_rhs instead of chrec_convert.
1238         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
1239         PLUS_EXPR except for the right hand side's type will be
1240         sizetype.
1241         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
1242         (fold_used_pointer_cast): Kill.
1243         (pointer_offset_p): Kill.
1244         (fold_used_pointer): Kill.
1245         (pointer_used_p): Kill.
1246         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
1247         call fold_used_pointer.
1248         (instantiate_parameters_1): Convert the increment
1249         using chrec_convert_rhs instead of chrec_convert.
1250         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
1251         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
1252         instead of PLUS_EXPR.
1253         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
1254         PLUS_EXPR for pointers.
1255         (std_gimplify_va_arg_expr): Likewise.
1256         (fold_builtin_memory_op): Likewise.
1257         (fold_builtin_strstr): Likewise.
1258         (fold_builtin_strchr): Likewise.
1259         (fold_builtin_strrchr): Likewise.
1260         (fold_builtin_strpbrk): Likewise.
1261         (expand_builtin_memory_chk): Likewise.
1262         (fold_builtin_memory_chk): Likewise.
1263         (std_expand_builtin_va_start): Use
1264         sizetype for the call to make_tree and then convert
1265         to the pointer type.
1266         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
1267         instead of PLUS_EXPR for adding to a pointer.
1268         (std_gimplify_va_arg_expr): Use fold_build2 for
1269         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
1270         the operands to sizetype first and then cast the BIT_AND_EXPR
1271         back to the pointer type.
1272         * fold-const.c (build_range_check): Handle pointer types
1273         specially.
1274         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
1275         of PLUS_EXPR's. Make sure the offset is converted to
1276         sizetype.
1277         (try_move_mult_to_index): Strip the NOPs from the offset.
1278         Remove code argument and replace all uses with PLUS_EXPR.
1279         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
1280         specially. Don't use a pointer type for MINUS_EXPR.
1281         (fold_unary): Handle for (T1)(X op Y),
1282         only p+ as that is the only as that can be handled for
1283         binary operators now.
1284         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
1285         POINTER_PLUS_EXPR.
1286         <case PLUS_EXPR>: Add folding of PTR+INT into
1287         PTR p+ INT.
1288         Don't call try_move_mult_to_index.
1289         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
1290         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
1291         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
1292         Don't call try_move_mult_to_index.
1293         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
1294         (tree_expr_nonzero_p): Likewise.
1295         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
1296         of PLUS_EXPR for the complex expression folding.
1297         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
1298         first chrec is a pointer type, then the second should
1299         be sizetype and not the first's type.
1300         For POINTER_PLUS_EXPR, use a different right hand side type.
1301         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1302         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
1303         different right hand side type.
1304         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1305         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
1306         instead of PLUS_EXPR.
1307         When either operand is zero, convert the other operand.
1308         (chrec_apply): Use chrec_convert_rhs
1309         on the argument x instead of chrec_convert.
1310         (reset_evolution_in_loop): For pointer types, the new_evol
1311         should be sizetype.
1312         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
1313         different right hand side type.
1314         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1315         (chrec_convert_rhs): New function.
1316         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
1317         different right hand side type.
1318         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1319         * tree-chrec.h (chrec_convert_rhs): New prototype.
1320         (build_polynomial_chrec): For pointer types, the right hand
1321         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
1322         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
1323         Remove subtraction case as it is always addition now.
1324         Make sure the offset is converted to sizetype.
1325         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
1326         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
1327         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
1328         PLUS_EXPR in pointer type.
1329         Handle POINTER_PLUS_EXPR.
1330         (tree_to_aff_combination): Likewise.
1331         (force_expr_to_var_cost): Likewise.
1332         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
1333         instead of PLUS_EXPR for pointers.
1334         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
1335         instead of PLUS_EXPR of pointer types.
1336         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
1337         as PLUS_EXPR.
1338         (check_va_list_escapes): Likewise.
1339         (check_all_va_list_escapes): Likewise.
1340         * dwarf2out.c (loc_descriptor_from_tree_1):
1341         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
1342         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
1343         (string_constant): Likewise.
1344         * tree-ssa-address.c (tree_mem_ref_addr): When adding
1345         the offset to the base, use POINTER_PLUS_EXPR.
1346         (add_to_parts): Convert the index to sizetype.
1347         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
1348         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
1349         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
1350         Offset only holds something for PLUS_EXPR.
1351         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
1352         a PLUS_EXPR.
1353         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
1354         and not PLUS_EXPR.
1355         (analyze_accesses_for_modify_stmt): Likewise.
1356         Remove comment about the type being integral type as it is
1357         wrong now.
1358         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
1359         PLUS_EXPR.
1360         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
1361         and not PLUS_EXPR.
1362         Correct the type which the artimentic is done in (is now
1363         sizetype).
1364         Reindent one loop.
1365         * tree-data-ref.c (split_constant_offset): Handle
1366         POINTER_PLUS_EXPR
1367         * tree-affine.c (tree_to_aff_combination): Likewise.
1368         * c-typeck.c (build_unary_op): For pointers create the increment
1369         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
1370         for pointers.
1371         * gimplify.c (gimplify_self_mod_expr): Create a
1372         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1373         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
1374         * tree.def (POINTER_PLUS_EXPR): New tree code.
1375         * tree-predcom.c (ref_at_iteration): If we have a pointer
1376         type do the multiplication in sizetype.
1377         * tree-mudflap.c (mf_xform_derefs_1): Create a
1378         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1379         * tree-ssa-forwprop.c 
1380         (forward_propagate_addr_into_variable_array_index):
1381         Don't expect there to be a cast for the index as that
1382         does not exist anymore.
1383         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
1384         instead of PLUS_EXPR.
1385         Don't check for the first operand of the POINTER_PLUS_EXPR
1386         was the index as it cannot be.
1387         Call forward_propagate_addr_into_variable_array_index with
1388         the SSA_NAME instead of the statement.
1389         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
1390         (compare_constant): Likewise.
1391         (copy_constant): Likewise.
1392         (compute_reloc_for_constant): Likewise.
1393         (output_addressed_constants): Likewise.
1394         (initializer_constant_valid_p): Likewise.
1395         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
1396         Convert the MIN/MAX of the inner type to the outer
1397         type before comparing them.
1398         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
1399         POINTER_PLUS_EXPR instead of PLUS_EXPR.
1400         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
1401         of PLUS_EXPR for pointers.
1402         * tree-inline.c (estimate_num_insns_1): Handle
1403         POINTER_PLUS_EXPR.
1404         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
1405         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1406         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
1407         instead of PLUS_EXPR for the pointer increment statement.
1408         (vect_update_ivs_after_vectorizer): For pointer types, create
1409         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
1410         MULT_EXPR in sizetype.
1411         (vect_gen_niters_for_prolog_loop): Add a cast when creating
1412         byte_misalign.
1413         * tree-object-size.c (plus_expr_object_size): Handle
1414         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
1415         code which is trying to figure out which side is a pointer and 
1416         is the index.
1417         (check_for_plus_in_loops_1): Likewise.
1418         (check_for_plus_in_loops): Likewise.
1419         * c-common.c (pointer_int_sum): Create a
1420         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1421         * tree-ssa-structalias.c (handle_ptr_arith): Handle
1422         only POINTER_PLUS_EXPR.  Removing all the extra
1423         code which is trying to figure out which side is a pointer and 
1424         is the index.
1425         * tree-cfg.c (verify_expr): Add extra checking for pointers and
1426         PLUS_EXPR and MINUS_EXPR.
1427         Also add checking to make sure the operands of POINTER_PLUS_EXPR
1428         are correct.
1429         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
1430         with make_tree, instead of a pointer type.
1431         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
1432         for pointers instead of PLUS_EXPR.
1433         (s390_gimplify_va_arg): Likewise.
1434         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
1435         instead of PLUS_EXPR when doing addition on pointer
1436         types.  Use sizetype for the second operand.
1437         (spu_gimplify_va_arg_expr): Likewise.
1438         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
1439         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
1440         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
1441         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
1442         for the pointer addition and also use size_int/sizetype
1443         for the offset.
1444         (ix86_gimplify_va_arg): Likewise.
1445         Perform BIT_AND_EXPR on sizetype arguments.
1446         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
1447         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
1448         for the pointer additions and also use size_int for the offsets.
1449         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
1450         additions and also use size_int for the offsets.  Perform
1451         BIT_AND_EXPR on sizetype arguments.
1452         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
1453         POINTER_PLUS_EXPR for pointers and create the
1454         BIT_AND_EXPR in sizetype.
1455         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
1456         instead of PLUS_EXPR for pointer addition.
1457         (rs6000_va_start): Likewise.
1458         Also use sizetype for the offset.
1459         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
1460         as PLUS_EXPR/MINUS_EXPR.
1461         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
1462         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
1463         Don't use BIT_AND_EXPR on a pointer type, convert the
1464         expression to sizetype first.
1465         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
1466         for pointers.
1467         (mips_gimplify_va_arg_expr): Likewise.
1468         Don't create BIT_AND_EXPR in a pointer type.
1469
1470 2007-06-15  Eric Christopher  <echristo@apple.com>
1471
1472         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
1473         (x86_64-*-darwin*): Ditto.
1474         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
1475         for above.
1476
1477 2007-06-15  Matthew Wilcox <matthew@wil.cx>
1478
1479         * doc/extend.texi: Document behavior of __attribute__((aligned))
1480         on typedefs.
1481
1482 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1483
1484         * rtlanal.c (note_stores): Improve documentation.
1485
1486 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1487
1488         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
1489         LOCAL_LABEL_PREFIX): Delete.
1490         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
1491         (bfin_internal_label): Delete.
1492
1493 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
1494
1495         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
1496         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
1497         otherwise define to LIBGCC2_TF_CEXT.
1498         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
1499         (LIBGCC_TF_CEXT): Ditto.
1500         (TF_SIZE): Ditto.
1501
1502 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
1503
1504         PR rtl-optimization/32339
1505         * df-scan.c (df_uses_record): Don't modify flags but just add to
1506         it for df_ref_record.
1507
1508 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1509
1510         * tree-mudflap.c: Fix whitespace issues.
1511
1512 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
1513
1514         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
1515
1516 2007-06-14  Eric Christopher  <echristo@apple.com>
1517
1518         * config/i386/sse.md (movdi_to_sse): Rewrite body.
1519         (movv4sf): Use gcc_unreachable instead of abort.
1520
1521 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1522
1523         PR target/32268
1524         * config/i386/sfp-machine.h (CMPtype): New define.
1525         (mach stubs): Use CMPtype instead of int as a return type.
1526
1527 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1528
1529         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
1530         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
1531         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
1532         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
1533         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
1534         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
1535         config/soft-fp/soft-fp.h: Update from glibc CVS.
1536
1537 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1538
1539         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
1540
1541 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1542
1543         PR target/32341
1544         * config/v850/v850.c: Include dataflow header file.
1545         (substitute_ep_register): Fix typo.
1546
1547 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1548
1549         * configure.ac: Fix earlier checkin.
1550         * configure: Regenerated.
1551
1552 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1553
1554         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
1555         * aclocal.m4: Regenerate.
1556         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
1557         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
1558         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
1559         * configure: Regenerate.
1560         * Makefile.in (LOOSE_WARN): Subst loose_warn.
1561
1562         * Makefile.in (quickstrap): Build libgcc too.
1563
1564 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1565
1566         * configure.ac: Add --enable-checking=df.  Explicitly mention that
1567         the variables are initialized as for "release".
1568         * df-core.c: Use it.
1569         * configure: Regenerate.
1570         * config.in: Regenerate.
1571
1572 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
1573
1574         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
1575         validate_replace_rtx instead of replace_rtx.
1576         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
1577
1578 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
1579
1580         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
1581         (DWARF2_UNWIND_INFO): Override default if configured with
1582         SJLJ EH disabled.
1583         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
1584         (ENDFILE_SPEC): Add crtend.o.
1585         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
1586         (ENDFILE_SPEC): Add crtend.o.
1587         (TARGET_USE_JCR_SECTION): Define.
1588         (MD_UNWIND_SUPPORT): Define for 32-bit target.
1589
1590         * config/i386/cygming-crtbegin.c: New file.
1591         * config/i386/cygming-crtend.c: New file.
1592
1593 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
1594
1595         * config/i386/w32-unwind.h: New file.
1596
1597 2007-06-13  Eric Christopher  <echristo@apple.com>
1598
1599         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
1600         the user set a value below STACK_BOUNDARY.
1601
1602 2007-06-13  Thiemo Seufer  <ths@networkno.de>
1603
1604         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
1605         imply -lpthread for -pthread.
1606
1607 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1608
1609         * basic-block.h: Remove the prototype for
1610         free_basic_block_vars.
1611         * cfglayout.h: Remove the prototype for
1612         insn_locators_initialize.
1613         * tree.h: Remove the prototype for emit_line_note.
1614
1615         * tree-ssa-pre.c (mergephitemp): Remove.
1616         (init_pre): Don't use mergephitemp.
1617
1618 2007-06-13  Eric Christopher  <echristo@apple.com>
1619
1620         * config/i386/i386.c (override_options): If we've specified
1621         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
1622
1623 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
1624
1625         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
1626         is defined.
1627
1628 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1629
1630         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
1631         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
1632         (eh_store_handler): New pattern.
1633         (eh_return): Emit it instead of a plain move.
1634
1635 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
1636
1637         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
1638         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
1639         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
1640         def_builtin_const.
1641
1642 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1643
1644         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1645         (find_next_insn_start, find_load): New functions.
1646         (bfin_reorg): Use them to deal with the fact that parallel insns are
1647         no longer represented as a SEQUENCE.
1648
1649 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1650
1651         * config/sparc/sparc.c (sparc_override_options): Initialize
1652         fpu mask correctly.
1653
1654 2007-06-13  Dave Korn  <dave.korn@artimi.com>
1655
1656         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1657         df_get_live_out.
1658
1659 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1660
1661         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1662         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
1663         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
1664         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
1665         tree-vect-transform.c: Fix comment typos.  Follow spelling
1666         conventions.
1667
1668 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1669
1670        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
1671        to the exit block use set.
1672        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
1673        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
1674        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
1675
1676 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1677
1678         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
1679         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
1680         to indicate an error.
1681         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
1682         (dbg_cnt_process_opt): Print an error on a bad argument.
1683         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
1684         * common.opt (-fdbg-cnt-list): New.
1685         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
1686
1687 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
1688
1689         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
1690         flag on ref-all pointers.
1691
1692 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1693
1694         PR middle-end/31579
1695         * expr.c (expand_expr_addr_expr_1): Call expand_expr
1696         for the offset with the modifier as EXPAND_INITIALIZER
1697         if the modifier is EXPAND_INITIALIZER.
1698         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
1699         a register if we had an overflow.
1700
1701 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1702
1703         * real.c (real_isfinite): New.
1704         (real_sqrt): Use it.
1705         * real.h (real_isfinite): New.
1706         * builtins.c: Use it.
1707
1708 2007-06-12  Ian Lance Taylor  <iant@google.com>
1709             Daniel Berlin  <dberlin@dberlin.org>
1710
1711         PR libstdc++/29286
1712         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
1713         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
1714         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
1715         (DECL_NO_TBAA_P): Define.
1716         (struct tree_decl_common): Add no_tbaa_flag field.
1717         * tree-ssa-structalias.c (struct variable_info): Add
1718         no_tbaa_pruning field.
1719         (new_var_info): Initialize no_tbaa_pruning field.
1720         (unify_nodes): Copy no_tbaa_pruning field.
1721         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1722         (dump_solution_for_var): Print no_tbaa_pruning flag.
1723         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
1724         callers.
1725         (compute_tbaa_pruning): New static function.
1726         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
1727         Call compute_tbaa_pruning.
1728         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
1729         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1730         * gimple-low.c (lower_stmt): Likewise.
1731         * tree-gimple.c (is_gimple_stmt): Likewise.
1732         * tree-ssa-operands.c (get_expr_operands): Likewise.
1733         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1734         * tree-inline.c (estimate_num_insns_1): Likewise.
1735         (copy_result_decl_to_var): Likewise.
1736         * expr.c (expand_expr_real_1): Likewise.
1737         * tree-pretty-print.c (dump_generic_node): Likewise.
1738         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
1739         * omp-low.c (omp_copy_decl_2): Likewise.
1740         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
1741         * doc/c-tree.texi (Expression trees): Document
1742         CHANGE_DYNAMIC_TYPE_EXPR.
1743
1744 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1745
1746         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
1747         with !HONOR_NANS and !HONOR_INFINITIES.
1748         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
1749
1750 2007-06-12  Tristan Gingold  <gingold@adacore.com>
1751
1752         * gcov.c: Comments updated.
1753         (source_info): Add file_time field.
1754         (source_index): New variable.
1755         (mutiple_files): New variable.
1756         (generate_results): New function extracted from process_file.
1757         (process_file): Save and restore chain of functions, generate
1758         results and free structures only if not merging results.
1759         (release_structures): File names are now freed in create_file_names
1760         (create_file_names): Free previous file names.
1761         (find_source): File date is now read here and modifications in
1762         source files is checked here.
1763         (read_graph_file): Only reverse order of functions for the current
1764         object file.
1765         (make_gcov_file_name): Do not generate long names if input_name is
1766         NULL.
1767         (output_lines): If merging results do not display graph, data and
1768         runs informations.
1769         Checking source file modification is done in find_source.
1770
1771         * doc/gcov.texi: Append an s to sourcefile.
1772
1773 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1774
1775         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
1776         (forced_nop): New pattern.
1777         * config/bfin/bfin.c: Include "df.h".
1778         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
1779         (bfin_discover_loop): Use df_get_live_in instead of
1780         global_live_at_start.
1781         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
1782         df_analyze when done.
1783         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
1784         the insns.  Use QImode for the final insn in a bundle.  Call
1785         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
1786         gen_nop.
1787         (reorder_var_tracking_notes): New function.
1788         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
1789         update_life_info.  Call df_analyze after scheduling and bundle
1790         generation.  Call reorder_var_tracking_notes if generating these notes.
1791         Call df_finish_pass at the end.
1792
1793 2007-06-12  Dirk Mueller  <dmueller@suse.de>
1794
1795         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
1796         a comparison, not an assignment.
1797
1798 2007-06-12  Olivier Hainque  <hainque@adacore.com>
1799
1800         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
1801         Request walking the subtrees only, leaving the current is_lhs/val_only
1802         untouched.
1803         (convert_non_local_reference): Likewise.
1804
1805 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
1806
1807         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
1808
1809 2007-06-12  Richard Guenther  <rguenther@suse.de>
1810
1811         PR tree-optimization/15353
1812         PR tree-optimization/31657
1813         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
1814         * timevar.def: Add TV_TREE_IFCOMBINE.
1815         * tree-pass.h (pass_tree_ifcombine): Declare.
1816         * tree-ssa-ifcombine.c: New file.
1817         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
1818         * tree-flow.h (blocks_in_phiopt_order): Declare.
1819         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
1820         (tree-ssa-ifcombine.o): New dependencies.
1821
1822 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1823
1824         PR rtl-optimization/32293
1825         * combine.c (simplify_if_then_else): Truncate return from
1826         nonzero_bits() to correct mode.
1827
1828 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1829
1830         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
1831         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
1832
1833 2007-06-11  Diego Novillo  <dnovillo@google.com>
1834
1835         * Makefile.in (reload1.o-warn): Remove.
1836
1837 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
1838
1839         * combine.c (subst): Use reg_overlap_mentioned_p
1840         instead of comparing register numbers directly.
1841
1842 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1843
1844         * reload1.c (mark_home_live_1): Use the mode parameter.
1845
1846 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1847
1848         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
1849         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
1850         word "deferred".
1851         * df-core.c: Ditto.
1852
1853 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
1854
1855         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
1856
1857 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1858
1859         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
1860         from integer registers.
1861         (FP mode splitters): Handle TFmode.
1862
1863 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
1864
1865         * tree-ssa-structalias.c (find_what_p_points_to): Return false
1866         for ref-all pointers that point-to anything.
1867
1868 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
1869
1870         * config/arm/arm.c (arm_output_dwarf_dtprel,
1871         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
1872
1873 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1874
1875         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
1876         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
1877         to memory moves.
1878
1879 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1880
1881         * gcc/tree.c (signed_or_unsigned_type_for): New.
1882         (unsigned_type_for): Use signed_or_unsigned_type_for.
1883         (signed_type_for): Use signed_or_unsigned_type_for.
1884         * gcc/tree.h (signed_or_unsigned_type_for): New.
1885         (get_signed_or_unsigned_type): Remove.
1886         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
1887         lang_hooks.types.signed_type
1888         (size_diffop): Likewise.
1889         (all_ones_mask_p): Likewise.
1890         (build_range_check): Likewise.
1891         (fold_cond_expr_with_comparison): Likewise.
1892         (fold_cond_expr_with_comparison): Likewise.
1893         (unextend): Likewise.
1894         (extract_muldiv_1): Likewise.
1895         (fold_single_bit_test_into_sign_test): Likewise.
1896         (fold_binary): Likewise.
1897         (fold_ternary): Likewise.
1898         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
1899         instead of get_signed_or_unsigned_type.
1900         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1901         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1902         * gcc/expr.c (signed_or_unsigned_type_for): Use
1903         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
1904         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
1905         (lhd_signed_or_unsigned_type): Remove.
1906         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
1907         signed_or_unsigned_type.
1908         (lhd_signed_or_unsigned_type): Remove.
1909         * gcc/expmed.c (make_tree): Use signed_type_for instead of
1910         lang_hooks.types.signed_type.
1911         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
1912         c_common_signed_type instead of lang_hooks.types.signed_type.
1913         (c_common_unsigned_type): New.
1914         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
1915         (shorten_compare): Use c_common_unsigned_type instead of
1916         c_common_signed_or_unsigned_type.
1917         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
1918         unsigned_type_for.
1919         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
1920         lang_hooks.types.signed_type.
1921         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1922         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
1923         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
1924         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
1925         instead of unsigned_type_for.
1926         * gcc/c-decl.c (groakdeclarator): Likewise.
1927         * gcc/c-typeck.c (convert_for_assignment): Likewise.
1928         * gcc/c-common.h (c_common_unsigned_type): New.
1929
1930 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1931
1932         PR target/32280
1933         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
1934         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
1935
1936 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1937
1938         PR middle-end/32279
1939         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
1940         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
1941
1942 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
1943             Sebastian Pop  <sebpop@gmail.com>
1944
1945         * lambda-code.c (remove_iv): New.
1946         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
1947
1948 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
1949
1950         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
1951         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
1952         * tree-ssa-loop-prefetch.c: Include optabs.h.
1953         (FENCE_FOLLOWING_MOVNT): New macro.
1954         (struct mem_ref): Add independent_p and storent_p fields.
1955         (record_ref): Initalize the new fields.
1956         (gather_memory_references_ref): Return true if the reference
1957         could be analysed.
1958         (gather_memory_references): Check whether all memory accesses
1959         in loop were recorded.
1960         (should_issue_prefetch_p): Return false for nontemporal stores.
1961         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
1962         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
1963         (determine_loop_nest_reuse): Detect independent memory references.
1964         (loop_prefetch_arrays): Call mark_nontemporal_stores.
1965         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
1966         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
1967         * config/i386/i386.h (x86_mfence): Declare.
1968         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
1969         * config/i386/i386.c (x86_mfence): New variable.
1970         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
1971
1972         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
1973         * optabs.c (init_optabs): Initialize storent_optab.
1974         * optabs.h (enum optab_index): Add OTI_storent.
1975         (storent_optab): Declare.
1976         * genopinit.c (optabs): Add initialization for storent_optab.
1977         * tree.h (MOVE_NONTEMPORAL): New macro.
1978         * expr.c (expand_assignment, store_expr, store_constructor_field,
1979         store_constructor, store_field, expand_expr_real_1): Propagate
1980         nontemporality of the expanded store.
1981         (emit_storent_insn): New function.
1982         * expr.h (expand_assignment, store_expr): Declaration changed.
1983         * function.c (assign_parm_setup_reg): Pass false as nontemporality
1984         to expand_assignment.
1985         * stmt.c (expand_asm_expr): Ditto.
1986         * calls.c (initialize_argument_information): Pass false as
1987         nontemporality to store_expr.
1988         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
1989         storentsi): New.
1990
1991 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1992
1993         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
1994         parameter, use it.
1995         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
1996
1997 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1998
1999         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
2000         and allow DECL_P here.
2001
2002 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
2003
2004         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
2005         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
2006         track of the size of the expression.
2007         * cfghooks.c (merge_blocks): Remove block from loops structure only
2008         after call of the merge_blocks hook.
2009
2010 2007-06-09  Tom Tromey  <tromey@redhat.com>
2011
2012         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
2013         (deprecated_state): Removed.
2014         (start_decl): Update.
2015         (enum deprecated_states): Moved earlier.
2016         (groktypename): Update.
2017         (push_parm_decl): Likewise.
2018         (grokfield): Likewise.
2019         (start_function): Likewise.
2020
2021 2007-06-09  Ian Lance Taylor  <iant@google.com>
2022
2023         PR tree-optimization/32169
2024         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
2025         CONVERT_EXPR, check whether min and max both converted to an
2026         overflow infinity representation.
2027
2028 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
2029
2030         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
2031         not inserted on the edge.
2032
2033 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
2034
2035         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
2036         instructions if they are supported.
2037         (__divsi3, __umodsi3, __modsi3): Likewise.
2038         (__ashldi3, __ashrdi3, __lshrdi3): New.
2039         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
2040
2041 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
2042             Tony Linthicum <tony.linthicum@amd.com>
2043
2044         * doc/extend.texi: Add fvect-cost-model flag.
2045         * common.opt (fvect-cost-model): New flag.
2046         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
2047         cost fields in stmt_vec_info struct for STMT.
2048         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
2049         fields in stmt_vec_info struct and access functions for the same.
2050         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
2051         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
2052         load, store and vector to scalar operation.
2053         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
2054         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
2055         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
2056         (TARG_VEC_STORE_COST): Define cost of vector store.
2057         (vect_estimate_min_profitable_iters): Define new function.
2058         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
2059         check to evaluate if loop iterations are less than minimum profitable
2060         iterations determined by cost model or minimum vect loop bound defined
2061         by user, whichever is more conservative.
2062         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
2063         run-time check to evaluate if loop iterations are less than minimum
2064         profitable iterations determined by cost model or minimum vect loop
2065         bound defined by user, whichever is more conservative.
2066         (vect_estimate_min_profitable_iterations): New function to estimate
2067         mimimimum iterartions required for vector version of loop to be
2068         profitable over scalar version.
2069         (vect_model_reduction_cost): New function.
2070         (vect_model_induction_cost): New function.
2071         (vect_model_simple_cost): New function.
2072         (vect_cost_strided_group_size): New function.
2073         (vect_model_store_cost): New function.
2074         (vect_model_load_cost): New function.
2075         (vectorizable_reduction): Call vect_model_reduction_cost during
2076         analysis phase.
2077         (vectorizable_induction): Call vect_model_induction_cost during
2078         analysis phase.
2079         (vectorizable_load): Call vect_model_load_cost during analysis phase.
2080         (vectorizable_store): Call vect_model_store_cost during analysis phase.
2081         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
2082         vectorizable_promotion, vectorizable_demotion): Call
2083         vect_model_simple_cost during analysis phase.
2084
2085 2007-06-08  Simon Baldwin  <simonb@google.com>
2086
2087         * reg-stack.c (get_true_reg): Readability change.  Moved default case
2088         label into direct switch statement scope.
2089
2090 2007-06-08  Simon Baldwin  <simonb@google.com>
2091
2092         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
2093         in gcc_assert() with '==' comparison.
2094
2095 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2096
2097         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
2098         TARGET_ABM handling of x86_popcnt variable.
2099
2100 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2101
2102         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
2103         __builtin_copysignq and __builtin_infq built-in functions.
2104
2105 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2106
2107         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
2108         SSE4.2 section.  Correct built-in function names in SSE4A section.
2109
2110 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2111
2112         PR tree-optimization/32243
2113         * tree-vect-transform.c (vectorizable_type_promotion): Move check
2114         for ncopies after ratio check between nunits_out and nunits_in.
2115         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
2116
2117 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
2118
2119         PR tree-optimization/32224
2120         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
2121         vectorization upon a non GIMPLE_MODIFY_STMT.
2122
2123 2007-06-08  Christian Bruel  <christian.bruel@st.com>
2124
2125         PR target/29953
2126         * config/sh/sh.md (doloop_end): New pattern and splitter.
2127         * loop-iv.c (simple_rhs_p): Check for hardware registers.
2128
2129 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
2130
2131         PR middle-end/32209
2132         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
2133         functions.
2134         (verify_dominators): Do not change dominance tree.
2135
2136 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2137
2138         * config/sh/constraints.md: New file.
2139         * config/sh/sh.c: Include tm-constrs.h.
2140         (reg_class_from_letter): Remove.
2141         (prepare_cbranch_operands): Use satisfies_constraint_*
2142         function instead of macro.
2143         (andcosts, broken_move, sh_secondary_reload): Likewise.
2144         * config/sh/predicates.md (trapping_target_operand): Likewise.
2145         (and_operand, arith_operand, arith_reg_or_0_operand,
2146         cmp_operand, logical_operand, target_operand,
2147         ua_address_operand, ua_offset, xor_operand): Likewise.
2148         * config/sh/sh.md: Include constraints.md.
2149         (*movsicc_t_false): Use satisfies_constraint_* function
2150         instead of macro.
2151         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
2152         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
2153         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
2154         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
2155         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
2156         (REG_CLASS_FROM_CONSTRAINT): Remove.
2157         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
2158         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
2159         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
2160         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
2161         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2162         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
2163         function instead of macro.
2164         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2165         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
2166         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
2167         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
2168         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
2169         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
2170         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
2171         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
2172         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
2173         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
2174         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
2175         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
2176         EXTRA_CONSTRAINT_STR): Likewise.
2177         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
2178
2179 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2180
2181         * config/i386/darwin.h (STACK_BOUNDARY): Define.
2182
2183 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
2184
2185         PR c++/30759
2186         * c-common.h (flag_cpp0x): Replaced by...
2187         (cxx_dialect): ... this new variable specifying the C++ dialect that
2188         is used.
2189         * c-common.c (flag_cpp0x): Removed.
2190         (cxx_dialect): Defined.
2191         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
2192         cxx_dialect.
2193         * c-opts.c (c_common_post_options): Likewise.
2194         (set_std_cxx98): Set cxx_dialect to cxx98.
2195         (set_std_cxx0x): Set cxx_dialect to cxx0x.
2196
2197 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2198             Hui-May Chang <hm.chang@apple.com>
2199
2200         * doc/invoke.texi (Darwin Options): Update documentation for
2201         -mmacosx-version-min.
2202         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
2203         * config/darwin-driver.c: New file.
2204         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
2205         * config/t-darwin (darwin-driver.o): New rule.
2206
2207         * config/darwin-c.c (version_as_macro): Ignore low digit.
2208
2209 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
2210
2211         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
2212         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
2213         (CSGNMODE): New mode macro.
2214         (CSGNVMODE): New mode attribute.
2215         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
2216         expander using CSGNMODE mode macro.  Handle TFmode.
2217         (copysign<mode>3_const): Rename from copysignsf3_const and
2218         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
2219         Handle TFmode.
2220         (copysign<mode>3_var): Rename from copysignsf3_var and
2221         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
2222         Handle TFmode.
2223         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
2224         mode macro.  Handle TFmode.
2225         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
2226         (iortf3, *iortf3): Ditto.
2227         (xortf3, *xortf3): Ditto.
2228         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
2229         TFmode and TImode masks.
2230         (ix86_expand_copysign): Expand TFmode copysign insn.
2231         (IX86_BUILTIN_INFQ): New.
2232         (IX86_BUILTIN_FABSQ): Ditto.
2233         (IX86_BUILTIN_COPYSIGNQ): Ditto.
2234         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
2235         [__builtin_fabsq]: Ditto.
2236         [__builtin_copysignq]: Ditto.
2237         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
2238         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
2239         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
2240         ix86_expand_binop_builtin().
2241
2242 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
2243
2244         * config/xtensa/lib1funcs.asm: Clean up whitespace.
2245
2246 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
2247
2248         PR target/31850
2249         * rtl.h (push_to_sequence2): New.
2250         * emit-rtl.c (push_to_sequence2): New.
2251         * function.c (assign_parm_data_all): Add new fields.
2252         (assign_parm_setup_block): Call push_to_sequence2 instead of
2253         push_to_sequence.
2254         (assign_parm_setup_reg): Ditto.
2255         (assign_parm_setup_stack): Ditto.
2256         (assign_parms_unsplit_complex): Ditto.
2257         (assign_parms): Change field name.
2258
2259 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
2260
2261         PR tree-optimization/32220
2262         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
2263         phi node is reached before defining statement.
2264
2265 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2266
2267         PR tree-opt/32231
2268         * tree-vect-transform.c (vectorizable_call): Call update_stmt
2269         after changing the right hand side of the assignment.
2270
2271 2007-06-06  Eric Christopher  <echristo@apple.com>
2272
2273         * config.gcc (i?86-*-darwin*): Remove arch parameter.
2274         (x86_64-*-darwin*): Ditto.
2275         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
2276         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2277
2278 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2279
2280         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
2281         coding conventions.
2282         (add_key): Likewise.
2283         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
2284         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
2285         variable names.
2286         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
2287         (add_cost_one_coalesce): Likewise.
2288         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
2289         variable names. Rename orig to orig_name for consistency.
2290         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
2291         conventions.
2292         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
2293         (record_equivalences_from_stmt): Likewise.
2294         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
2295         the coding conventions.
2296         (memory_ssa_name_same): Likewise.
2297         (dse_optimize_stmt): Likewise.
2298         (dse_record_phis): Likewise.
2299         (dse_finalize_block): Likewise.
2300         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
2301         keywords as variable names.
2302         (may_move_till): Cast according to the coding conventions.
2303         (force_move_till_expr): Avoid using C++ keywords as variable names.
2304         (force_move_till): Cast according to the coding conventions.
2305         (memref_hash): Likewise.
2306         (memref_eq): Likewise.
2307         (gather_mem_refs_stmt): Likewise.
2308         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
2309         keywords as variable names.
2310         (idx_find_step): Cast according to the coding conventions.
2311         (idx_record_use): Likewise.
2312         (find_depends): Likewise.
2313         (prepare_decl_rtl): Likewise.
2314         (mbc_entry_hash): Likewise.
2315         (mbc_entry_eq): Likewise.
2316         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
2317         (simplify_replace_tree): Avoid using C++ keywords as variable names.
2318         (idx_infer_loop_bounds): Cast according to the coding conventions.
2319         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
2320         * tree-ssa-math-opts.c (occ_new ): Likwise.
2321         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
2322         macros.
2323         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
2324         names.
2325         (add_use_op): Likewise.
2326         (add_vop): Likewise.
2327         (add_vuse_op): Likewise.
2328         (add_vdef_op): Likewise.
2329         (get_expr_operands): Likewise.
2330         (push_stmt_changes): Use type safe memory macros.
2331         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
2332         keywords as variable names.
2333         (conditional_replacement): Likewise.
2334         (minmax_replacement): Likewise.
2335         (abs_replacement): Likewise.
2336         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
2337         coding conventions.
2338         (insert_fake_stores): Avoid using C++ keywords as variable names.
2339         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
2340         conventions.
2341         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
2342         (heapvar_insert): Use type safe memory macros.
2343         (new_var_info): Cast according to the coding conventions.
2344         (new_constraint): Likewise.
2345         (remove_preds_and_fake_succs): Use type safe memory macros.
2346         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
2347         conventions.
2348         (thread_single_edge): Likewise.
2349         (thread_through_loop_header): Likewise.
2350
2351 2007-06-06  Eric Christopher  <echristo@apple.com>
2352
2353         * config/i386/i386.c (override_options): Move handling
2354         of TARGET_SUBTARGET* earlier.
2355
2356 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
2357
2358         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
2359         use %n on printf.
2360
2361 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
2362
2363         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
2364         emited outside of basic block.
2365         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
2366         the created blocks.
2367         * rtl.h (delete_insn_chain): Declaration changed.
2368         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
2369         non-removed insns.
2370         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
2371         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
2372         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
2373         to delete_insn_chain.
2374         (rtl_verify_flow_info_1): Verify that the insns in header and footer
2375         do not have bb field set.
2376         (rtl_verify_flow_info): Verify that insns between basic blocks do not
2377         have bb field set.
2378         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
2379         * cfgcleanup.c (try_optimize_cfg): Ditto.
2380
2381 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2382
2383         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
2384         (lambda_body_vector_new): Use type safe memory macros.
2385         (lambda_linear_expression_new): Likewise.
2386         (lambda_loopnest_new): Likewise.
2387         (lambda_lattice_new): Likewise.
2388         (replace_uses_equiv_to_x_with_y): Cast according to the coding
2389         conventions. Use type safe memory macros.
2390         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
2391         (lambda_body_vector_s): Likewise.
2392         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
2393         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
2394
2395 2007-06-06  Richard Guenther  <rguenther@suse.de>
2396
2397         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
2398         if we need to schedule cfg_cleanup.
2399         (tree_ssa_forward_propagate_single_use_vars): Do so.
2400
2401 2007-06-06  Ian Lance Taylor  <iant@google.com>
2402
2403         * fold-const.c (merge_ranges): If range_successor or
2404         range_predecessor fail, just return 0.
2405
2406 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2407
2408         PR tree-optimization/32216
2409         * tree-vectorizer.c (supportable_widening_operation): Determine
2410         signedness of FIX_TRUNC_EXPR from output operand.
2411         (supportable_narrowing_operation): Ditto.
2412         * tree-vect-generic.c (expand_vector_operations_1): Determine
2413         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
2414         from input operand.
2415
2416 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2417
2418         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
2419         (struct pta): ...from here. Change flags to unsigned to avoid
2420         excessive casting (as it is used as a bit mask).
2421         (override_options): Add casts according to the coding convenventions.
2422         (x86_64_elf_unique_section): Likewise.
2423         (examine_argument): Avoid using C++ keywords as variable names.
2424         (construct_container): Likewise.
2425         (legitimize_pic_address): Likewise.
2426         (get_dllimport_decl): Cast according to the coding conventions. Use
2427         type safe memory macros.
2428         (legitimize_address): Cast according to the coding conventions.
2429         (emit_i387_cw_initialization): Corrected the type of slot to enum
2430         ix86_stack_slot.
2431         (ix86_init_machine_status): Use type safe memory macros.
2432         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
2433         (bdesc_pcmpistr): Likewise.
2434         (bdesc_crc32): Likewise.
2435         (bdesc_sse_3arg): Likewise.
2436         (bdesc_2arg): Likewise.
2437         (bdesc_1arg): Likewise.
2438         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
2439         (ix86_expand_sse_pcmpistr): Likewise.
2440         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
2441         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
2442         int to match the langhook definition.
2443         (ix86_builtin_conversion): Change the type of code to unsigned init to
2444         match the langhook definition.
2445         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
2446         names.
2447         (ix86_preferred_output_reload_class): Likewise.
2448         (ix86_cannot_change_mode_class): Likewise.
2449         (ix86_memory_move_cost): Likewise.
2450         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
2451         avoid excessive casting later on.
2452         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
2453
2454 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2455
2456         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
2457         as flags setting insn.
2458         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
2459
2460 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2461
2462         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
2463         (UNSPEC_ROUND): New.
2464         ("sse4_1_round<mode>2"): New insn pattern.
2465         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
2466         SSE4.1 targets.
2467         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
2468         expander using SSEMODEF mode macro.  Expand using
2469         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2470         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
2471         expander using SSEMODEF mode macro.  Expand using
2472         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2473         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
2474         expander using SSEMODEF mode macro.  Expand using
2475         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2476         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
2477         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
2478         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
2479         UNSPEC_ROUNDS.
2480
2481 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
2482             Sebastian Pop  <sebpop@gmail.com>
2483
2484         * lambda.h (build_linear_expr): New.
2485         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
2486         Use build_linear_expr, call fold and force_gimple_operand.
2487         (lambda_loopnest_to_gcc_loopnest): Check that there is
2488         something to insert.
2489         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
2490
2491 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
2492
2493         PR preprocessor/23479
2494         * doc/extend.texi: Document the 0b-prefixed binary integer
2495         constant extension.
2496
2497 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2498
2499         PR tree-optimization/32215
2500         * tree-vectorizer.c (supportable_widening_operation): Return false
2501         for unsupported FIX_TRUNC_EXPR tree code.
2502         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
2503
2504 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
2505
2506         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
2507         register on SPE targets.  Change documentation to reflect
2508         reality.
2509         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2510         Change FIXED_SCRATCH to 14 and document why we're keeping r14
2511         out of the register allocation pool.
2512         (rs6000_reg_live_or_pic_offset_p): New function.
2513         (rs6000_emit_prologue): Move the actual saving of LR up to free
2514         r0 for holding r11.  Split saving of SPE 64-bit registers into
2515         its own case.  Ensure that offsets will always be in-range for
2516         'evstdd' by using r11 as a scratch register to point at the start
2517         of the SPE save area.  Save r11 if necessary, as it is the static
2518         chain register.
2519         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
2520         into its own case.  Ensure that offsets will always be in-range
2521         for 'evldd' by using r11 as a scratch register to point at the
2522         start of the SPE save area.  Also adjust r11 when restoring
2523         the stack pointer to compensate for pre-loading r11.
2524
2525 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
2526
2527         * cfg.c (init_flow): Use type safe memory macros.
2528         (alloc_block): Likewise.
2529         (unchecked_make_edge): Likewise.
2530         (dump_flow_info): Avoid using C++ keywords as variable names.
2531         (copy_original_table_clear): Cast according to the coding conventions.
2532         (copy_original_table_set): Likewise.
2533         * cfgexpand (label_rtx_for_bb): Likewise.
2534         (expand_gimple_basic_block): Likewise.
2535         * cfghooks.c (dump_bb): Likewise.
2536         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
2537         variable names.
2538         (lv_add_condition_to_bb): Likewise.
2539         * cfglayout (relink_block_chain): Cast according to the coding
2540         conventions.
2541         (fixup_reorder_chain): Likewise.
2542         (fixup_fallthru_exit_predecessor): Likewise.
2543         * cfgloop.c (glb_enum_p): Likewise.
2544         (get_exit_description): Likewise.
2545         (dump_recorded_exit): Likewise.
2546         * cfgloop.h (enum loop_estimation): Move out of struct scope...
2547         (struct loop): ... from here.
2548         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
2549         conventions.
2550         * cfgrtl.c (rtl_create_basic_block): Likewise.
2551         (rtl_split_block): Likewise.
2552         (rtl_dump_bb): Likewise.
2553         (cfg_layout_split_block): Likewise.
2554         (init_rtl_bb_info): Use typesafe memory macros.
2555
2556         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
2557         * graphds.h: Updated all usages of edge to graph_edge.
2558         * graphds.c: Likewise.
2559         * cfgloopanal.c: Likewise.
2560
2561 2007-06-05  Ian Lance Taylor  <iant@google.com>
2562
2563         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
2564         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
2565         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
2566         expression.
2567         (test_for_singularity): Likewise.
2568
2569 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2570
2571         * config/i386/constraints.md ("Y2"): Replaced by ...
2572         ("Yt"): This.
2573         * config/i386/i386.md: Likewise.
2574         * config/i386/mmx.md: Likewise.
2575         * config/i386/sse.md: Likewise.
2576
2577 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2578
2579         * config/i386/constraints.md ("z"): Replaced by ...
2580         ("Y0"): This.
2581         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
2582         (sse4_1_blendvps): Likewise.
2583         (sse4_1_pblendvb): Likewise.
2584         (sse4_2_pcmpestr): Likewise.
2585         (sse4_2_pcmpestrm): Likewise.
2586         (sse4_2_pcmpestr_cconly): Likewise.
2587         (sse4_2_pcmpistr): Likewise.
2588         (sse4_2_pcmpistrm): Likewise.
2589         (sse4_2_pcmpistr_cconly): Likewise.
2590
2591 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
2592
2593         * matrix-reorg.c (transform_access_sites): Fix computation.
2594         (transform_allocation_sites): Same.
2595
2596 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2597
2598         * config/i386/i386.c (override_options): Use
2599         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
2600
2601 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2602
2603         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
2604         (nonimm_not_xmm0_operand): Ditto.
2605         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
2606         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
2607         as operand[2] predicate.  Require "z" class XMM register for
2608         operand[3].  Adjust asm template.
2609         ("sse4_1_blendvpd"): Ditto.
2610         ("sse4_1_pblendvb"): Ditto.
2611         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
2612         force op2 into xmm0 register for variable blend instructions.
2613
2614 2007-06-04  Tom Tromey  <tromey@redhat.com>
2615
2616         * c-tree.h (start_enum): Update.
2617         (build_enumerator): Likewise.
2618         * c-decl.c (enum_next_value): Removed.
2619         (enum_overflow): Likewise.
2620         (start_enum): Add c_enum_contents argument.  Don't use globals.
2621         (build_enumerator): Likewise.
2622         * c-tree.h (struct c_enum_contents): New struct.
2623
2624 2007-06-04  Tom Tromey  <tromey@redhat.com>
2625
2626         * c-common.c (c_common_get_alias_set): Fix indentation.
2627
2628 2007-06-04  Ian Lance Taylor  <iant@google.com>
2629
2630         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
2631         to overflow, reduce overflow infinity to regular infinity.
2632         (vrp_var_may_overflow): New static function.
2633         (vrp_visit_phi_node): Check vrp_var_may_overflow.
2634
2635 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
2636
2637         * stor-layout.c (layout_type): Remove duplicate code.
2638
2639 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
2640
2641         PR c/32191
2642         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
2643         before build_common_builtin_nodes ().
2644
2645 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
2646
2647         PR target/31733
2648         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2649
2650 2007-06-04  Jan Hubicka  <jh@suse.cz>
2651
2652         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2653         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2654         instead of _stat version.
2655
2656 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2657
2658         PR tree-optimization/32194
2659         * tree-predcom.c (determine_offset): Check that both references have
2660         the same type.
2661
2662 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2663
2664         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
2665         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
2666         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
2667         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
2668         Add argument to iterate_fix_dominators call.
2669         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
2670         * gcse.c (hoist_code): Change domby to vector.
2671         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
2672         Add argument to iterate_fix_dominators call.
2673         * loop-doloop.c (doloop_modify): Changed recount_dominator to
2674         recompute_dominator.
2675         * lambda-code.c (perfect_nestify): Ditto.
2676         * cfgloopanal.c: Include graphds.h.
2677         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
2678         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
2679         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
2680         add_edge call.
2681         * graphds.c: New file.
2682         * graphds.h: New file.
2683         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
2684         (get_dominated_by, get_dominated_by_region): Change return type to
2685         vector.
2686         (verify_dominators): Recompute all dominators and compare the results.
2687         (recount_dominator): Renamed to ...
2688         (recompute_dominator): ... this.  Do not check that the block is
2689         dominated by entry.
2690         (iterate_fix_dominators): Reimplemented.
2691         (prune_bbs_to_update_dominators, root_of_dom_tree,
2692         determine_dominators_for_sons): New functions.
2693         * et-forest.c (et_root): New function.
2694         * et-forest.h (et_root): Declare.
2695         * Makefile.in (graphds.o): Add.
2696         (cfgloopanal.o): Add graphds.h dependency.
2697         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
2698         * basic-block.h (get_dominated_by, get_dominated_by_region,
2699         iterate_fix_dominators): Declaration changed.
2700         (recount_dominator): Renamed to ...
2701         (recompute_dominator): ... this.
2702         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
2703         (thread_through_all_blocks): Do not free dominance info.
2704
2705 2007-06-03  Andreas Schwab  <schwab@suse.de>
2706
2707         * config/m68k/m68k.c (override_options): Don't override
2708         REAL_MODE_FORMAT.
2709         * config/m68k/m68k-modes.def (SF, DF): Define to use
2710         motorola_single_format and motorola_double_format, resp.
2711         * real.c (motorola_single_format): Renamed from
2712         coldfire_single_format.
2713         (motorola_double_format): Renamed from coldfire_double_format.
2714         (encode_ieee_extended): Generate a proper canonical NaN image
2715         respecting canonical_nan_lsbs_set.
2716         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
2717         true.
2718         * real.h: Adjust declarations.
2719
2720 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2721
2722         PR target/32163
2723         * config/sh/sh.md (symGOT_load): Don't schedule insns when
2724         the symbol is generated with the stack protector.
2725
2726 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
2727
2728         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
2729         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
2730         "interrupt".
2731         * doc/extend.texi (interrupt): Mention m68k.
2732
2733 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
2734
2735         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
2736         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
2737         (ix86_expand_sse_pcmpestr): Do not check operands for
2738         "register_operand", when insn operand predicate is "register_operand".
2739         (ix86_expand_sse_pcmpistr): Ditto.
2740
2741 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
2742             Uros Bizjak  <ubizjak@gmail.com>
2743
2744         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
2745         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
2746         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
2747         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
2748         * config/i386/constraints.md ("z"): New register constraint
2749         for members of SSE_FIRST_REG class.
2750         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
2751         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
2752         SSE_FIRST_REG class.
2753         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
2754         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
2755         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
2756         (IX86_BUILTIN_PCMPESTRM128): Likewise.
2757         (IX86_BUILTIN_PCMPESTRA128): Likewise.
2758         (IX86_BUILTIN_PCMPESTRC128): Likewise.
2759         (IX86_BUILTIN_PCMPESTRO128): Likewise.
2760         (IX86_BUILTIN_PCMPESTRS128): Likewise.
2761         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
2762         (IX86_BUILTIN_PCMPISTRI128): Likewise.
2763         (IX86_BUILTIN_PCMPISTRM128): Likewise.
2764         (IX86_BUILTIN_PCMPISTRA128): Likewise.
2765         (IX86_BUILTIN_PCMPISTRC128): Likewise.
2766         (IX86_BUILTIN_PCMPISTRO128): Likewise.
2767         (IX86_BUILTIN_PCMPISTRS128): Likewise.
2768         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
2769         (struct builtin_description): Change "flag" field to unsigned.
2770         (bdesc_pcmpestr): New builtin description table.
2771         (bdesc_pcmpistr): Likewise.
2772         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
2773         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
2774         Initialize pcmp[ei]str[im] insns for SSE4.2.
2775         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
2776         (ix86_expand_sse_pcmpistr): Likewise.
2777         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
2778         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
2779         (UNSPEC_PCMPISTR): Likewise.
2780         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
2781         (sse4_2_pcmpestri):New isns pattern.
2782         (sse4_2_pcmpestrm): Likewise.
2783         (sse4_2_pcmpestr_cconly): Likewise.
2784         (sse4_2_pcmpistr): New insn patern and splitter.
2785         (sse4_2_pcmpistri):New isns pattern.
2786         (sse4_2_pcmpistrm): Likewise.
2787         (sse4_2_pcmpistr_cconly): Likewise.
2788         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
2789         in SSE4.2.
2790
2791 2007-06-01  David Daney  <ddaney@avtrex.com>
2792
2793         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
2794         LOADGP_ABSOLUTE and not binds_local_p.
2795
2796 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
2797
2798         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
2799
2800 2007-06-01  Ian Lance Taylor  <iant@google.com>
2801
2802         * tree-vrp.c (compare_name_with_value): Always set
2803         used_strict_overflow if we get a result from the variable itself.
2804
2805 2007-06-01  Ian Lance Taylor  <iant@google.com>
2806
2807         PR rtl-optimization/31455
2808         * lower-subreg.c (find_decomposable_subregs): Don't decompose
2809         subregs which have a cast between modes which are not tieable.
2810
2811 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
2812
2813         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
2814         breaks after return statements.
2815
2816 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2817
2818         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
2819         only after no_new_pseudos.
2820
2821 2007-05-31  Eric Christopher  <echristo@apple.com>
2822
2823         * expr.c (convert_move): Assert that we don't have a BLKmode
2824         operand.
2825         (store_expr): Handle BLKmode moves by calling emit_block_move.
2826
2827 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2828
2829         * c-typeck.c (build_indirect_ref): Include type in error message.
2830         (build_binary_op): Pass types to binary_op_error.
2831         * c-common.c (binary_op_error): Take two type arguments, print out
2832         types with error.
2833         * c-common.h (binary_op_error): Update prototype.
2834
2835 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2836
2837         * config/i386/i386.c: Correct coments on -mno-sse4.
2838
2839 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2840
2841         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
2842         (x86_64-*-*): Likewise.
2843         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
2844         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
2845         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
2846         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
2847         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
2848         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
2849         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
2850         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
2851         (OPTION_MASK_ISA_SSE4): Likewise.
2852         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
2853         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
2854         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
2855         (override_options): Support SSE4.2.
2856         (ix86_build_const_vector): Support SImode and DImode.
2857         (ix86_build_signbit_mask): Likewise.
2858         (ix86_expand_int_vcond): Support V2DImode.
2859         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
2860         (IX86_BUILTIN_CRC32HI): Likewise.
2861         (IX86_BUILTIN_CRC32SI): Likewise.
2862         (IX86_BUILTIN_CRC32DI): Likewise.
2863         (IX86_BUILTIN_PCMPGTQ): Likewise.
2864         (bdesc_crc32): Likewise.
2865         (bdesc_sse_3arg): Likewise.
2866         (ix86_expand_crc32): Likewise.
2867         (ix86_init_mmx_sse_builtins): Support SSE4.2.
2868         (ix86_expand_builtin): Likewise.
2869         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2870         __SSE4_2__ for -msse4.2.
2871         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
2872         (CRC32MODE): Likewise.
2873         (crc32modesuffix): Likewise.
2874         (crc32modeconstraint): Likewise.
2875         (sse4_2_crc32<mode>): Likewise.
2876         (sse4_2_crc32di): Likewise.
2877         * config/i386/i386.opt (msse4.2): New for SSE4.2.
2878         (msse4): Likewise.
2879         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
2880         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
2881         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
2882         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
2883         (vcondu<mode>): Likewise.
2884         * doc/extend.texi: Document SSE4.2 built-in functions.
2885         * doc/invoke.texi: Document -msse4.2/-msse4.
2886
2887 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2888
2889         PR tree-optimization/32160
2890         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
2891         variable as gimple reg.
2892         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
2893
2894 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
2895
2896         * gcc.c (main): Don't consider linker options when issuing the
2897         warning about a linker input file not being used.
2898
2899 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2900
2901         * tree-vrp.c (compare_names): Initialize sop.
2902
2903 2007-05-30  Dirk Mueller  <dmueller@suse.de>
2904
2905         * cgraphunit.c (cgraph_analyze_function): Remove
2906         computation of inline parameters.
2907
2908 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
2909
2910         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
2911
2912 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
2913
2914         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
2915         Add vx-common.h.  Include vxworks.h between vx-common.h and
2916         arm/vxworks.h.
2917         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
2918         redefining.
2919         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
2920         (TARGET_ASM_DESTRUCTOR): Likewise.
2921         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
2922         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
2923         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2924         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
2925         (VXWORKS_ENDIAN_SPEC): Define.
2926         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
2927         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
2928         VXWORKS_* equivalents.
2929         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
2930         (ASM_FILE_START): Delete.
2931         (TARGET_VERSION): Reformat.
2932         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
2933         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
2934         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
2935         (FPBIT, DPBIT): Define.
2936         (fp-bit.c, dp-bit.c): New rules.
2937         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
2938         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
2939         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
2940         * config/arm/arm.h: Include vxworks-dummy.h.
2941         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
2942         Mark with ATTRIBUTE_UNUSED.
2943         (arm_override_options): Do not allow VxWorks RTP PIC to be used
2944         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
2945         make it incompatible with -msingle-pic-base.
2946         (arm_function_ok_for_sibcall): Return false for calls that might
2947         go through a VxWorks PIC PLT entry.
2948         (require_pic_register): New function, split out from...
2949         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
2950         for VxWorks RTPs.
2951         (arm_load_pic_register): Handle the VxWorks RTP initialization
2952         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
2953         (arm_emit_call_insn): New function.
2954         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
2955         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
2956         (pic_offset_arm): New pattern.
2957         (call, call_value): Use arm_emit_call_insn.
2958         (call_internal, call_value_internal): New expanders.
2959         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
2960         VxWorks unless __PIC__.
2961
2962 2007-05-30  Eric Christopher  <echristo@gmail.com>
2963
2964         * genrecog.c: Include regs.h in generated file.
2965         * genemit.c: Ditto. Fix up formatting.
2966         * config/mn10300/constraints.md: New.
2967         * config/mn10300/mn10300.md: Include.
2968         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
2969         Fix up for removed macro.
2970         * config/mn10300/predicates.md (call_address_operand):  Ditto.
2971         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
2972         (CONST_OK_FOR_I): Ditto.
2973         (CONST_OK_FOR_J): Ditto.
2974         (CONST_OK_FOR_K): Ditto.
2975         (CONST_OK_FOR_L): Ditto.
2976         (CONST_OK_FOR_M): Ditto.
2977         (CONST_OK_FOR_N): Ditto.
2978         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
2979         (OK_FOR_Q): Ditto.
2980         (OK_FOR_R): Ditto.
2981         (OK_FOR_T): Ditto.
2982         (EXTRA_CONSTRAINT): Ditto.
2983
2984 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2985
2986         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
2987         Remove defines.
2988         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
2989         OPTION_MASK_ISA_64BIT.
2990         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
2991
2992 2007-05-30  Richard Guenther  <rguenther@suse.de>
2993
2994         PR middle-end/32152
2995         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
2996         types for comparison.
2997         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
2998         with original typed arguments.
2999         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
3000
3001 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
3002
3003         PR tree-optimization/31769
3004         * except.c (duplicate_eh_regions): Clear prev_try if
3005         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
3006
3007 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
3008
3009         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
3010         * tree-ssa-sink.c (statement_sink_location): Return basic block and
3011         bsi of the location where statements should be inserted.
3012         (sink_code_in_bb): Take bsi from statement_sink_location.
3013         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
3014         instead of bsi_start.
3015         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
3016         bsi_insert_after.
3017         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
3018         (bsi_move_before): Document inconsistency with bsi_move_after.
3019         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
3020
3021 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3022
3023         * config/i386/i386.h (TARGET_ABM): New define.
3024         (TARGET_POPCNT): Ditto.
3025         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
3026         New temporary defines to redefine from OPTION_ISA_* defines.
3027         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
3028         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
3029         (ix86_isa_flags): New extern int declaration.
3030         (TARGET_SUBTARGET_DEFAULT): New define.
3031         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
3032         (TARGET_SUBTARGET32_DEFAULT): Ditto.
3033         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
3034         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3035         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
3036         * config/i386/darwin.h: Change TARGET_64BIT define to
3037         OPTION_ISA_64BIT.
3038
3039         * config/i386/i386.opt (m3dnowa): Define as undocumented option
3040         using existing "ix86_isa_flags" varible.
3041         (m32, m64): Use existing "ix86_isa_flags" variable.
3042         (mmmx, m3dnow): Ditto.
3043         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
3044         (mabm): Define as non-negative option using "x86_abm" variable.
3045         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
3046
3047         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
3048         Rewrite feature test bitmap.
3049         (ix86_isa_flags): New initialized global int varible.
3050         (ix86_isa_flags_explicit): New static int variable.
3051         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
3052         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
3053         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
3054         target_flags_explicit.
3055         (override_options): Remove "target_enable" and "target_disable" fields
3056         from "struct ptt". Update processor_target_table accordingly. Remove
3057         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
3058         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
3059         "target_flags" and "ix86_isa_flags_explicit" instead of
3060         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
3061         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
3062         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
3063         to true when either of PTA_POPCNT or PTA_ABM is set in
3064         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
3065         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
3066         processor_alias_table flags entry.  Remove handling of
3067         "target_enable" and "target_disable" fields of processor_target_table.
3068         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
3069         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
3070         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
3071         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
3072         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
3073         "target_flags".
3074         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
3075
3076 2007-05-29  David Daney  <ddaney@avtrex.com>
3077
3078         PR gcc/31975
3079         * config/mips/mips.c (mips_output_mi_thunk): Emit
3080         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
3081
3082 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
3083         * config/i386/i386.c (ix86_function_regparm): Added checking of
3084         ix86_force_align_arg_pointer to determine the number of
3085         register parameters.
3086
3087 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
3088
3089         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
3090         (SET_DR_MISALIGNMENT): New.
3091         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
3092         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
3093         Use SET_DR_MISALIGNMENT.
3094         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
3095         pointer.
3096         * tree-data-ref.c (create_data_ref, compute_all_dependences,
3097         find_loop_nest): Export.
3098         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
3099         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
3100         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
3101         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
3102         New macros.
3103         (struct mem_ref): Add field reuse_distance.
3104         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
3105         Initialize reuse_distance field.
3106         (issue_prefetch_ref): Select temporality of prefetch according to
3107         reuse_distance.
3108         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
3109         self_reuse_distance, determine_loop_nest_reuse): New functions.
3110         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
3111         (tree_ssa_prefetch_arrays): Dump L2 cache size.
3112         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
3113         dependency.
3114
3115 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
3116
3117         * tree-ssa-alias.c: Add aliasing overview.
3118
3119 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
3120             Danny Smith  <dannysmith@users.sourceforge.net>
3121
3122         PR target/29498
3123         * config/i386/t-crtfm: Compile crtfastmath.o with
3124         -minline-all-stringops.
3125         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
3126         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
3127
3128 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3129
3130         * doc/md.texi: Document constraints on HP PA-RISC.
3131
3132         * pa/constraints.md: New file.
3133         * pa.md: Include constraints.md.
3134         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
3135         (integer_store_memory_operand, ldil_cint_p): New functions.
3136         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
3137         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3138         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
3139         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
3140         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
3141
3142 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
3143
3144         PR c/31339
3145         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
3146         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
3147         case POSTDECREMENT_EXPR>): Return the error_mark_node
3148         if either the real or imaginary parts would an
3149         error_mark_node.
3150
3151 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
3152
3153         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
3154         name when we remove it from a call.
3155
3156 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
3157
3158         * targhooks.c (default_narrow_bitfield): Remove.
3159         * targhooks.h: Remove the prototype for
3160         default_narrow_bitfield.
3161
3162         * langhooks-def.h: Remove the prototype for
3163         hook_get_alias_set_0.
3164         * langhooks.c (hook_get_alias_set_0): Remove.
3165
3166         * global.c (EXECUTE_IF_CONFLICT): Remove.
3167
3168 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3169
3170         PR tree-opt/32100
3171         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
3172         return true when truth_value_p is true and the type
3173         is of signed:1.
3174
3175 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
3176
3177         * doc/install.texi (Prerequisites): We no longer require Autoconf
3178         2.13 for the top-level.
3179
3180 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
3181
3182         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
3183         memory access via x86_expand_vector_move_misalign() only for
3184         TImode values on 32-bit targets.
3185
3186 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
3187
3188         * matrix-reorg.c: New file. Implement matrix flattening and
3189         transposing optimization.
3190         * tree-pass.h: Add matrix reorg pass.
3191         * common.opt: Add fipa-mreorg flag.
3192         * Makefile.in: Add matrix-reorg.c.
3193         * passes.c: Add matrix reorg pass.
3194         * varpool.c (add_new_static_var): New function.
3195         * cgraph.h (add_new_static_var): Declare.
3196
3197 2007-05-27  Eric Christopher  <echristo@apple.com>
3198
3199         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
3200         sp_offset depending on stack size. Save r12 depending
3201         on registers we're saving later.
3202         (rs6000_emit_epilogue): Update sp_offset depending only
3203         on stack size.
3204
3205 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
3206
3207         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
3208         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
3209         * ifcvt.c (if_convert): Ditto.
3210         * tree-ssa-threadupdate.c (thread_block): Ditto.
3211         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
3212         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3213         verify_loop_closed_ssa): Check number_of_loops instead of
3214         current_loops.
3215         * predict.c (tree_estimate_probability): Ditto.
3216         * tree-if-conv.c (main_tree_if_conversion): Ditto.
3217         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
3218         * modulo-sched.c (sms_schedule): Ditto.
3219         * tree-scalar-evolution.c (scev_const_prop): Ditto.
3220         (scev_finalize): Do not do anything if scev analysis was not
3221         initialized.
3222         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
3223         current_loops == NULL.
3224         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
3225         * loop-init.c (loop_optimizer_init): Do not free current_loops when
3226         there are no loops.
3227         (loop_optimizer_finalize): Assert that loops were analyzed.
3228         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
3229         rtl_doloop): Check number_of_loops instead of current_loops.
3230         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
3231         current_loops == NULL.
3232         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
3233         gate_tree_vectorize tree_linear_transform, check_data_deps,
3234         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
3235         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
3236         Check number_of_loops instead of current_loops.
3237         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
3238         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
3239         free loops if available.
3240         (execute_pre): Do not pass do_fre to fini_pre.
3241
3242 2007-05-27  Tobias Burnus  <burnus@net-b.de>
3243
3244         PR middle-end/32083
3245         * real.c (mpfr_from_real): Fix sign of -Inf.
3246
3247 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
3248
3249         * tree-vect-transform.c (vectorizable_conversion): Initialize
3250         tree_code variables to ERROR_MARK.
3251         (vectorizable_type_demotion): Likewise.
3252         (vectorizable_type_promotion): Likewise.
3253
3254 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3255
3256         PR target/32065
3257         * config/i386/i386.md (movti): Handle push operands via
3258         ix86_expand_push().
3259
3260 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3261
3262         * basic-block.h: Remove the prototype for merge_seq_blocks.
3263         * cfgcleanup.c (merge_seq_blocks): Remove.
3264
3265         * tree-flow.h: Remove the prototype for is_aliased_with.
3266         * tree-ssa-alias.c (is_aliased_with): Remove.
3267
3268 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
3269
3270         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
3271
3272         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
3273
3274         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
3275         ix86_expand_sse4_unpack if SSE4.1 is enabled.
3276         (vec_unpacks_hi_v16qi): Likewise.
3277         (vec_unpacku_lo_v16qi): Likewise.
3278         (vec_unpacks_lo_v16qi): Likewise.
3279         (vec_unpacku_hi_v8hi): Likewise.
3280         (vec_unpacks_hi_v8hi): Likewise.
3281         (vec_unpacku_lo_v8hi): Likewise.
3282         (vec_unpacks_lo_v8hi): Likewise.
3283         (vec_unpacku_hi_v4si): Likewise.
3284         (vec_unpacks_hi_v4si): Likewise.
3285         (vec_unpacku_lo_v4si): Likewise.
3286         (vec_unpacks_lo_v4si): Likewise.
3287
3288 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3289
3290         * c-typeck.c, config/arm/arm.c, config/darwin.c,
3291         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
3292         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
3293         follow spelling conventions in various
3294         warning/error/diagnostic messages.
3295
3296         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
3297         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
3298         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
3299         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
3300         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
3301         * doc/tm.texi: Follow spelling conventions.
3302
3303 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3304
3305         PR tree-opt/32090
3306         * tree-ssa-forwprop.c
3307         (forward_propagate_addr_into_variable_array_index): Remove
3308         the lhs argument.  Use the type of def_rhs instead of lhs.
3309         (forward_propagate_addr_expr_1): Update use of
3310         forward_propagate_addr_into_variable_array_index.
3311
3312 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
3313             Nigel Stephens  <nigel@mips.com>
3314
3315         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
3316         function attributes, "far" being an alias for "long_call".
3317         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
3318         (mips_near_type_p, mips_far_type_p): New.
3319         (mips_comp_type_attributes): New function to check that attributes
3320         attached to a function type are compatible.
3321         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
3322         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
3323         to the target function of the thunk.
3324         (mips_encode_section_info): Check for "near" and "far" function
3325         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
3326
3327         * config/mips/predicates.md (const_call_insn_operand): Test only
3328         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
3329
3330         * doc/extend.texi (Function Attributes): Document MIPS "near" and
3331         "far" attributes.
3332
3333         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
3334         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
3335         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
3336         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
3337
3338 2007-05-25  Eric Christopher  <echristo@apple.com>
3339
3340         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
3341         to x86-darwin configurations.
3342         * config/i386/t-darwin: Add softfp support.
3343         * config/i386/t-darwin64: Ditto.
3344         * config/i386/sfp-machine.h: If mach then don't use
3345         aliasing, emit a stub to call.
3346
3347 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
3348
3349         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
3350         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
3351         tree-predcom.c, tree-ssa-alias-warnings.c,
3352         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
3353         comment typos.  Follow spelling conventions.
3354         * doc/cpp.texi, doc/invoke.texi: Fix typos.
3355
3356 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3357
3358         PR target/32065
3359         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
3360         constants into memory.  Expand unaligned memory references for
3361         SSE modes via x86_expand_vector_move_misalign() function.
3362
3363 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
3364
3365         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
3366         "memory" attribute for "sseishft" type insn without operands[2].
3367
3368 2007-05-25  Dirk Mueller  <dmueller@suse.de>
3369             Marcus Meissner <meissner@suse.de>
3370
3371         * doc/extend.texi (alloc_size): New attribute.
3372         * c-common.c (handle_alloc_size_attribute): New.
3373         * tree-object-size.c (alloc_object_size): Use alloc_size
3374         attribute, if available.
3375
3376 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3377
3378         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
3379         with MASK_SSE2.
3380         (__builtin_ia32_vec_ext_v2di): Likewise.
3381         (__builtin_ia32_vec_ext_v4si): Likewise.
3382         (__builtin_ia32_vec_ext_v8hi): Likewise.
3383         (__builtin_ia32_vec_ext_v16qi): Likewise.
3384         (__builtin_ia32_vec_set_v8hi): Likewise.
3385
3386 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3387
3388         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
3389
3390 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
3391
3392         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
3393         (arm_is_longcall_p): Rename to...
3394         (arm_is_long_call_p): ...this.  Take a single tree argument and
3395         return a bool.
3396         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
3397         (CUMULATIVE_ARGS): Remove call_cookie.
3398         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
3399         (ENCODED_LONG_CALL_ATTR_P): Delete.
3400         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
3401         LONG_CALL_FLAG_CHAR cases.
3402         (ARM_DECLARE_FUNCTION_SIZE): Delete.
3403         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
3404         ARM_DECLARE_FUNCTION_SIZE.
3405         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
3406         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
3407         (arm_encode_call_attribute, current_file_function_operand): Delete.
3408         (arm_function_in_section_p): New function.
3409         (arm_is_longcall_p): Rename to...
3410         (arm_is_long_call_p): ...this.  Take the target function as a single
3411         argument and return a bool.  Do not rely on call cookies.  Check
3412         whether the target symbol is in the same section as the current
3413         function, not just the same compilation unit.
3414         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
3415         (arm_encode_section_info): Don't encode a call type.
3416         * config/arm/arm.md (call, call_value): Update calls to
3417         arm_is_long(_)call_p.  Simplify logic.
3418         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
3419         Update calls to arm_is_long(_)call_p.
3420
3421 2007-05-25  Richard Guenther  <rguenther@suse.de>
3422
3423         PR tree-optimization/31982
3424         * tree-ssa-forwprop.c
3425         (forward_propagate_addr_into_variable_array_index): Handle arrays
3426         with element size one.
3427
3428 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3429
3430         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
3431         (umulsi3_highpart): Likewise.
3432
3433 2007-05-24  Ian Lance Taylor  <iant@google.com>
3434
3435         PR rtl-optimization/32069
3436         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
3437         is NULL.
3438
3439 2007-05-24  Ollie Wild  <aaw@google.com>
3440
3441         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
3442         description.
3443
3444 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
3445
3446         * postreload-gcse.c (reg_changed_after_insn_p): New function.
3447         (oprs_unchanged_p): Use it to check all registers in a REG.
3448         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
3449         (reg_set_between_after_reload_p): Delete.
3450         (reg_used_between_after_reload_p): Likewise.
3451         (reg_set_or_used_since_bb_start): Likewise.
3452         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
3453         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
3454         Use reg_set_between_p instead of reg_set_between_after_reload_p.
3455         * rtlanal.c (reg_set_p): Check whether REG overlaps
3456         regs_invalidated_by_call, rather than just checking the
3457         membership of REGNO (REG).
3458
3459 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3460
3461         * doc/passes.texi: Document predictive commoning.
3462         * doc/invoke.texi (-fpredictive-commoning): Document.
3463         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
3464         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
3465         adding indices to the generated name.
3466         (schedule_sm): Pass 0 to get_lsm_tmp_name.
3467         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
3468         * tree-pretty-print.c (op_symbol_1): Renamed to ...
3469         (op_symbol_code): ... and exported.
3470         (dump_omp_clause, op_symbol): Use op_symbol_code
3471         instead of op_symbol_1.
3472         * tree-pass.h (pass_predcom): Declare.
3473         * timevar.def (TV_PREDCOM): New timevar.
3474         * tree-ssa-loop.c (run_tree_predictive_commoning,
3475         gate_tree_predictive_commoning, pass_predcom): New.
3476         * tree-data-ref.c (find_data_references_in_loop): Find the
3477         references in dominance order.
3478         (canonicalize_base_object_address): Ensure that the result has
3479         pointer type.
3480         (dr_analyze_innermost): Export.
3481         (create_data_ref): Code to fail for references with invariant
3482         address moved ...
3483         (find_data_references_in_stmt): ... here.
3484         * tree-data-ref.h (dr_analyze_innermost): Declare.
3485         * tree-affine.c: Include tree-gimple.h and hashtab.h.
3486         (aff_combination_find_elt, name_expansion_hash,
3487         name_expansion_eq, tree_to_aff_combination_expand,
3488         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
3489         New functions.
3490         * tree-affine.h (aff_combination_constant_multiple_p,
3491         tree_to_aff_combination_expand): Declare.
3492         * tree-predcom.c: New file.
3493         * common.opt (fpredictive-commoning): New option.
3494         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
3495         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
3496         * Makefile.in (tree-predcom.o): Add.
3497         (tree-affine.o): Add TREE_GIMPLE_H dependency.
3498         * passes.c (init_optimization_passes):  Add dceloop after
3499         copy propagation in loop optimizer.  Add predictive commoning
3500         to loop optimizer passes.
3501
3502 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3503
3504         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
3505         default hook.
3506
3507 2007-05-24  Jan Hubicka  <jh@suse.cz>
3508
3509         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
3510         statistics.
3511         (genheader): Include statistics.h.
3512
3513         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
3514         notes are gone.
3515         * print-rtl.c (flag_dump_unnumbered): Update comments.
3516         (print_rtl): Fix my previous change.
3517         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
3518         specific data.
3519
3520 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3521
3522         PR middle-end/32018
3523         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
3524         set_loop_copy.
3525         (thread_through_all_blocks): Call initialize_original_copy_tables
3526         and free_original_copy_tables.
3527         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
3528         Use set_loop_copy.
3529         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3530         * cfghooks.c (duplicate_block): Use get_loop_copy.
3531         * cfg.c: Include cfgloop.h.
3532         (loop_copy): New hash table.
3533         (initialize_original_copy_tables): Initialize loop_copy table.
3534         (free_original_copy_tables): Free loop_copy table.
3535         (copy_original_table_clear, copy_original_table_set,
3536         set_loop_copy, get_loop_copy): New functions.
3537         (set_bb_original, set_bb_copy): Use copy_original_table_set.
3538         * cfgloop.h (struct loop): Remove copy field.
3539         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
3540         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
3541
3542 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3543
3544         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
3545         -msse/-msse2/-msse3.
3546
3547 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3548
3549         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
3550         __builtin_ia32_vec_set_v2di with MASK_64BIT.
3551
3552 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
3553
3554         PR target/27067
3555         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
3556         * targhooks.h (default_mangle_decl_assembler_name): Declare
3557         default hook.
3558         * targhooks.c (default_mangle_decl_assembler_name): Define
3559         default hook.
3560         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
3561         default hook.
3562         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
3563         * langhooks.c (lhd_set_decl_assembler_name): Call
3564         targetm.mangle_decl_assembler_name for names with global scope.
3565
3566         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
3567         default.
3568         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
3569         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
3570         Declare.
3571         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
3572         New. Factored out of i386_pe_encode_section_info.
3573         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
3574         Move check for prior decoration of stdcall
3575         symbols to i386_pe_encode_section_info.
3576         (i386_pe_encode_section_info): Adjust call to
3577         gen_stdcall_or_fastcall_suffix.  Use
3578         i386_pe_maybe_mangle_decl_assembler_name, if needed.
3579         (i386_pe_mangle_decl_assembler_name): New. Wrap
3580         i386_pe_maybe_mangle_decl_assembler_name.
3581
3582 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3583
3584         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
3585         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
3586         * langhooks.c (get_signed_or_unsigned_type): Don't check for
3587         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
3588         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
3589         TYPE_UNSIGNED.
3590
3591 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
3592             Nigel Stephens  <nigel@mips.com>
3593             Richard Sandiford  <richard@codesourcery.com>
3594
3595         Fix up MIPS16 hard float and add support for complex.
3596
3597         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
3598         (TARGET_SOFT_FLOAT_ABI): New.
3599         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
3600         __mips_soft_float to reflect the ABI in use, not whether the
3601         FPU is directly accessible (e.g., in MIPS16 mode).
3602         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
3603         (UNITS_PER_FPVALUE): Likewise.
3604
3605         * config/mips/mips.c (mips_expand_call): Remove redundant
3606         TARGET_MIPS16 check.
3607         (mips_arg_regno): New.
3608         (function_arg_advance): When setting bits in cum->fp_code for
3609         MIPS16, don't subtract 1 from cum->arg_number, since it is now
3610         zero-based.
3611         (function_arg): Use mips_arg_regno.
3612         (mips_return_mode_in_fpr_p): New.
3613         (mips16_call_stub_mode_suffix): New.
3614         (mips16_cfun_returns_in_fpr_p): New.
3615         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
3616         (mips_output_function_prologue): Test mips16_hard_float, not
3617         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
3618         (mips_expand_epilogue): Call MIPS16 helper routines to copy
3619         return value into a floating-point register.
3620         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
3621         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
3622         (mips16_fp_args): Handle MIPS32r2 ISA which supports
3623         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
3624         word of double arguments from or to the high bits of 64-bit
3625         floating point registers.
3626         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
3627         (mips16_fpret_double): New helper function.
3628         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
3629         support for complex modes.  Fill in DECL_RESULT for stubdecl.
3630         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
3631
3632         * config/mips/mips16.S
3633         (RET, ARG1, ARG2): New.
3634         (MERGE_GPRf, MERGE_GPRt): New.
3635         (DELAYt, DELAYf): New.
3636         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
3637         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
3638         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
3639         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
3640         (SFOP): Renamed to...
3641         (OPSF3): This, and macro-ified.  Updated all uses.
3642         (SFOP2): Renamed to...
3643         (OPSF2): This, and macro-ified.  Updated all uses.
3644         (SFCMP): Renamed to...
3645         (CMPSF): This, and macro-ified.  Updated all uses.
3646         (SFREVCMP): Renamed to...
3647         (REVCMPSF): This, and macro-ified.  Updated all uses.
3648         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
3649         (LDDBL1, LDDBL2, RETDBL): Deleted.
3650         (DFOP): Renamed to...
3651         (OPDF3): This, and macro-ified.  Updated all uses.
3652         (DFOP2): Renamed to...
3653         (OPDF2): This, and macro-ified.  Updated all uses.
3654         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
3655         (DFCMP): Renamed to...
3656         (CMPDF): This, and macro-ified.  Updated all uses.
3657         (DFREVCMP): Renamed to...
3658         (REVCMPDF): This, and macro-ified.  Updated all uses.
3659         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
3660         (RET_FUNCTION): New.
3661         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
3662         (__mips16_ret_sc, __mips16_ret_dc): New.
3663         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
3664         STUB_ARGS_6, STUB_ARGS_10): New.
3665         (CALL_STUB_NO_RET): New.
3666         (__mips16_call_stub_1): Macro-ified.
3667         (__mips16_call_stub_5): Macro-ified.
3668         (__mips16_call_stub_2): Macro-ified.
3669         (__mips16_call_stub_6): Macro-ified.
3670         (__mips16_call_stub_9): Macro-ified.
3671         (__mips16_call_stub_10): Macro-ified.
3672         (CALL_STUB_RET): New.
3673         (__mips16_call_stub_sf_0): Macro-ified.
3674         (__mips16_call_stub_sf_1): Macro-ified.
3675         (__mips16_call_stub_sf_5): Macro-ified.
3676         (__mips16_call_stub_sf_2): Macro-ified.
3677         (__mips16_call_stub_sf_6): Macro-ified.
3678         (__mips16_call_stub_sf_9): Macro-ified.
3679         (__mips16_call_stub_sf_10): Macro-ified.
3680         (__mips16_call_stub_df_0): Macro-ified.
3681         (__mips16_call_stub_df_1): Macro-ified.
3682         (__mips16_call_stub_df_5): Macro-ified.
3683         (__mips16_call_stub_df_2): Macro-ified.
3684         (__mips16_call_stub_df_6): Macro-ified.
3685         (__mips16_call_stub_df_9): Macro-ified.
3686         (__mips16_call_stub_df_10): Macro-ified.
3687         (__mips16_call_stub_sc_0): New.
3688         (__mips16_call_stub_sc_1): New.
3689         (__mips16_call_stub_sc_5): New.
3690         (__mips16_call_stub_sc_2): New.
3691         (__mips16_call_stub_sc_6): New.
3692         (__mips16_call_stub_sc_9): New.
3693         (__mips16_call_stub_sc_10): New.
3694         (__mips16_call_stub_dc_0): New.
3695         (__mips16_call_stub_dc_1): New.
3696         (__mips16_call_stub_dc_5): New.
3697         (__mips16_call_stub_dc_2): New.
3698         (__mips16_call_stub_dc_6): New.
3699         (__mips16_call_stub_dc_9): New.
3700         (__mips16_call_stub_dc_10): New.
3701
3702         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
3703         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
3704         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
3705
3706 2007-05-23  Ian Lance Taylor  <iant@google.com>
3707
3708         * doc/invoke.texi (Invoking GCC): Document that the order of the
3709         -l option matters.
3710
3711 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
3712
3713         PR target/30987
3714         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
3715         * config/score/predicate.md (const_pow2, const_npow2): Remove.
3716         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
3717         undef.
3718
3719         PR target/30474
3720         * config/score/score.c (score_print_operand): Make sure that only
3721         lower bits are used.
3722
3723 2007-05-22  Ian Lance Taylor  <iant@google.com>
3724
3725         * tree-vrp.c (avoid_overflow_infinity): New static function,
3726         broken out of set_value_range_to_value.
3727         (set_value_range_to_value): Call avoid_overflow_infinity.
3728         (extract_range_from_assert): Likewise.
3729
3730 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3731
3732         PR middle-end/31095
3733          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
3734         change the type before looking for a COMPOUND_EXPR.
3735
3736 2007-05-22  Ian Lance Taylor  <iant@google.com>
3737
3738         * lower-subreg.c (decompose_multiword_subregs): If we change an
3739         insn, call remove_retval_note on it.
3740
3741 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3742
3743         * regs.h (end_hard_regno): New function.
3744         (END_HARD_REGNO, END_REGNO): New macros.
3745         (add_to_hard_reg_set): New function.
3746         (remove_from_hard_reg_set): Likewise.
3747         (in_hard_reg_set_p): Likewise.
3748         (overlaps_hard_reg_set_p): Likewise.
3749         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
3750         (note_btr_set): Use END_HARD_REGNO.
3751         * caller-save.c (setup_save_areas): Use end_hard_regno.
3752         (mark_set_regs): Use END_HARD_REGNO.
3753         (add_stored_regs): Use end_hard_regno.
3754         (mark_referenced_regs): Use add_to_hard_reg_set.
3755         * combine.c (update_table_tick): Use END_REGNO.
3756         (record_value_for_reg): Likewise.
3757         (record_dead_and_set_regs): Likewise.
3758         (get_last_value_validate): Likewise.
3759         (use_crosses_set_p): Likewise.
3760         (reg_dead_at_p_1): Likewise.
3761         (reg_dead_at_p): Likewise.
3762         (mark_used_regs_combine): Use add_to_hard_reg_set.
3763         (move_deaths): Use END_HARD_REGNO.
3764         (reg_bitfield_target_p): Use end_hard_regno.
3765         (distribute_notes): Use END_HARD_REGNO.
3766         * cse.c (mention_regs): Use END_REGNO.
3767         (insert): Use add_to_hard_reg_set.
3768         (invalidate): Use END_HARD_REGNO.
3769         (invalidate_for_call): Likewise.
3770         (exp_equiv_p): Use END_REGNO.
3771         (cse_insn): Likewise.
3772         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
3773         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
3774         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
3775         * function.c (keep_stack_depressed): Use end_hard_regno.
3776         * global.c (global_alloc): Use end_hard_regno.
3777         (global_conflicts): Use add_to_hard_reg_set instead of
3778         mark_reg_live_nc.
3779         (find_reg): Likewise.
3780         (mark_reg_store): Likewise.
3781         (mark_reg_conflicts): Likewise.
3782         (mark_reg_death): Use remove_from_hard_reg_set.
3783         (mark_reg_live_nc): Delete.
3784         (set_preference): Use end_hard_regno.
3785         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
3786         remove_from_hard_reg_set.
3787         (post_mark_life): Use add_to_hard_reg_set.
3788         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
3789         (reg_becomes_live): Use add_to_hard_reg_set.
3790         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
3791         (peep2_find_free_register): Use add_to_hard_reg_set.
3792         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
3793         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
3794         * regrename.c (note_sets): Use add_to_hard_reg_set.
3795         (clear_dead_regs): Use remove_from_hard_reg_set.
3796         (regrename_optimize): Use add_to_hard_reg_set.
3797         (find_oldest_value_reg): Use in_hard_reg_set_p.
3798         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
3799         (hard_reg_set_here_p): Use end_hard_regno.
3800         (decompose): Likewise.
3801         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
3802         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
3803         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
3804         (mark_home_live): Use end_hard_regno.
3805         (spill_hard_reg): Likewise.
3806         (clear_reload_reg_in_use): Likewise.
3807         * reorg.c (delete_prior_computation): Use END_REGNO.
3808         * resource.c (update_live_status): Use END_HARD_REGNO.
3809         (mark_referenced_resources): Use add_to_hard_reg_set.
3810         (mark_set_resources): Likewise.
3811         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
3812         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
3813         (reg_overlap_mentioned_p): Likewise.
3814         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
3815         (covers_regno_no_parallel_p): Use END_REGNO.
3816         (find_regno_note): Likewise.
3817         (find_reg_fusage): Use END_HARD_REGNO.
3818         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
3819         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
3820
3821 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3822
3823         * mode-switching.c (reg_dies): Change type of second argument to
3824         "HARD_REG_SET *".
3825         (optimize_mode_switching): Update accordingly.
3826
3827 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
3828
3829         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
3830         in favor of...
3831         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
3832         (hard_reg_set_empty_p): ...these new functions.
3833         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
3834         GO_IF_HARD_REG_SUBSET.
3835         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
3836         instead of GO_IF_HARD_REG_EQUAL.
3837         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
3838         instead of GO_IF_HARD_REG_EQUAL.
3839         * global.c (find_reg): Use hard_reg_set_empty_p instead of
3840         GO_IF_HARD_REG_SUBSET.
3841         (modify_reg_pav): Use hard_reg_set_empty_p instead of
3842         GO_IF_HARD_REG_EQUAL.
3843         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
3844         of GO_IF_HARD_REG_SUBSET.
3845         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
3846         instead of GO_IF_HARD_REG_EQUAL.
3847         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
3848         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
3849         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
3850         of GO_IF_HARD_REG_SUBSET,
3851         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
3852         GO_IF_HARD_REG_SUBSET.
3853         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
3854         instead of GO_IF_HARD_REG_EQUAL.
3855         * config/sh/sh.c (push_regs, calc_live_regs): Use
3856         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
3857         (hard_regs_intersect_p): Delete.
3858
3859 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
3860
3861         * doc/sourcebuild.texi (Test Directives) Add dg-message.
3862
3863 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
3864             Richard Henderson  <rth@redhat.com>
3865
3866         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
3867         extra_headers.
3868         (x86_64-*-*): Likewise.
3869
3870         * i386/i386-modes.def (V2QI): New.
3871
3872         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
3873         SSE4A.
3874         (override_options): Support SSE4.1.
3875         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
3876         (IX86_BUILTIN_BLENDPS): Likewise.
3877         (IX86_BUILTIN_BLENDVPD): Likewise.
3878         (IX86_BUILTIN_BLENDVPS): Likewise.
3879         (IX86_BUILTIN_PBLENDVB128): Likewise.
3880         (IX86_BUILTIN_PBLENDW128): Likewise.
3881         (IX86_BUILTIN_DPPD): Likewise.
3882         (IX86_BUILTIN_DPPS): Likewise.
3883         (IX86_BUILTIN_INSERTPS128): Likewise.
3884         (IX86_BUILTIN_MOVNTDQA): Likewise.
3885         (IX86_BUILTIN_MPSADBW128): Likewise.
3886         (IX86_BUILTIN_PACKUSDW128): Likewise.
3887         (IX86_BUILTIN_PCMPEQQ): Likewise.
3888         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
3889         (IX86_BUILTIN_PMAXSB128): Likewise.
3890         (IX86_BUILTIN_PMAXSD128): Likewise.
3891         (IX86_BUILTIN_PMAXUD128): Likewise.
3892         (IX86_BUILTIN_PMAXUW128): Likewise.
3893         (IX86_BUILTIN_PMINSB128): Likewise.
3894         (IX86_BUILTIN_PMINSD128): Likewise.
3895         (IX86_BUILTIN_PMINUD128): Likewise.
3896         (IX86_BUILTIN_PMINUW128): Likewise.
3897         (IX86_BUILTIN_PMOVSXBW128): Likewise.
3898         (IX86_BUILTIN_PMOVSXBD128): Likewise.
3899         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
3900         (IX86_BUILTIN_PMOVSXWD128): Likewise.
3901         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
3902         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
3903         (IX86_BUILTIN_PMOVZXBW128): Likewise.
3904         (IX86_BUILTIN_PMOVZXBD128): Likewise.
3905         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
3906         (IX86_BUILTIN_PMOVZXWD128): Likewise.
3907         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
3908         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
3909         (IX86_BUILTIN_PMULDQ128): Likewise.
3910         (IX86_BUILTIN_PMULLD128): Likewise.
3911         (IX86_BUILTIN_ROUNDPD): Likewise.
3912         (IX86_BUILTIN_ROUNDPS): Likewise.
3913         (IX86_BUILTIN_ROUNDSD): Likewise.
3914         (IX86_BUILTIN_ROUNDSS): Likewise.
3915         (IX86_BUILTIN_PTESTZ): Likewise.
3916         (IX86_BUILTIN_PTESTC): Likewise.
3917         (IX86_BUILTIN_PTESTNZC): Likewise.
3918         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
3919         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
3920         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
3921         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
3922         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
3923         (bdesc_ptest): New.
3924         (bdesc_sse_3arg): Likewise.
3925         (bdesc_2arg): Likewise.
3926         (bdesc_1arg): Likewise.
3927         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
3928         with 3 args.
3929         (ix86_expand_sse_4_operands_builtin): New.
3930         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
3931         smaller than 8 bits as the 2nd arg.
3932         (ix86_expand_sse_ptest): New.
3933         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
3934         (ix86_expand_vector_set): Support SSE4.1.
3935         (ix86_expand_vector_extract): Likewise.
3936
3937         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3938         __SSE4_1__ for -msse4.1.
3939
3940         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
3941         (UNSPEC_INSERTPS): Likewise.
3942         (UNSPEC_DP): Likewise.
3943         (UNSPEC_MOVNTDQA): Likewise.
3944         (UNSPEC_MPSADBW): Likewise.
3945         (UNSPEC_PHMINPOSUW): Likewise.
3946         (UNSPEC_PTEST): Likewise.
3947         (UNSPEC_ROUNDP): Likewise.
3948         (UNSPEC_ROUNDS): Likewise.
3949
3950         * config/i386/i386.opt (msse4.1): New for SSE4.1.
3951
3952         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
3953         (const_pow2_1_to_32768_operand): Likewise.
3954
3955         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
3956         file.
3957
3958         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
3959         SSE4.1.
3960         (sse4_1_insertps): Likewise.
3961         (*sse4_1_extractps): Likewise.
3962         (sse4_1_ptest): Likewise.
3963         (sse4_1_mulv2siv2di3): Likewise.
3964         (*sse4_1_mulv4si3): Likewise.
3965         (*sse4_1_smax<mode>3): Likewise.
3966         (*sse4_1_umax<mode>3): Likewise.
3967         (*sse4_1_smin<mode>3): Likewise.
3968         (*sse4_1_umin<mode>3): Likewise.
3969         (sse4_1_eqv2di3): Likewise.
3970         (*sse4_1_pinsrb): Likewise.
3971         (*sse4_1_pinsrd): Likewise.
3972         (*sse4_1_pinsrq): Likewise.
3973         (*sse4_1_pextrb): Likewise.
3974         (*sse4_1_pextrb_memory): Likewise.
3975         (*sse4_1_pextrw_memory): Likewise.
3976         (*sse4_1_pextrq): Likewise.
3977         (sse4_1_blendpd): Likewise.
3978         (sse4_1_blendps): Likewise.
3979         (sse4_1_blendvpd): Likewise.
3980         (sse4_1_blendvps): Likewise.
3981         (sse4_1_dppd): Likewise.
3982         (sse4_1_dpps): Likewise.
3983         (sse4_1_movntdqa): Likewise.
3984         (sse4_1_mpsadbw): Likewise.
3985         (sse4_1_packusdw): Likewise.
3986         (sse4_1_pblendvb): Likewise.
3987         (sse4_1_pblendw): Likewise.
3988         (sse4_1_phminposuw): Likewise.
3989         (sse4_1_extendv8qiv8hi2): Likewise.
3990         (*sse4_1_extendv8qiv8hi2): Likewise.
3991         (sse4_1_extendv4qiv4si2): Likewise.
3992         (*sse4_1_extendv4qiv4si2): Likewise.
3993         (sse4_1_extendv2qiv2di2): Likewise.
3994         (*sse4_1_extendv2qiv2di2): Likewise.
3995         (sse4_1_extendv4hiv4si2): Likewise.
3996         (*sse4_1_extendv4hiv4si2): Likewise.
3997         (sse4_1_extendv2hiv2di2): Likewise.
3998         (*sse4_1_extendv2hiv2di2): Likewise.
3999         (sse4_1_extendv2siv2di2): Likewise.
4000         (*sse4_1_extendv2siv2di2): Likewise.
4001         (sse4_1_zero_extendv8qiv8hi2): Likewise.
4002         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
4003         (sse4_1_zero_extendv4qiv4si2): Likewise.
4004         (*sse4_1_zero_extendv4qiv4si2): Likewise.
4005         (sse4_1_zero_extendv2qiv2di2): Likewise.
4006         (*sse4_1_zero_extendv2qiv2di2): Likewise.
4007         (sse4_1_zero_extendv4hiv4si2): Likewise.
4008         (*sse4_1_zero_extendv4hiv4si2): Likewise.
4009         (sse4_1_zero_extendv2hiv2di2): Likewise.
4010         (*sse4_1_zero_extendv2hiv2di2): Likewise.
4011         (sse4_1_zero_extendv2siv2di2): Likewise.
4012         (*sse4_1_zero_extendv2siv2di2): Likewise.
4013         (sse4_1_roundpd): Likewise.
4014         (sse4_1_roundps): Likewise.
4015         (sse4_1_roundsd): Likewise.
4016         (sse4_1_roundss): Likewise.
4017         (mulv4si3): Don't expand for SSE4.1.
4018         (smax<mode>3): Likewise.
4019         (umaxv4si3): Likewise.
4020         (uminv16qi3): Likewise.
4021         (umin<mode>3): Likewise.
4022         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
4023
4024         * doc/extend.texi: Document SSE4.1 built-in functions.
4025
4026         * doc/invoke.texi: Document -msse4.1.
4027
4028 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
4029
4030         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
4031         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
4032         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
4033         (ASM_SPEC): Add asm_pcrel_spec.
4034         (EXTRA_SPECS): Add asm_pcrel_spec.
4035
4036 2007-05-21  David Daney  <ddaney@avtrex.com>
4037
4038         * doc/install.texi (Building a cross compiler): Add requirements
4039         for Java cross compiler.
4040
4041 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4042
4043         PR middle-end/31995
4044         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
4045         Add loopno argument.  Use evolution_function_is_invariant_rec_p
4046         instead of evolution_function_is_constant_p.
4047         Update calls to evolution_function_is_affine_multivariate_p.
4048         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
4049         Add loopno argument.
4050         * tree-scalar-evolution.c (gather_chrec_stats): Call
4051         evolution_function_is_affine_multivariate_p with a loop
4052         number of 0.
4053         * tree-data-ref.c (analyze_miv_subscript): Likewise.
4054         (analyze_overlapping_iterations): Likewise.
4055         (access_functions_are_affine_or_constant_p): Likewise.
4056         (build_classic_dist_vector_1): If the access functions
4057         are equal, don't do anything.
4058
4059 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
4060             Paolo Carlini  <pcarlini@suse.de>
4061             Uros Bizjak  <ubizjak@gmail.com>
4062
4063         * c-cppbuiltin.c (c_cpp_builtins): Define
4064         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
4065         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
4066         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
4067         * doc/cpp.texi ([Standard Predefined Macros]): Document.
4068
4069 2007-05-21  Mike Stump  <mrs@apple.com>
4070
4071         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
4072         handling as well.
4073         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
4074
4075 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
4076
4077         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
4078         implementation if __OPTIMIZE__ is not defined.
4079         (_mm_alignr_pi8): Ditto.
4080         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4081         (_mm_inserti_si64): Ditto.
4082         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4083         (_mm_slli_epi16): Ditto.
4084         (_mm_slli_epi32): Ditto.
4085         (_mm_slli_epi64): Ditto.
4086         (_mm_srai_epi16): Ditto.
4087         (_mm_srai_epi32): Ditto.
4088         (_mm_srli_si128): Ditto.
4089         (_mm_slli_si128): Ditto.
4090         (_mm_srli_epi16): Ditto.
4091         (_mm_srli_epi32): Ditto.
4092         (_mm_srli_epi64): Ditto.
4093         (_mm_extract_epi16): Ditto.
4094         (_mm_insert_epi16): Ditto.
4095         (_mm_shufflehi_epi16): Ditto.
4096         (_mm_shufflelo_epi16): Ditto.
4097         (_mm_shuffle_epi32): Ditto.
4098         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
4099         (_m_pextrw): Ditto.
4100         (_mm_insert_pi16): Ditto.
4101         (_m_pinsrw): Ditto.
4102         (_mm_shuffle_pi16): Ditto.
4103         (_m_pshufw): Ditto.
4104         (_mm_shufle_ps): Ditto.
4105         (_mm_prefetch): Ditto.
4106
4107 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
4108
4109         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
4110         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
4111         * real.c (encode_i370_single, decode_i370_single,
4112         encode_i370_double, decode_i370_double): Functions removed.
4113         (i370_single_format, i370_double_format): Initializations removed.
4114         (real_maxval, round_for_format, exact_real_truncate, significand_size):
4115         Consider the log2_b field to always be one.
4116         (ieee_single_format, mips_single_format, coldfire_single_format,
4117         ieee_double_format, mips_double_format, coldfire_double_format,
4118         ieee_extended_motorola_format, ieee_extended_intel_96_format,
4119         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
4120         ibm_extended_format, mips_extended_format, ieee_quad_format,
4121         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
4122         decimal_single_format, decimal_double_format, decimal_quad_format,
4123         c4x_single_format, c4x_extended_format, real_internal_format): Remove
4124         initialization of log2_b.
4125         * real.h (i370_single_format, i370_double_format): Declarations removed.
4126         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
4127         field to always be one.
4128
4129 2007-05-21  Andreas Schwab  <schwab@suse.de>
4130
4131         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
4132         NOTE_INSN_BASIC_BLOCK_P.
4133         (process_for_unwind_directive): Likewise.
4134
4135 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
4136
4137         * builtins.c (expand_builtin_setjmp_setup): Update comment.
4138         * function.h (struct function): Move va_list_gpr_size,
4139         va_list_fpr_size, function_frequency to front of bitfields.  Add
4140         calls_unwind_init.
4141         (current_function_calls_unwind_init): New.
4142         * except.c (expand_builtin_unwind_init): Set
4143         current_function_calls_unwind_init not
4144         current_function_has_nonlocal_label.
4145         * reload1.c (has_nonexceptional_receiver): New.
4146         (reload): Use it and current_function_calls_unwind_init to
4147         determine whether call-saved regs must be saved.
4148
4149 2007-05-20  Jan Hubicka  <jh@suse.cz>
4150
4151         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
4152         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4153         * ddg.c (create_ddg): LIkewise.
4154         * final.c (final): Remove hunk moving line numbernotes around since
4155         they are no longer present at this stage.
4156         (final_scan_insn): Use NOTE_KIND instead of
4157         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4158         (output_asm_label): Likewise.
4159         * reorg.c (dbr_schedule): Likewise.
4160         * haifa-sched.c (unlink_other_notes): Likewise.
4161         * mode-switching.c (optimize_mode_switching): Likewise.
4162         * graph.c (start_bb): Likewise.
4163         * rtl.def (NOTE): Update description.
4164         * jump.c (squeeze_notes): Delete.
4165         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
4166         NOTE_INSN_BASIC_BLOCK_P when possible.
4167         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
4168         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
4169         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
4170         (dwarf2out_var_location): Likewise.
4171         * cfgbuild.c (make_edges): Likewise.
4172         (find_basic_blocks_1): Likewise.
4173         * function.c (reorder_blocks_1): Likewise.
4174         (epilogue_done): Likewise.
4175         (reposition_prologue_and_epilogue_notes): Likewise.
4176         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
4177         notes.
4178         (print_rtl): Likewise.
4179         (print_rtl_single): Likewise.
4180         * gcse.c (insert_insn_start_bb): Likewise.
4181         * alias.c (init_alias_analysis): Likewise.
4182         * calls.c (fixup_tail_calls): Likewise.
4183         * except.c (sjlj_emit_function_enter): Likewise.
4184         * emit-rtl.c (add_insn_after): Likeiwse.
4185         (emit_label_before): Likewise.
4186         (emit_label_after): Likewise.
4187         (emit_note_before, emit_note_after, emit_note): Update
4188         parameter to be enum insn_note; do not deal with source
4189         files.
4190         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
4191         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
4192         when possible.
4193         (merge_blocks_move_successor_nojumps): Simplify now when
4194         we don't have BLOCK notes.
4195         (try_optimize_cfg): Likewise.
4196         * cfglayout.c (skip_insns_after_block): Likewise.
4197         (record_effective_endpoints): Likewise.
4198         (duplicate_insn_chain): Likewise.
4199         * varasm.c (output_constant_pool_1): Likewise.
4200         * sched-deps.c (sched_analyze): Likewise.
4201         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
4202         Exterminate.
4203         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
4204         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
4205         (SET_INSN_DELETED): Simplify.
4206         (NOTE_LINE_NUMBER): Exterminate.
4207         (NOTE_LINE_KIND): New.
4208         (NOTE_INSN_BASIC_BLOCK_P): Update.
4209         (enum insn_note): Simplify.
4210         (GET_NOTE_INSN_NAME) Simplify.
4211         (emit_note_before, emit_note_after, emit_note): Update prototype.
4212         (squeeze_notes): Remove.
4213         * sched-int.h (NOTE_NOT_BB_P): Update.
4214         * resource.c (mark_target_live_regs): Update.
4215         * sched-rgn.c (debug_dependencies): Update.
4216         * sched-vis.c (print_insn): Update.
4217         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
4218         * config/i386/i386.c (ix86_output_function_epilogue): Update.
4219         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
4220         (TARGET_ADJUST_UNROLL_MAX): Likewise.
4221         (split_branches): Update.
4222         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
4223         4.0.0.
4224         (sh_adjust_unroll_max): Exterminate.
4225         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
4226         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
4227         (m68hc11_reorg): Likewise.
4228         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
4229         (emit_predicate_relation_info): Update.
4230         (process_for_unwind_directive): Update.
4231         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
4232         (output_call): Update.
4233         * config/pa/pa.c (output_lbranch): Update.
4234         (output_millicode_call): Update.
4235         (output_call): Update.
4236         (pa_combine_instructions): Update.
4237         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
4238         * config/bfin/bfin.c (gen_one_bundle): Update.
4239         * cfgrtl.c (can_delete_note_p): Update.
4240         (delete_insn): Update.
4241         (rtl_merge_blocks): Update.
4242         (commit_one_edge_insertion): Update.
4243         (rtl_verify_flow_info): Update.
4244         * stmt.c (expand_case): Do not call squeeze_notes.
4245
4246 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4247
4248         PR middle-end/7651
4249         PR c++/11856
4250         PR c/12963
4251         PR c/23587
4252         PR other/29694
4253         * c.opt (Wtype-limits): New.
4254         * doc/invoke.texi (Wtype-limits): Document it.
4255         (Wextra): Enabled by -Wextra.
4256         * c-opts.c (c_common_post_options): Enabled by -Wextra.
4257         * c-common.c (shorten_compare): Warn with Wtype-limits.
4258
4259 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4260
4261         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
4262         inlined function, not as a macro.
4263         (_mm_alignr_pi8): Ditto.
4264         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4265         (_mm_inserti_si64): Ditto.
4266         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4267         (_mm_extract_epi16): Ditto.
4268         (_mm_insert_epi16): Ditto.
4269         (_mm_shufflehi_epi16): Ditto.
4270         (_mm_shufflelo_epi16): Ditto.
4271         (_mm_shuffle_epi32): Ditto.
4272         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
4273         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
4274         all functions.
4275         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
4276         float constant.
4277         (_m_to_float): Use C89 compatible assignment.
4278
4279 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
4280
4281         PR target/32007
4282         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
4283
4284 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4285
4286         PR middle-end/7651
4287         * doc/invoke.texi (Wreturn-type): Complete description.
4288         (Wextra): Delete item about return-type warning.
4289         * c-decl.c: Delete redundant Wextra warning.
4290
4291 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4292
4293         PR target/31585
4294         * config/i386/pmmintrin.h: Do not include xmmintrin.h
4295         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
4296         inlined function, not as a macro.
4297         (_mm_prefetch): Ditto.
4298         (_m_pextrw): Ditto.
4299         (_mm_insert_pi16): Ditto.
4300         (_m_pinsrw): Ditto.
4301         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
4302         (_m_pshufw): Ditto. Add const to __N argument.
4303         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
4304         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
4305         (_mm_slli_epi32): Ditto.
4306         (_mm_srli_si128): Implement as always inlined function, not as a macro.
4307         Add __inline to function declaration.
4308         (_mm_slli_si128): Ditto.
4309
4310 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
4311
4312         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
4313         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
4314         New constants.
4315         (struct fenv): New structure.
4316         (FP_HANDLE_EXCEPTIONS): New define.
4317         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
4318         (_FP_DECL_EXP): New define.
4319         (FP_INIT_ROUNDMODE): New define.
4320         (FP_ROUNDMODE): New define.
4321
4322 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4323
4324         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
4325         (Wconversion): Update description.
4326         (Wconversion-sign): New.
4327         * c.opt (Wconversion-sign): New.
4328         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
4329         means disabled for C++. Otherwise, take the status of Wconversion.
4330         * c-common.c (conversion_warning): Warn with either Wconversion or
4331         Wconversion-sign.
4332         (warnings_for_convert_and_check): Conditions are already checked by
4333         conversion_warning.
4334         (convert_and_check): Don't check warnings if the conversion failed.
4335
4336 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
4337            Anatoly Sokolov <aesok@dol.ru>
4338
4339         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
4340         avr_epilogue_uses) : Add declaration.
4341         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
4342         * config/avr/constraints.md (R): New constraint.
4343         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
4344         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
4345         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
4346         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
4347         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
4348         call_prologue_saves, epilogue_restores, return_from_epilogue,
4349         return_from_main_epilogue, return_from_interrupt_epilogue,
4350         return_from_naked_epilogue, prologue, epilogue): New patterns.
4351         (jump): Handle symbol reference.
4352         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
4353         avr_output_function_prologue, avr_output_function_epilogue): Remove
4354         functions.
4355         (avr_init_machine_status, expand_prologue, expand_epilogue,
4356         avr_asm_function_end_prologue, avr_epilogue_uses,
4357         avr_asm_function_begin_epilogue): New functions.
4358         (prologue_size, epilogue_size, jump_tables_size): Remove global
4359         variables.
4360         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
4361         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
4362         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
4363         (avr_override_options): Initialise init_machine_status.
4364         (output_movhi): Handle all stack pointer loads.
4365         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
4366         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
4367         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
4368         (EPILOGUE_USES) Redefine.
4369         (machine_function) Declare.
4370
4371 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
4372
4373         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
4374         Use a single return statement.
4375
4376 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4377
4378         PR middle-end/30250
4379         * builtins.c (do_mpfr_lgamma_r): New.
4380         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
4381         * tree.h (CASE_FLT_FN_REENT): New.
4382
4383 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
4384
4385         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
4386         (output_die): Use 'unsigned long' with %x.
4387         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
4388         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
4389         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
4390
4391         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
4392
4393 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
4394
4395         PR target/31989
4396         PR target/31681
4397         PR target/31666
4398         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
4399         true if function has no argument.
4400
4401 2007-05-18  DJ Delorie  <dj@redhat.com>
4402
4403         * config/mips/mips.c (mips_offset_within_alignment_p): New.
4404         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
4405
4406 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4407
4408         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
4409         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
4410         count_trailing_zeros.
4411         (__i386__): Implement count_leading_zeros using __builtin_clz().
4412         Implement count_trailing_zeros usign __builtin_ctz().
4413
4414 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
4415
4416         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
4417
4418 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4419
4420         PR middle-end/31344
4421         * expr.c (emit_move_change_mode): Change mode of push operands here.
4422
4423 2007-05-17  Ian Lance Taylor  <iant@google.com>
4424
4425         PR tree-optimization/31953
4426         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
4427         Change all callers.
4428         (set_value_range_to_null): Call set_value_range_to_value.
4429         (extract_range_from_comparison): Likewise.
4430
4431 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4432
4433         * toplev.c (print_version): Output GMP/MPFR version info.
4434
4435         * builtins.c (CASE_MATHFN_REENT): New macro.
4436         (mathfn_built_in): Use it.
4437         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
4438         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
4439         BUILT_IN_LGAMMAL_R): New.
4440         * doc/extend.texi: Document new builtins.
4441
4442         PR middle-end/31796
4443         * builtins.c (do_mpfr_remquo): New.
4444         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
4445         (fold_builtin_3): Handle BUILT_IN_REMQUO.
4446
4447         PR middle-end/30251
4448         * builtins.c (fold_builtin_1): Handle y0, y1.
4449         (fold_builtin_2): Handle yn.
4450
4451         PR middle-end/30251
4452         * builtins.c (do_mpfr_bessel_n): New.
4453         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
4454         (fold_builtin_2): Handle BUILT_IN_JN.
4455
4456 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
4457
4458         PR target/31965
4459         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
4460         TYPE_PRECISION (intmax_type_node).
4461
4462 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
4463
4464         PR target/31850
4465         * reload.c (subst_reloads): Remove checking.
4466
4467 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
4468
4469         PR rtl-optimization/31691
4470         * combine.c (simplify_set): Build a new src pattern instead of
4471         substituting its operands in the COMPARE case.
4472
4473 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
4474
4475         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
4476         (execute_vrp): Preserve loops through jump threading.
4477         * tree-ssa-threadupdate.c (thread_single_edge,
4478         dbds_continue_enumeration_p, determine_bb_domination_status,
4479         thread_through_loop_header): New functions.
4480         (create_edge_and_update_destination_phis,
4481         create_edge_and_update_destination_phis): Set loops for the new blocks.
4482         (prune_undesirable_thread_requests): Removed.
4483         (redirect_edges): Do not pretend that redirect_edge_and_branch can
4484         create new blocks.
4485         (thread_block): Do not call prune_undesirable_thread_requests.
4486         Update loops.
4487         (mark_threaded_blocks): Select edges to thread here.
4488         (thread_through_all_blocks): Take may_peel_loop_headers argument.
4489         Thread edges through loop headers independently.
4490         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
4491         * tree-pass.h (TODO_mark_first_instance): New.
4492         (first_pass_instance): Declare.
4493         * cfghooks.c (duplicate_block): Put the block to the original loop
4494         if copy is not specified.
4495         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
4496         jump threading.  Pass may_peel_loop_headers to
4497         thread_through_all_blocks according to first_pass_instance.
4498         * cfgloop.h (create_preheader): Declare.
4499         * tree-flow.h (thread_through_all_blocks): Declaration changed.
4500         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
4501         * passes.c (first_pass_instance): New variable.
4502         (next_pass_1): Set TODO_mark_first_instance.
4503         (execute_todo): Set first_pass_instance.
4504
4505 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
4506
4507         PR tree-optimization/24659
4508         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
4509         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
4510         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
4511         OTI_vec_pack_ufix_trunc.
4512         (vec_unpacks_float_hi_optab): Define new macro.
4513         (vec_unpacks_float_lo_optab): Ditto.
4514         (vec_unpacku_float_hi_optab): Ditto.
4515         (vec_unpacku_float_lo_optab): Ditto.
4516         (vec_pack_sfix_trunc_optab): Ditto.
4517         (vec_pack_ufix_trunc_optab): Ditto.
4518         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
4519         and vec_pack_[s|u]fix_trunc_optab using
4520         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
4521         * tree-vectorizer.c (supportable_widening_operation): Handle
4522         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
4523         (supportable_narrowing_operation): New function.
4524         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
4525         * tree-vect-transform.c (vectorizable_conversion): Handle
4526         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
4527         (vect_gen_widened_results_half): Move before vectorizable_conversion.
4528         (vectorizable_type_demotion): Call supportable_narrowing_operation()
4529         to check for target support.
4530         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
4531         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
4532         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
4533         for VEC_PACK_FIX_TRUNC_EXPR.
4534         (expand_binop): Special case mode of the result for
4535         vec_pack_[u|s]fix_trunc_optab.
4536         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
4537         vec_pack_[u|s]fix_trunc_optab.
4538
4539         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
4540         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
4541         * tree-pretty-print.c (dump_generic_node): Handle
4542         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
4543         VEC_PACK_FIX_TRUNC_EXPR.
4544         (op_prio): Ditto.
4545         * expr.c (expand_expr_real_1): Ditto.
4546         * tree-inline.c (estimate_num_insns_1): Ditto.
4547         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
4548
4549         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
4550         (vec_unpacks_float_lo_v8hi): Ditto.
4551         (vec_unpacku_float_hi_v8hi): Ditto.
4552         (vec_unpacku_float_lo_v8hi): Ditto.
4553         (vec_unpacks_float_hi_v4si): Ditto.
4554         (vec_unpacks_float_lo_v4si): Ditto.
4555         (vec_pack_sfix_trunc_v2df): Ditto.
4556
4557         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
4558         Document.
4559         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
4560         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
4561         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
4562         [vec_pack_ufix_trunc]: Ditto.
4563         [vec_unpacks_float_hi]: Ditto.
4564         [vec_unpacks_float_lo]: Ditto.
4565         [vec_unpacku_float_hi]: Ditto.
4566         [vec_unpacku_float_lo]: Ditto.
4567
4568 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
4569
4570         * soft-fp/README: Update for new files.
4571         * soft-fp/floattisf.c: New file.
4572         * soft-fp/floattidf.c: New file.
4573         * soft-fp/floattitf.c: New file.
4574         * soft-fp/floatuntisf.c: New file.
4575         * soft-fp/floatuntidf.c: New file.
4576         * soft-fp/floatuntitf.c: New file.
4577         * soft-fp/fixsfti.c: New file.
4578         * soft-fp/fixdfti.c: New file.
4579         * soft-fp/fixtfti.c: New file.
4580         * soft-fp/fixunssfti.c: New file.
4581         * soft-fp/fixunsdfti.c: New file.
4582         * soft-fp/fixunstfti.c: New file.
4583         * soft-fp/extendxftf.c: New file.
4584         * soft-fp/trunctfxf.c: New file.
4585
4586         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
4587         (__trunctfxf2): Ditto.
4588
4589         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
4590         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
4591         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
4592         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
4593         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
4594         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
4595
4596         * config/i386/t-fprules-softfp64: New file.
4597         * config/i386/sfp-machine.h: New file.
4598         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
4599         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
4600         and soft-fp/t-softfp to tmake_file.
4601         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
4602         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
4603
4604         * config/i386/t-linux64 (softfp_wrap_start): New.
4605         (softfp_wrap_end): New.
4606         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
4607         supported for TARGET_64BIT.
4608
4609 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
4610
4611         * c-common.c (c_common_signed_or_unsigned_type): Emulate
4612         c_common_unsigned_type behavior.
4613
4614 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
4615
4616         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
4617         calls as pure.
4618
4619 2007-05-16  Eric Christopher  <echristo@apple.com>
4620
4621         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
4622         saving after stack push. Set sp_offset whenever we push.
4623         (rs6000_emit_epilogue): Move altivec register restore before
4624         stack push.
4625
4626 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4627
4628         * configure.ac: Allow sysroots to be relocated under $prefix as
4629         well as $exec_prefix.
4630         * configure: Regenerate.
4631
4632 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4633
4634         Revert:
4635
4636         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4637
4638         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4639         (gcc_tooldir): Likewise.
4640         * configure: Regenerate.
4641         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4642         old configure.ac gcc_tooldir setting.
4643         (prefix_to_exec_prefix): New variable.
4644         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4645         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4646
4647 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
4648
4649         * c-typeck.c (build_binary_op): Return early for error.
4650
4651 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
4652
4653         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
4654         struct nb_iter_bound.
4655         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
4656         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
4657         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
4658         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
4659         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
4660         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
4661         (del_scev_info): Use ggc_free.
4662         (scev_initialize): Allocate scalar_evolution_info in gc memory.
4663         * loop-init.c: Include ggc.h.
4664         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
4665         (loop_optimizer_finalize): Use ggc_free.
4666         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
4667         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
4668         pass_iv_optimize): Add TODO_ggc_collect.
4669         * function.h (struct function): Remove skip marker from x_current_loops.
4670         * cfgloop.c: Include ggc.h.
4671         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
4672         memory.
4673         (establish_preds): Vector superloops is gc allocated.
4674         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
4675         loop->exits list.
4676         (flow_loops_find): Vector larray is gc allocated.
4677         (loop_exit_free): Use ggc_free.
4678         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
4679         that head of exits list is now not a part of struct loop.
4680         (record_loop_exits): Allocate exits table in gc memory.
4681         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
4682         head of exits list is now not a part of struct loop.
4683         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
4684         struct loop_exit): Add GTY marker.
4685         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
4686         Add skip marker to aux field.  Make head of exits list a separate
4687         object.
4688         (struct loops): Add GTY marker.  Make larray vector gc allocated.
4689         Add param marker to exits table.
4690         (get_loops): Type changed.
4691         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
4692         dependency.
4693         (cfgloop.o, loop-init.o): Add ggc.h dependency.
4694         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
4695         * basic-block.h (struct basic_block_def): Remove skip marker from
4696         loop_father field.
4697
4698 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
4699
4700         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
4701         of 0 in the call to expand_expr().
4702         (expand_builtin_mathfn_3): Ditto.
4703         (expand_builtin_interclass_mathfn): Ditto.
4704         (expand_builtin_cexpi): Ditto.
4705         (expand_builtin_int_roundingfn): Ditto.
4706         (expand_builtin_int_roundingfn_2): Ditto.
4707         (expand_builtin_pow): Ditto.
4708         (expand_builtin_powi): Ditto.
4709         (expand_builtin_bswap): Ditto.
4710         (expand_builtin_unop): Ditto.
4711         (expand_builtin_fabs): Ditto.
4712         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
4713         the call to expand_expr().
4714         (expand_builtin_sync_operation): Ditto.
4715         (expand_builtin_compare_and_swap): Ditto.
4716         (expand_builtin_lock_test_and_set): Ditto.
4717         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
4718         instead of 0 in the call to expand_expr().
4719         (expand_builtin_extract_return_addr): Ditto.
4720         (expand_builtin_eh_return): Ditto.
4721         (expand_eh_return): Ditto.
4722         * explow.c (expr_size): Ditto.
4723         * expr.c (optimize_bitfield_assignment_op): Ditto.
4724         (expand_assignement): Ditto.
4725         (store_expr): Ditto.
4726         (store_field): Ditto.
4727         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
4728         the call to expand_expr().
4729         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
4730         in the call to expand_expr().
4731         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
4732         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
4733         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
4734         of expand_expr().
4735         * optabs.c (expand_vec_shift_expr): Ditto.
4736         (expand_vec_cond_expr): Ditto.
4737         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
4738         call to expand_expr().
4739         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
4740         in the call to expand_expr().
4741
4742 2007-05-14  Dave Korn  <dave.korn@artimi.com>
4743
4744         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
4745
4746 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
4747
4748         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
4749         instead of c_common_unsigned_type.
4750         (c_common_unsigned_type): Remove.
4751         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
4752         c_common_unsigned_type.
4753         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
4754         c_common_unsigned_type.
4755         * c-common.h (c_common_unsigned_type): Remove.
4756         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
4757         c_common_unsigned_type.
4758         * c-format.c (check_format_types): Use unsigned_type_for instead of
4759         c_common_unsigned_type.
4760         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4761         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
4762         c_common_unsigned_type.
4763         * convert.c (convert_to_integer): Use unsigned_type_for instead of
4764         lang_hooks.types.unsigned_type.
4765         * expmed.c (make_tree): Use unsigned_type_for instead of
4766         lang_hooks.types.unsigned_type.
4767         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
4768         lang_hooks.types.unsigned_type.
4769         (build_range_check): Likewise.
4770         (fold_unary): Likewise.
4771         (fold_binary): Likewise.
4772         (fold_ternary): Likewise.
4773         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4774         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
4775         * tree.c (get_unsigned_type): New.
4776         (unsigned_type_for): Use get_unsigned_type instead of
4777         lang_hooks.types.unsigned_type.
4778
4779 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
4780
4781         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
4782         to m68k_get_function_kind.  Update its prototype.
4783         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
4784         interrupt_thread.
4785         (m68k_interrupt_function_p): Return enum m68k_function_type
4786         instead of bool.  Rename to m68k_get_function_kind.
4787         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
4788         target is not fido.
4789         (m68k_compute_frame_layout): Don't mark any register for save
4790         if an interrupt_thread attribute is specified.
4791         (m68k_hard_regno_rename_ok): Update a use of
4792         m68k_interrupt_function_p.
4793         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
4794         m68k_interrupt_function_p.
4795         (m68k_function_type): New.
4796         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
4797         for a function with an interrupt_thread attribute.
4798         * doc/extend.texi: Document the interrupt_thread attribute.
4799
4800 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
4801
4802         Fix PR tree-optimization/31911
4803         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
4804         if they didn't change the expression.
4805
4806 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
4807
4808         * tree-scalar-evolution.c (resolve_mixers): Exported.
4809         * tree-scalar-evolution.h (resolve_mixers): Declare.
4810         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
4811         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
4812         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
4813         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
4814         init_array_ref, init_pointer_ref, analyze_indirect_ref,
4815         strip_conversion, analyze_offset_expr, address_analysis,
4816         object_analysis, analyze_offset): Removed.
4817         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
4818         split_constant_offset, canonicalize_base_object_address,
4819         object_address_invariant_in_loop_p, disjoint_objects_p,
4820         dr_may_alias_p, dr_address_invariant_p): New functions.
4821         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
4822         and dr_analyze_alias.
4823         (initialize_data_dependence_relation): Use dr_may_alias_p
4824         and object_address_invariant_in_loop_p.
4825         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
4826         is chrec_dont_know.
4827         (find_data_references_in_stmt): Restrict the analysis of data references
4828         to the given loop nest.
4829         (find_data_references_in_loop): Made static.  Pass loop nest to
4830         find_data_references_in_stmt.
4831         (compute_data_dependences_for_loop): Use DR_VOPS.
4832         (free_data_ref): Free DR_VOPS.
4833         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
4834         (struct innermost_loop_behavior): ... new.
4835         (struct base_object_info): Replaced by ...
4836         (struct indices): ... new.
4837         (struct dr_alias): New.
4838         (enum data_ref_type): Removed.
4839         (struct data_reference): Consist of struct innermost_loop_behavior,
4840         struct indices and struct dr_alias.
4841         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
4842         (DR_MEMTAG): Renamed to ...
4843         (DR_SYMBOL_TAG): ... this.
4844         (find_data_references_in_loop): Declaration removed.
4845         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
4846         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
4847         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
4848         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
4849
4850 2007-05-13  Revital Eres  <eres@il.ibm.com>
4851
4852         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
4853         which walks virtual def-use chains to find redundant stores.
4854         (dse_optimize_stmt): Call it.
4855
4856 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4857
4858         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
4859         * passes.c (init_optimization_passes): Move pass_jump_bypass
4860         after loop2.
4861
4862         * basic-block.h (bb_has_eh_pred): Fix style issue.
4863
4864 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4865
4866         PR rtl-optimization/31848
4867         * loop-invariant.c (move_invariant_reg): If we move an insn
4868         with a REG_EQUAL note, and that insn is not always executed,
4869         remove the REG_EQUAL note.
4870
4871 2007-05-12  Richard Guenther  <rguenther@suse.de>
4872
4873         PR tree-optimization/31797
4874         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
4875         propagate into a stmt that has volatile ops.
4876
4877 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4878
4879         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4880         (gcc_tooldir): Likewise.
4881         * configure: Regenerate.
4882         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4883         old configure.ac gcc_tooldir setting.
4884         (prefix_to_exec_prefix): New variable.
4885         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4886         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4887
4888 2007-05-11  Silvius Rus  <rus@google.com>
4889
4890         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
4891         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
4892         * c-common.h (strict_aliasing_warning): Change return type.
4893         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
4894         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
4895         (build_c_cast): Condition call to strict_aliasing_warning.
4896         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
4897         * flags.h (set_Wstrict_aliasing): Declare.
4898         * opts.c (set_Wstrict_alising): Define, add call to.
4899         * tree-flow.h (strict_aliasing_warning_backend): Declare.
4900         * tree-ssa-alias-warnings.c: New file.
4901         * tree-ssa-alias.c (compute_may_aliases): Add call to
4902         strict_aliasing_warning_backend.
4903
4904 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
4905
4906         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
4907         Use loop_depth and loop_outer accessor functions.
4908         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
4909         determine_invariantness_stmt, move_computations_stmt): Ditto.
4910         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
4911         add_loop, loopify, unloop, fix_loop_structure): Ditto.
4912         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
4913         * tree-scalar-evolution.c (interpret_loop_phi,
4914         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
4915         instantiate_parameters_1, scev_const_prop): Ditto.
4916         * cfghooks.c (make_forwarder_block): Ditto.
4917         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
4918         * modulo-sched.c (loop_canon_p): Ditto.
4919         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
4920         slpeel_can_duplicate_loop_p): Ditto.
4921         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
4922         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4923         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
4924         cancel_loop, verify_loop_structure): Ditto.
4925         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
4926         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
4927         superloops vector instead of "pred" array.
4928         (establish_preds): Take father loop as an argument.  Initialize the
4929         superloops vector.
4930         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
4931         initialize loop->outer.
4932         (flow_loop_tree_node_remove): Truncate the superloops vector.
4933         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
4934         "pred" merged to "superloops" vector.
4935         (loop_depth, loop_outer): New.
4936         (fel_init): Use loop_outer.
4937
4938 2007-05-11  Jan Hubicka  <jh@suse.cz>
4939
4940         * cgraphunit.c: Include gt-cgraphunit.h
4941         (static_ctors, static_dtors): New static vars.
4942         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
4943         based on implementation in c-common.c
4944         (cgraph_finalize_function): Call record_cdtor_fn.
4945         (cgraph_optimize): Call cgraph_build_cdtor_fns.
4946         * decl.c (finish_function): Do not call c_record_cdtor_fn.
4947         (c_write_global_declarations): Do not call c_build_cdtor_fns.
4948         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
4949         build_cdtor, c_build_cdtor_fns): Remove.
4950         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
4951         c_build_cdtor_fns): Remove prototype.
4952
4953 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
4954
4955         PR other/31852
4956         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
4957         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
4958         * builtins.c (fold_builtin_memchr): New.
4959         (expand_builtin_memchr): Call the latter.
4960         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
4961         * doc/extend.texi ([Other built-in functions provided by GCC]):
4962         Document memchr.
4963
4964 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
4965
4966         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
4967         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
4968         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
4969         PFPO_OP1_TYPE_SHIFT): Constants added.
4970         (DFP_ALL): Mode macro defined.
4971         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
4972         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
4973         Insn definitions added.
4974         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
4975         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
4976         Expanders added.
4977
4978 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
4979
4980         PR tree-optimization/31885
4981         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
4982         to be undetermined.
4983         (automatically_generated_chrec_p): Return false for NULL.
4984
4985 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4986
4987         * config/bfin/bfin.h (MOVE_RATIO): Define.
4988
4989 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
4990
4991         * config.gcc (sparc-wrs-vxworks): New target.
4992         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
4993         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
4994         * config/sparc/sparc.h: Include vxworks-dummy.h.
4995         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
4996         include LABEL_REFs too.
4997         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
4998         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
4999         VxWorks.
5000         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
5001         on VxWorks.
5002         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
5003         (sparc_emit_call_insn): New function.
5004         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
5005         functions when generating VxWorks PIC.
5006         * config/sparc/sparc.md (vxworks_load_got): New pattern.
5007         (call, call_value): Use sparc_emit_call_insn instead of
5008         emit_call_insn.
5009
5010 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
5011
5012         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
5013
5014 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
5015
5016         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
5017         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
5018         instead of operand_subword.
5019
5020 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
5021
5022         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
5023         * config/bfin/bfin.c (bfin_local_alignment): New function.
5024         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
5025
5026 2007-05-08  Chao-ying Fu  <fu@mips.com>
5027
5028         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
5029         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
5030         (smsub_widen_optab, umsub_widen_optab): Define.
5031         * optabs.c (init_optabs): Initialize smsub_widen_optab and
5032         umsub_widen_optab.
5033         * genopinit.c (optabs): Fill in smsub_widen_optab and
5034         umsub_widen_optab.
5035         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
5036         and umsub_widen_optab to implement multiply-subtract sequences.
5037         * config/mips/mips.md (*msac<u>_di): Rename to...
5038         (<u>msubsidi4): ...this.  Extend condition to include
5039         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
5040         of operand 0 to "ka" and use the three-operand form of msub<u>
5041         for TARGET_DSPR2.
5042         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
5043         to define_expands.
5044
5045 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
5046
5047         PR rtl-optimization/28011
5048         * reload.c (push_reload): Set dont_share if IN appears in OUT
5049         also when IN is a PLUS rtx.
5050         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
5051         are same PLUS rtx.
5052
5053 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
5054
5055         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
5056         call unshare_all_decls.
5057         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
5058         (unshare_all_decls): Remove.
5059
5060 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
5061
5062         PR 31847
5063         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
5064         dumps.
5065
5066 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
5067             Nigel Stephens  <nigel@mips.com>
5068
5069         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
5070         Update comments and all uses.
5071         (MIN_FPRS_PER_FMT): Define.
5072         * config/mips/mips.c (function_arg): Fix to correctly handle
5073         the -mips32r2 -mfp64 -mabi=32 case.
5074         (override_options): Enable use of odd-numbered registers for
5075         SFmode values on MIPS32.
5076         (mips_save_reg_p): Save whole floating-point register pair if
5077         either half is used.
5078         (compute_frame_size): Fix comment.
5079
5080 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
5081
5082         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
5083         argument of type bool.
5084         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
5085         argument. Safely select temporary P register according to it.
5086         (do_link): Change call site of add_to_reg accordingly.
5087         (do_unlink): Add epilogue_p as a fourth argument and pass it
5088         to add_to_reg.
5089         (expand_interrupt_handler_epilogue): Change call of do_unlink
5090         accordingly.
5091         (bfin_expand_prologue): Add a third argument sibcall_p.
5092         * config/bfin/bfin.md (epilogue): Change call of
5093         bfin_expand_epilogue accordingly.
5094         (sibcall_epilogue): Likewise.
5095         (eh_return_internal): Likewise.
5096
5097         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
5098         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
5099         * config/bfin/bfin.c (bfin_handle_option): Handle
5100         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
5101         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
5102         Support bf534, bf536 and bf561.
5103         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
5104
5105 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
5106
5107         PR target/31854
5108         * config/i386/i386.c (ix86_function_regparm): Process local
5109         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
5110
5111 2007-05-07  Mike Stump  <mrs@apple.com>
5112
5113         * doc/invoke.texi (Warning Options): Document that -Wempty-body
5114         also checks for and while statements in C++.
5115
5116 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
5117
5118         * gcc.c (at_file_supplied): New variable.
5119         (main): Set it if we expanded argv.
5120         (do_spec_1): Pass an @-file to the linker if we were called with
5121         an @-file argument and HAVE_GNU_LD.
5122         * collect2.c (at_file_supplied): New variable.
5123         (response_file): New variable.
5124         (collect_exit): Unlink response_file if necessary.
5125         (handler): Likewise.
5126         (do_wait): Likewise.
5127         (main): Set at_file_supplied if we expanded argv.
5128         (collect_execute): Pass an @-file to subprocesses if we were called
5129         with an @-file argument.
5130         * configure.ac: Add define for HAVE_GNU_LD.
5131         * configure: Regenerate.
5132         * config.in: Regenerate.
5133
5134 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
5135
5136         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
5137         operand to HI mode.
5138         (mulsi3): New.
5139         (divsi3): New.
5140         (udivsi3): New.
5141
5142 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
5143
5144         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
5145         (TARGET_ENCODE_SECTION_INFO): Re-define.
5146         (m32c_encode_section_info): New
5147         (function_vector_handler): New
5148         (current_function_special_page_vector): New
5149         (m32c_special_page_vector_p): New.
5150         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
5151         Prototype.
5152         * config/m32c/jump.md: Added instruction JSRS for functions
5153         with attribute "function_vector".
5154         * doc/extend.texi (function_vector): Added description
5155         for M16C, M32C targets.
5156
5157 2007-05-07  DJ Delorie  <dj@redhat.com>
5158
5159         PR 31794
5160         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
5161         ashrpsi3, lshrpsi3): Update shift count constraint.
5162
5163 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
5164             Nathan Froyd  <froydnj@codesourcery.com>
5165
5166         PR 22133
5167         * c-incpath.c (add_path): Strip trailing path separators.
5168
5169 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
5170
5171         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
5172         Free dominance info before purging EH edges.
5173         (eliminate_degenerate_phis): Likewise.
5174         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
5175
5176 2007-05-07  Jan Hubicka  <jh@suse.cz>
5177
5178         * gimplify.c (gimplify_expr): Do not crash when folding
5179         (void *)(int)&a + 4.
5180
5181 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5182
5183         PR driver/31694
5184         * c-opts.c (lang_fortran): Make it non static.
5185         * c-common.h (lang_fortran): New prototype.
5186         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
5187         -lang-fortran option was passed by the driver.
5188
5189 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
5190
5191         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
5192         of ASSERT_CHECKING.  Tweak message.
5193
5194 2007-05-06  Revital Eres  <eres@il.ibm.com>
5195
5196         PR 30957
5197         * loop-unroll.c (insert_var_expansion_initialization):
5198         Initialize the expansions with -zero instead of +zero.
5199
5200 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
5201
5202         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
5203         into pic and non-pic versions. Mark r19 as used for
5204         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
5205         for tgd_load, tld_load and tie_load .
5206         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
5207         version of tgd_load, tld_load and tie_load depending on the
5208         value of flag_pic.
5209
5210 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
5211             Jakub Jelinek  <jakub@redhat.com>
5212
5213         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
5214         (__do_global_dtors_aux): Use more paranoid loop to run
5215         destructors if HIDDEN_DTOR_LIST_END.
5216         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
5217
5218 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
5219
5220         * varasm.c (align_variable): Don't increase alignment for
5221         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
5222         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
5223
5224 2007-05-04  Josh Conner  <jconner@apple.com>
5225
5226         * basic-block.h (cdi_direction): Assign values to all enumeration
5227         constants.
5228         (dom_computed): Remove.
5229         (dom_info_state): New.
5230         (set_dom_info_availability): New.
5231         * tree-ssa-loop-im.c (determine_invariantness): Initialize
5232         walk_data.dom_direction.
5233         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
5234         instead of dom_computed[].
5235         (split_edge): Likewise.
5236         (create_basic_block): Likewise.
5237         (merge_blocks): Likewise.
5238         * ifcvt.c (find_if_header): Likewise.
5239         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
5240         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
5241         * tree-ssa.c (verify_ssa): Likewise.
5242         * tree-cfg.c (tree_verify_flow_info): Likewise.
5243         (remove_edge_and_dominated_blocks): Likewise.
5244         * dominance.c (dom_computed): Make static.
5245         (calc_dfs_tree_nonrec): Change third param to a bool.
5246         (calc_dfs_tree): Change second param to a bool.
5247         (calc_idioms): Change second param to a bool.  Use
5248         dom_convert_dir_to_idx.
5249         (init_dom_info): Validate dir before using.
5250         (dom_convert_dir_to_idx): New.
5251         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
5252         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
5253         (free_dominance_info): Use dom_convert_dir_to_idx.
5254         (get_immediate_dominator): Likewise.
5255         (set_immediate_dominator): Likewise.
5256         (get_dominated_by): Likewise.
5257         (redirect_immediate_dominators): Likewise.
5258         (nearest_common_denominator): Likewise.
5259         (dominated_by_p): Likewise.
5260         (bb_dom_dfs_in): Likewise.
5261         (bb_dom_dfs_out): Likewise.
5262         (recount_dominator): Likewise.
5263         (iterate_fix_dominators): Likewise.
5264         (add_to_dominance_info): Likewise.
5265         (delete_from_dominance_info): Likewise.
5266         (first_dom_son): Likewise.
5267         (next_dom_son): Likewise.
5268         (dom_info_available_p): Likewise.
5269         (dom_info_state): New.
5270         (set_dom_info_availability): New.
5271
5272 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5273
5274         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
5275         Expander removed.
5276         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
5277
5278 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
5279
5280         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
5281         (subdi3, subdi_carry): Delete.
5282
5283 2007-05-04  Jan Hubicka  <jh@suse.cz>
5284             Richard Guenther  <rguenther@suse.de>
5285
5286         * opts.c (decode_options): Do not fiddle with inlining
5287         parameters in case of optimizing for size.
5288         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
5289         for size do nothing.
5290         (cgraph_decide_inlining_of_small_function): When optimizing for
5291         size never inline functions increasing caller size.
5292         (cgraph_early_inlining): Inline for size when optimizing for size.
5293
5294 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
5295
5296         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
5297         logical operations piecewise.
5298         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
5299         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
5300         subdi_sesidi_di): Delete.
5301         (add_with_carry): Produce carry in CC instead of a DREG to shorten
5302         the generated sequence.  Allow three-reg add in constraints.  Rewrite
5303         the rtl expression for carry to avoid zero_extend of a constant.
5304         (sub_with_carry): New pattern.
5305         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
5306         different sequence not involving jumps.
5307         (notbi): Now a named pattern.
5308
5309 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
5310
5311         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
5312         Add the note about a significant loss of accuracy of some
5313         mathematical routines when these options are used.
5314
5315 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5316
5317         * haifa-sched.c (rtx_vec_t): New typedef.
5318         (contributes_to_priority_p): Extract piece of priority () into new
5319         static function.
5320         (priority): Use the function.  Add assertion.
5321         (rank_for_schedule, set_priorities): Add assertion to check that
5322         insn's priority is initialized.
5323         (clear_priorities, calc_priorities): Change signature.  Make it update
5324         all relevant insns.  Update all callers ('add_to_speculative_block ()'
5325         and 'create_block_check_twin ()').
5326         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
5327         Add new field 'priority_status'.
5328         (INSN_PRIORITY_STATUS): New macro.
5329         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
5330
5331 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5332
5333         * sched-ebb.c (debug_ebb_dependencies): New static function.
5334         (init_ready_list): Use it.
5335
5336         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
5337         with changed signature and 'debug_rgn_dependencies ()'.
5338         (debug_rgn_dependencies): New static function.
5339         (init_ready_list): Use it.
5340
5341         * sched-int.h (debug_dependencies): Declare.
5342
5343 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5344
5345         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
5346
5347 2007-05-04  Dirk Mueller  <dmueller@suse.de>
5348
5349         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
5350
5351 2007-05-03  Jan Hubicka  <jh@suse.cz>
5352
5353         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
5354         for pointer type in more cases than before.
5355
5356         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
5357
5358         * tree-object-size.c (plus_expr_object_size): When operand size is
5359         unknown, return unknown.
5360
5361 2007-05-03  Dirk Mueller  <dmueller@suse.de>
5362
5363         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
5364
5365         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
5366         options.
5367
5368         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
5369
5370 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
5371
5372         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
5373
5374 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
5375
5376         * config/soft-fp/double.h, config/soft-fp/extended.h,
5377         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
5378         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
5379         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
5380         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
5381         glibc CVS.
5382
5383 2007-05-03  Ian Lance Taylor  <iant@google.com>
5384
5385         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
5386         MASK_PPC_GFXOPT for 8540 or 8548.
5387
5388 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5389
5390         * tree-vect-transform.c (vect_update_inits_of_drs): Use
5391         vect_print_dump_info() to output debug information.
5392
5393 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5394
5395         PR target/31768
5396         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
5397         operands of size 2 when operand is not MEM_P.
5398
5399 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5400
5401         PR tree-optimization/30565
5402         * lambda-code.c (perfect_nestify): Fix updating of dominators.
5403
5404 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5405
5406         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
5407         (umulsi3_highpart): Use them.
5408         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
5409         for final accumulator to D regisster tranfser.
5410
5411 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
5412
5413         PR tree-optimization/31699
5414         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
5415         code.
5416         (vect_enhance_data_refs_alignment): Compute peel amount using
5417         TYPE_VECTOR_SUBPARTS instead of vf.
5418         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
5419
5420 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
5421
5422         PR bootstrap/31776
5423         * system.h: Remove inclusion of double-int.h
5424         * tree.h: Include double-int.h
5425         * gengtype.c: Likewise
5426         * cfgloop.h: Likewise
5427         * Makefile.in: Adjust dependencies on double-int.h
5428
5429 2007-05-02  Eric Christopher  <echristo@apple.com>
5430
5431         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
5432         -shared to -Zdynamiclib.
5433
5434 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
5435
5436         PR c++/31663
5437         * c-common.c (strip_pointer_or_array_types): New function.
5438         * c-common.h (strip_pointer_or_array_types): New function declaration.
5439
5440 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5441
5442         PR tree-optimization/31771
5443         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
5444
5445 2007-05-02  Paul Brook  <paul@codesourcery.com>
5446
5447         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
5448
5449 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5450
5451         PR middle-end/29715
5452         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
5453         transformation.
5454
5455 2007-05-02  Nick Clifton  <nickc@redhat.com>
5456
5457         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
5458
5459 2007-05-02  Richard Guenther  <rguenther@suse.de>
5460
5461         PR tree-optimization/31146
5462         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
5463         argument, single_use_p.  If we have a single use that is
5464         a conversion to the definition rhs type, propagate that rhs.
5465         (forward_propagate_addr_expr): Pass single_use_p argument
5466         to forward_propagate_addr_expr_1.
5467
5468 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
5469
5470         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
5471         variable.
5472
5473 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5474
5475         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
5476         'AMD Family 10 core'.
5477
5478 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5479
5480         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
5481         and athlon64-sse3 as improved versions of k8, opteron and athlon64
5482         with SSE3 instruction set support.
5483         * doc/invoke.texi: Likewise.
5484
5485 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5486
5487         * config/i386/i386.c (override_options): Tuning 32-byte loop
5488         alignment for amdfam10 architecture. Increasing the max loop
5489         alignment to 24 bytes.
5490
5491 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
5492
5493         * config/m68k/constraints.md: New.
5494         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
5495         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
5496         EXTRA_CONSTRAINT): Remove.
5497         * config/m68k/m68k.md: Include constraints.md.
5498         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
5499
5500 2007-05-01  Ian Lance Taylor  <iant@google.com>
5501
5502         PR tree-optimization/31739
5503         * tree-vrp.c (vrp_val_is_max): New static function.
5504         (vrp_val_is_min): New static function.
5505         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
5506         copying the node.
5507         (set_value_range): Use vrp_val_is_{max,min}.
5508         (extract_range_from_assert): Likewise.
5509         (extract_range_from_binary_expr): Likewise.
5510         (extract_range_from_unary_expr): Likewise.
5511         (dump_value_range, vrp_meet): Likewise.
5512         (vrp_visit_phi_node): Likewise.
5513         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
5514
5515 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
5516
5517         * config/i386/gmon-sol2.c (size_t): New type.
5518         (intptr_t): Likewise.
5519         (s_textsize): Declare as size_t.
5520         (sbrk): Declare.
5521         (monstartup): Use size_t for sizes.
5522         (_mcount): Save and restore registers.
5523         (internal_mcount): Pass 0 as the first argument to monstartup
5524         in 64-bit mode.
5525         (moncontrol): Convert pointer to appropriately sized integer
5526         before passing to profil.
5527
5528 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5529
5530         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
5531         __NO_FPRS__, not just if _SOFT_DOUBLE.
5532         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
5533         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
5534         also for E500 double.
5535         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
5536         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
5537         && !TARGET_FPRS).
5538
5539 2007-05-01  Richard Guenther  <rguenther@suse.de>
5540
5541         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
5542         is NULL.
5543
5544 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5545
5546         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
5547
5548 2007-05-01  Jan Hubicka  <jh@suse.cz>
5549
5550         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
5551         invariant.
5552
5553 2007-05-01  Jan Hubicka  <jh@suse.cz>
5554
5555         * tree.h (maybe_fold_offset_to_component_ref): Remove.
5556         (maybe_fold_offset_to_reference): Declare.
5557         * fold-const.c (fold_unary): Do not fold
5558         (type *)&A into &A->field_of_type_and_offset_0
5559         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
5560         size is unknown, give up.
5561         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
5562         offsets.
5563         (maybe_fold_offset_to_reference): New.
5564         (maybe_fold_stmt_indirect): Use it.
5565         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
5566         * gimplify.c (gimplify_conversion): Canonicalize conversions to
5567         field references.
5568         (gimplify_expr): Likewise for plus_expr.
5569
5570 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
5571
5572         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
5573         bsi_after_labels.  Always insert statements before bsi.
5574         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
5575         * predict.c (apply_return_prediction): Check for empty blocks.
5576         * cfgexpand.c (lab_rtx_for_bb): New variable.
5577         (label_rtx_for_bb): Do not create new tree labels.
5578         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
5579         (tree_expand_cfg): Initialize lab_rtx_for_bb.
5580         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
5581         creating edges.
5582         (label_for_bb): Add field used.
5583         (update_eh_label, main_block_label): Mark the label used.
5584         (cleanup_dead_labels): Remove unused labels.
5585
5586 2007-05-01  Richard Guenther  <rguenther@suse.de>
5587
5588         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
5589         if it is not about to be set.
5590         (get_value_range): Do not pre-allocate equiv bitmap.
5591         (update_value_range): No need to clear equiv field.
5592         (add_equivalence): Change prototype to get bitmap pointer.
5593         Allocate bitmap here if it is not already.
5594         (extract_range_from_assert): Do not allocate bitmap here.
5595         Update callers to add_equivalence.
5596         (extract_range_from_ssa_name): Likewise.
5597         (get_vr_for_comparison): New static helper.
5598         (compare_name_with_value): Handle NULL equiv bitmap by
5599         peeling the first iteration of the comparison loop.
5600         Use get_vr_for_comparison.
5601         (compare_names): Handle NULL equiv bitmaps by using fake
5602         ones.  Use get_vr_for_comparison.
5603
5604 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
5605
5606         * double-int.c (mpz_set_double_int): Moved from
5607         tree-ssa-loop-niter.c.
5608         (mpz_get_double_int): Likewise; also, add option to wrap
5609         out-of-range integers.
5610         * double-int.h: New prototypes for above.
5611         * tree.c (get_static_type_bounds): Moved from
5612         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
5613         TYPE_MAX_VALUE if they exist..
5614         * tree.h: New prototype for above.
5615         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
5616         get_type_bounds calls.
5617         (mpz_set_double_int): Move to double-int.c.
5618         (get_type_bounds): Move to tree.c, rename to
5619         get_static_type_bounds.
5620         (mpz_to_double_int): Move to double-int.c, rename to
5621         mpz_get_double_int.
5622
5623 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
5624
5625         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
5626         DIV0 exception can fall through to a normal return.
5627
5628 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
5629
5630         PR middle-end/22156
5631         Temporarily revert:
5632         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
5633         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
5634         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5635         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5636         initialize align to silence bogus warning.
5637         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5638         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5639         all_no_warning.
5640         (struct sra_walk_fns): Remove use_all parameter from use.
5641         (sra_hash_tree): Handle BIT_FIELD_REFs.
5642         (sra_elt_hash): Don't hash bitfld blocks.
5643         (sra_elt_eq): Skip them in parent compares as well.  Handle
5644         BIT_FIELD_REFs.
5645         (sra_walk_expr): Don't maintain or pass down use_all_p.
5646         (scan_use): Remove use_all parameter.
5647         (scalarize_use): Likewise.  Re-expand assignment to
5648         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5649         output, and re-scalarize after output.  Don't mark anything
5650         for no warning.
5651         (scalarize_ldst): Adjust.
5652         (scalarize_walk_gimple_modify_statement): Likewise.
5653         (build_element_name_1): Handle BIT_FIELD_REFs.
5654         (instantiate_element): Don't warn for any element whose parent
5655         is used as a whole.
5656         (instantiate_missing_elements_1): Return the sra_elt.
5657         (canon_type_for_field): New.
5658         (try_instantiate_multiple_fields): New.
5659         (instantiate_missing_elemnts): Use them.
5660         (mark_no_warning): Removed.
5661         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5662         (REPLDUP, sra_build_elt_assignment): New.
5663         (generate_copy_inout): Use them.
5664         (generate_element_copy): Likewise.  Handle bitfld differences.
5665         (generate_element_zero): Don't recurse for blocks.  Use
5666         sra_build_elt_assignment.
5667         (generate_one_element_int): Take elt instead of var.  Use
5668         sra_build_elt_assignment.
5669         (generate_element_init_1): Adjust.
5670         (scalarize_use, scalarize_copy): Use REPLDUP.
5671         (scalarize_ldst): Move assert before dereference.
5672         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5673
5674 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5675
5676         PR C++/31721
5677         * tree.c (reconstruct_complex_type): Reconstruct a reference
5678         correctly.
5679         Also use the same mode for the pointer as the old pointer type.
5680
5681 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
5682
5683         * doc/trouble.texi (Interoperation): Remove note about Ultrix
5684         Fortran compiler.
5685
5686 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
5687
5688         PR rtl-optimization/31676
5689         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
5690         (df_refs_record): Call it.
5691
5692 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5693
5694         * rtl.def (SS_ABS): New code.
5695         * config/bfin/bfin.c (print_operand): New modifier 'v'.
5696         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
5697         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
5698         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
5699         (bfin_init_builtins): Define them.
5700         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
5701         (bfin_expand_builtin): ... and handle the others here.
5702         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
5703         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
5704         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
5705         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
5706         operand is only HImode.
5707
5708 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
5709
5710         * regclass.c (scan_one_insn): Remove splitting of
5711         two address insns.
5712
5713 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
5714             Nigel Stephens  <nigel@mips.com>
5715
5716         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
5717
5718 2007-04-28  Jan Hubicka  <jh@suse.cz>
5719
5720         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
5721         insn_locators_alloc instead of insn_locators_initialize;
5722         call reset_block_changes.
5723         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5724         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
5725         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
5726         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5727         * config/score/score.c (th_output_mi_thunk): Likewise.
5728         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5729         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
5730         tolerate uninitialized locator info.
5731
5732         Re-apply:
5733         * function.c (init_function_start): Don't init line number info.
5734         (expand_function_end): Update.
5735         (reset_block_changes, record_block_change, finalize_block_changes,
5736         check_block_change, free_block_changes): Kill.
5737         * function.h (reset_block_changes, record_block_change,
5738         finalize_block_changes, check_block_change, free_block_changes): Remove
5739         prototypes.
5740         (struct function): Remove ib_boundaries_block.
5741         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5742         Use curr_insn_locator to initialize locator.
5743         (emit_line_note): Remove.
5744         * cfgexpand.c (expand_gimple_cond_expr): Update.
5745         (construct_exit_block): Likewise.
5746         (tree_expand_cfg): Initialize/finalize locators.
5747         * expr.c (expand_expr_real): Update.
5748         * cfglayout.c (line_locators_locs, line_locators_lines,
5749         file_locators_locs, file_locators_files): Remove.
5750         (set_block_levels): Move to cfgexpand.c.
5751         (insn_locators_initialize): Remove.
5752         (pass_insn_locators_initialize): Remove.
5753         (locations_locators_locs, locations_locators_vals): New static vars.
5754         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5755         Likewise.
5756         (insn_locators_alloc, insn_locators_finalize,
5757         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5758         New functions.
5759         (locator_location): New.
5760         (locator_line, locator_file): Rewrite.
5761         * rtl.h (emit_line_note): Kill.
5762         (insn_locators_alloc, insn_locators_finalize,
5763         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5764         Declare.
5765         * tree-inline.c (initialize_cfun): Do not initialize
5766         ib_boundaries_block.
5767         * passes.c (pass_insn_locators_initialize): Remove.
5768
5769 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
5770
5771         * tree-cfg.c (move_block_to_fn): Release bb from dominance
5772         info.  Update last_basic_block correctly.
5773
5774 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5775
5776         PR target/31701
5777         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
5778         register itself to hold the offset constant.  Tell flow the use
5779         of r4 and r5 when they are used.
5780
5781 2007-04-27  Richard Guenther  <rguenther@suse.de>
5782
5783         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
5784         if we simplified anything.
5785         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
5786         warnings until we did a simplification and the stmt was not
5787         marked as TREE_NO_WARNING.
5788
5789 2007-04-27  Mike Stump  <mrs@apple.com>
5790
5791         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
5792
5793 2007-04-27  Ian Lance Taylor  <iant@google.com>
5794
5795         PR middle-end/31710
5796         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
5797         TYPE_MAX_VALUE exist, convert them to the new type.
5798
5799 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5800
5801         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
5802         if it claims to be available.
5803         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
5804         edge is redirected.
5805         (perform_tree_ssa_dce): Always free postdominators.
5806
5807 2007-04-27  Richard Henderson  <rth@redhat.com>
5808
5809         * config/alpha/predicates.md (aligned_memory_operand): Mark
5810         as define_special_predicate.
5811         (unaligned_memory_operand, normal_memory_operand): Likewise.
5812         (reg_or_unaligned_mem_operand): Remove.
5813         (any_memory_operand): Match the documentation and check for
5814         non-renumbered pseudos during reload.
5815         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
5816         alpha_secondary_reload_class, update to new interface, make static.
5817         Handle CQImode like HImode.  Remove FP subreg check.
5818         (alpha_expand_mov): Use replace_equiv_address.
5819         (alpha_expand_mov_nobwx): Use any_memory_operand.
5820         (TARGET_SECONDARY_RELOAD): New.
5821         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
5822         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
5823         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
5824         * config/alpha/alpha.md: ... here.
5825         (RELOAD12, reloadmode): New.
5826         (movcqi): New.
5827         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
5828         Don't handle the aligned case here.
5829         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
5830         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
5831         reload_inhi_help.  Don't expect a scratch register.
5832         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
5833         reload_outhi_help.
5834         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
5835
5836 2007-04-27  Richard Guenther  <rguenther@suse.de>
5837
5838         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
5839
5840 2007-04-27  Richard Guenther  <rguenther@suse.de>
5841
5842         PR tree-optimization/30965
5843         PR tree-optimization/30978
5844         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
5845         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
5846         (find_equivalent_equality_comparison): Likewise.
5847         (simplify_cond): Likewise.
5848         (get_prop_source_stmt): New helper.
5849         (get_prop_dest_stmt): Likewise.
5850         (can_propagate_from): Likewise.
5851         (remove_prop_source_from_use): Likewise.
5852         (combine_cond_expr_cond): Likewise.
5853         (forward_propagate_comparison): New function.
5854         (forward_propagate_into_cond): Rewrite to use fold for
5855         tree combining.
5856         (tree_ssa_forward_propagate_single_use_vars): Call
5857         forward_propagate_comparison to propagate comparisons.
5858
5859 2007-04-27  Richard Guenther  <rguenther@suse.de>
5860
5861         PR tree-optimization/31715
5862         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
5863         sure to do computation on the offset in an appropriate
5864         signed type.
5865
5866 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
5867
5868         * reload.h (elimination_target_reg_p): Declare.
5869         * reload.c (find_reloads): Don't apply the reg_rtx move
5870         optimization if the SET_DEST satisfies elimination_target_reg_p.
5871         * reload1.c (elimination_target_reg_p): New function.
5872         (gen_reload): In the move/add2 fallback, make sure that op0
5873         does not overlap the destination register.
5874
5875 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5876
5877         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
5878         transform only GIMPLE_MODIFY_STMTs.
5879         * tree-complex.c (expand_complex_operations_1): Ditto.
5880         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
5881         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
5882         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
5883         branches.
5884         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5885         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
5886         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
5887         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
5888         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
5889         slpeel_add_loop_guard): Ditto.
5890         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
5891         * lambda-code.c (perfect_nestify): Ditto.
5892         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
5893         before the first statement.
5894         * tree-optimize.c (execute_free_datastructures): Fix comments.
5895         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
5896         * tree-flow.h (disband_implicit_edges): Declaration removed.
5897         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
5898         branches.
5899         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
5900         without gotos.
5901         (disband_implicit_edges, has_label_p): Removed.
5902         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
5903         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
5904         branches.
5905         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
5906         side effects.
5907         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
5908         also for COND_EXPRs.
5909         * cfgexpand.c (label_rtx_for_bb): New function.
5910         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
5911         Use label_rtx_for_bb to find the labels.
5912         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
5913         last block.  Detect fallthru edges.
5914
5915 2007-04-26  Ian Lance Taylor  <iant@google.com>
5916
5917         PR target/28675
5918         * reload.c (find_reloads_subreg_address): If the address was valid
5919         in the original mode but not in the new mode, reload the whole
5920         address.
5921
5922 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5923
5924         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
5925         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
5926         (cleanup_control_expr_graph): Do not invalidate dominance info.
5927         Record altered blocks.
5928         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
5929         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
5930         cleanup_tree_cfg_bb): New functions.
5931         (remove_forwarder_block): Do not maintain the worklist of blocks.
5932         Record altered blocks.
5933         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
5934         not over whole cfg.
5935         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
5936         delete_unreachable_blocks if dominators are not available.
5937         * tree-inline.c (optimize_inline_calls): Free dominance information
5938         earlier.
5939         * tree-flow.h (remove_edge_and_dominated_blocks,
5940         cfgcleanup_altered_bbs): Altered.
5941         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
5942         blocks.
5943         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
5944         functions.
5945         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
5946         do not invalidate dominators.
5947
5948 2007-04-26  Anatoly Sokolov <aesok@post.ru>
5949
5950         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
5951         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
5952         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
5953         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
5954
5955 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
5956
5957         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
5958
5959 2007-04-26  Richard Guenther  <rguenther@suse.de>
5960
5961         PR tree-optimization/31703
5962         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
5963         the right type for the target of the bittest.
5964
5965 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5966
5967         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
5968         ix86_sol10_return_in_memory.
5969
5970 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5971
5972         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
5973         variables.
5974
5975 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
5976
5977         PR c++/31598
5978         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
5979
5980         PR tree-optimization/30558
5981         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
5982         clear this_state.prev_try.
5983
5984 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5985             Mark Mitchell  <mark@codesourcery.com>
5986
5987         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
5988         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
5989         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
5990
5991 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5992
5993         PR driver/31107
5994         * doc/invoke.texi (%:print-asm-header): Document.
5995         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
5996         and -ftarget-help.
5997         (static_spec_functions): Add print-asm-header.
5998         (main): Print a banner before the --target-help linker options.
5999         (print_asm_header_spec_function): New function.
6000
6001 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
6002
6003         PR target/31403
6004         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
6005         (movsf_ie): Likewise.
6006
6007 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
6008
6009         * doc/extend.texi ([Type Traits]): Adjust per N2255.
6010
6011 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
6012
6013         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
6014         for divide-by-zero.
6015         (__umodsi3, __modsi3): Likewise.
6016
6017 2007-04-25  Dirk Mueller  <dmueller@suse.de>
6018
6019         * c-typeck.c (build_compound_expr): Annotate warning()
6020         call with OPT_Wunused_value.
6021         * tree-ssa.c (warn_uninit): Annotate warning with
6022         OPT_Wunintialized.
6023         * c-common.c (handle_sentinel_attribute): Annotate warning
6024         call with OPT_Wattributes.
6025
6026 2007-04-25  Thiemo Seufer  <ths@mips.com>
6027
6028         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
6029         (mips16): Fix typo.
6030         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
6031         on to the assembler.  Improve handling of -mno-mips16.  Add handling
6032         of -mno-mips3d, -mno-dsp, -mno-dspr2.
6033         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
6034         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
6035         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
6036
6037 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
6038
6039         PR target/31680
6040         * config/i386/winnt.c (i386_pe_file_end): Strip only
6041         USER_LABEL_PREFIX when writing export name.
6042
6043 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
6044
6045         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
6046         sh/elf.h, vx-common.h and vxworks.h.
6047         * config/sh/sh.h: Include config/vxworks-dummy.h.
6048         (SUBTARGET_OVERRIDE_OPTIONS): Define.
6049         (OVERRIDE_OPTIONS): Use it.
6050         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
6051         (vxworks_picreg): New pattern.
6052         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
6053         VXWORKS_OS_CPP_BUILTINS.
6054         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
6055         to their VXWORKS_* equivalents.
6056         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
6057         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
6058         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
6059         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
6060         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
6061         -mrtp/-fPIC multilibs.
6062         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
6063         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
6064         (MULTILIB_OSDIRNAMES): Delete.
6065
6066 2007-04-25  Anatoly Sokolov <aesok@post.ru>
6067
6068         PR target/18989
6069         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
6070
6071 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
6072
6073         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
6074         rounding mode to be specified by the caller.
6075         (real_to_mpfr) Likewise.
6076         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
6077         include new arguments.
6078         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
6079
6080 2007-04-24  Ian Lance Taylor  <iant@google.com>
6081
6082         PR tree-optimization/31605
6083         * tree-vrp.c (set_value_range): Check that min and max are not
6084         both overflow infinities.
6085         (set_value_range_to_value): New static function.
6086         (extract_range_from_binary_expr): Call set_value_range_to_value.
6087         (extract_range_from_cond_expr): Likewise.
6088         (extract_range_from_expr): Likewise.
6089         (extract_range_from_unary_expr): Likewise.  Don't create a range
6090         which overflows on both sides.
6091         (vrp_meet): Check for a useless range.
6092         (vrp_visit_phi_node): If we see a constant which looks like an
6093         overflow infinity, turn off the TREE_OVERFLOW flag.
6094
6095 2007-04-24  Ian Lance Taylor  <iant@google.com>
6096
6097         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
6098
6099 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
6100
6101         PR diagnostic/25923
6102         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
6103         diagnostic message is being built.
6104         * tree-pretty-print.c (dump_generic_node): Only write the
6105         formatted text into BUFFER's stream if we are not building a
6106         diagnostic message.
6107         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
6108         dump_generic_node.
6109         * Makefile.in (toplev.o): Depend on tree-pass.h.
6110
6111 2007-04-24  Ian Lance Taylor  <iant@google.com>
6112
6113         PR tree-optimization/31602
6114         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
6115         conditionals in the copied loop header.
6116         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
6117         warnings if TREE_NO_WARNING is set.
6118         * doc/invoke.texi (Warning Options): Clarify that
6119         -Wstrict-overflow does not warn about loops.
6120
6121 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
6122
6123         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
6124         expand on the comment about _Decimal128 arguments and check the
6125         integer result of the modulus operation; for 64-bit ELF ABI, ensure
6126         that _Decimal128 argument uses even/odd register pair.
6127         (function_arg): Ditto.
6128
6129 2007-04-24  Hui-May Chang <hm.chang@apple.com>
6130
6131         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
6132         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
6133
6134 2007-04-24  Richard Guenther  <rguenther@suse.de>
6135             Olga Golovanevsky  <olga@il.ibm.com>
6136
6137         * fold-const.c (multiple_of_p): Check for bottom
6138         to be zero.
6139
6140 2007-04-24  Richard Henderson  <rth@redhat.com>
6141
6142         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
6143         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
6144         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
6145         looking for non-zero bits shifted out.  Avoid a recursive call
6146         when constructing the scalar.
6147         (__floatundisf): Likewise.
6148
6149 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
6150
6151         * dwarf2out.c (field_byte_offset): Move the existing logic
6152         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
6153         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
6154
6155 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6156
6157         PR target/31641
6158         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
6159         argument of 0 for memset.
6160         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
6161         unsigned shift instead of the signed variant.
6162
6163 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6164
6165         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
6166         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
6167         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
6168         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
6169         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
6170         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
6171         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
6172         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
6173         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
6174         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
6175         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
6176         "mul<mode>3", "div<mode>3"): Insn definitions added.
6177         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
6178         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
6179         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
6180         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
6181         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
6182         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
6183         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
6184         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
6185         TARGET_FLOAT_FORMAT): Macro definitions removed.
6186         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
6187         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
6188         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
6189         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
6190         (s390_gen_rtx_const_DI): Function removed.
6191         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
6192
6193 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
6194
6195         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
6196         over an external ffs function.
6197
6198 2007-04-24  Chao-ying Fu  <fu@mips.com>
6199             Richard Sandiford  <richard@nildram.co.uk>
6200
6201         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
6202         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
6203         (smadd_widen_optab, umadd_widen_optab): Define.
6204         * optabs.c (init_optabs): Initialize smadd_widen_optab and
6205         umadd_widen_optab.
6206         * genopinit.c (optabs): Fill in smadd_widen_optab and
6207         umadd_widen_optab.
6208         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
6209         and umadd_widen_optab to implement multiply-add sequences.
6210         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
6211         (<u>maddsidi4): ...this.  Extend condition to include
6212         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
6213         of operand 0 to "ka" and use the three-operand form of madd<u>
6214         for TARGET_DSPR2.
6215         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
6216         to define_expands.
6217         * config/mips/constraints.md (ka): New register constraint.
6218
6219 2007-04-24  Jan Hubicka  <j@suse.cz>
6220
6221         Revert:
6222
6223         2007-04-23  Jan Hubicka  <jh@suse.cz>
6224         * function.c (init_function_start): Don't init line number info.
6225         (expand_function_end): Update.
6226         (reset_block_changes, record_block_change, finalize_block_changes,
6227         check_block_change, free_block_changes): Kill.
6228         * function.h (reset_block_changes, record_block_change,
6229         finalize_block_changes, check_block_change, free_block_changes): Remove
6230         prototypes.
6231         (struct function): Remove ib_boundaries_block.
6232         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6233         Use curr_insn_locator to initialize locator.
6234         (emit_line_note): Remove.
6235         * cfgexpand.c (expand_gimple_cond_expr): Update.
6236         (construct_exit_block): Likewise.
6237         (tree_expand_cfg): Initialize/finalize locators.
6238         * expr.c (expand_expr_real): Update.
6239         * cfglayout.c (line_locators_locs, line_locators_lines,
6240         file_locators_locs, file_locators_files): Remove.
6241         (set_block_levels): Move to cfgexpand.c.
6242         (insn_locators_initialize): Remove.
6243         (pass_insn_locators_initialize): Remove.
6244         (locations_locators_locs, locations_locators_vals): New static vars.
6245         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6246         Likewise.
6247         (insn_locators_alloc, insn_locators_finalize,
6248         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6249         New functions.
6250         (locator_location): New.
6251         (locator_line, locator_file): Rewrite.
6252         * rtl.h (emit_line_note): Kill.
6253         (insn_locators_alloc, insn_locators_finalize,
6254         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6255         Declare.
6256         * tree-inline.c (initialize_cfun): Do not initialize
6257         ib_boundaries_block.
6258         * passes.c (pass_insn_locators_initialize): Remove.
6259
6260 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
6261
6262         * doc/invoke.texi: Removed leading '-' from option index entries.
6263
6264 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
6265
6266         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
6267         Use phi_nodes_ptr.
6268         (create_phi_node): Use set_phi_nodes.
6269         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
6270         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
6271         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
6272         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
6273         (bsi_start, bsi_last): Use bb_stmt_list.
6274         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
6275         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
6276         Traverse the statements using tsi iterator.
6277         * basic-block.h (struct basic_block_def): Fields stmt_list
6278         and phi_nodes moved to ...
6279         (struct tree_bb_info): ... new structure.
6280         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
6281         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
6282         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
6283         (tree_verify_flow_info): Verify that il.tree is not set for
6284         entry and exit block.
6285         (tree_split_block): Use set_bb_stmt_list.
6286
6287 2007-04-23  Mike Stump  <mrs@apple.com>
6288
6289         * config/i386/i386.c (ix86_tune_features
6290         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
6291         nocona and core2.
6292
6293 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6294
6295         * config/i386/i386.md (prefix_extra): New attribute.
6296         (length): Add prefix_extra.
6297
6298         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
6299         (sse2_movntv2di): Likewise.
6300         (sse2_cvtps2dq): Likewise.
6301         (sse2_cvtpd2pi): Likewise.
6302         (sse2_cvttpd2pi): Likewise.
6303         (*sse2_cvtpd2ps): Likewise.
6304         (*add<mode>3): Likewise.
6305         (sse2_ssadd<mode>3): Likewise.
6306         (sse2_usadd<mode>3): Likewise.
6307         (*sub<mode>3): Likewise.
6308         (sse2_sssub<mode>3): Likewise.
6309         (sse2_ussub<mode>3): Likewise.
6310         (*mulv8hi3): Likewise.
6311         (*smulv8hi3_highpart): Likewise.
6312         (*umulv8hi3_highpart): Likewise.
6313         (sse2_umulv2siv2di3): Likewise.
6314         (sse2_pmaddwd): Likewise.
6315         (ashr<mode>3): Likewise.
6316         (lshr<mode>3): Likewise.
6317         (ashl<mode>3): Likewise.
6318         (sse2_ashlti3): Likewise.
6319         (sse2_lshrti3): Likewise.
6320         (*umaxv16qi3): Likewise.
6321         (*smaxv8hi3): Likewise.
6322         (*uminv16qi3): Likewise.
6323         (*sminv8hi3): Likewise.
6324         (sse2_eq<mode>3): Likewise.
6325         (sse2_gt<mode>3): Likewise.
6326         (*and<mode>3): Likewise.
6327         (sse2_nand<mode>3): Likewise.
6328         (*ior<mode>3): Likewise.
6329         (*xor<mode>3): Likewise.
6330         (sse2_packsswb): Likewise.
6331         (sse2_packssdw): Likewise.
6332         (sse2_packuswb): Likewise.
6333         (sse2_punpckhbw): Likewise.
6334         (sse2_punpcklbw): Likewise.
6335         (sse2_punpckhwd): Likewise.
6336         (sse2_punpcklwd): Likewise.
6337         (sse2_punpckhdq): Likewise.
6338         (sse2_punpckldq): Likewise.
6339         (sse2_punpckhqdq): Likewise.
6340         (sse2_punpcklqdq): Likewise.
6341         (*sse2_pinsrw): Likewise.
6342         (*sse2_pextrw): Likewise.
6343         (sse2_pshufd_1): Likewise.
6344         (sse2_uavgv16qi3): Likewise.
6345         (sse2_uavgv8hi3): Likewise.
6346         (sse2_psadbw): Likewise.
6347         (sse2_pmovmskb): Likewise.
6348         (*sse2_maskmovdqu): Likewise.
6349         (*sse2_maskmovdqu_rex64): Likewise.
6350         (sse4a_extrqi): Likewise.
6351         (sse4a_extrq): Likewise.
6352         (sse3_lddqu): Set prefix_rep.
6353         (sse3_addsubv4sf3): Likewise.
6354         (sse3_haddv4sf3): Likewise.
6355         (sse3_hsubv4sf3): Likewise.
6356         (sse_cvtss2si): Likewise.
6357         (sse_cvtss2si_2): Likewise.
6358         (sse_cvtss2siq): Likewise.
6359         (sse_cvtss2siq_2): Likewise.
6360         (sse_cvttss2si): Likewise.
6361         (sse_cvttss2siq): Likewise.
6362         (sse2_cvttps2dq): Likewise.
6363         (sse3_movshdup): Likewise.
6364         (sse3_movsldup): Likewise.
6365         (sse2_cvtsd2si): Likewise.
6366         (sse2_cvtsd2si_2): Likewise.
6367         (sse2_cvtsd2siq): Likewise.
6368         (sse2_cvtsd2siq_2): Likewise.
6369         (sse2_cvttsd2si): Likewise.
6370         (sse2_cvttsd2siq): Likewise.
6371         (*sse2_cvtpd2dq): Likewise.
6372         (*sse2_cvttpd2dq): Likewise.
6373         (sse2_pshuflw_1): Likewise.
6374         (sse2_pshufhw_1): Likewise.
6375         (sse4a_insertqi): Likewise.
6376         (sse4a_insertq): Likewise.
6377         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
6378         (ssse3_phadddv4si3): Likewise.
6379         (ssse3_phaddswv8hi3): Likewise.
6380         (ssse3_phsubwv8hi3): Likewise.
6381         (ssse3_phsubdv4si3): Likewise.
6382         (ssse3_phsubswv8hi3): Likewise.
6383         (ssse3_pmaddubswv8hi3): Likewise.
6384         (ssse3_pmulhrswv8hi3): Likewise.
6385         (ssse3_pshufbv16qi3): Likewise.
6386         (ssse3_psign<mode>3): Likewise.
6387         (ssse3_palignrti): Likewise.
6388         (abs<mode>2): Likewise.
6389         (ssse3_phaddwv4hi3): Set prefix_extra.
6390         (ssse3_phadddv2si3): Likewise.
6391         (ssse3_phaddswv4hi3): Likewise.
6392         (ssse3_phsubwv4hi3): Likewise.
6393         (ssse3_phsubdv2si3): Likewise.
6394         (ssse3_phsubswv4hi3): Likewise.
6395         (ssse3_pmaddubswv4hi3): Likewise.
6396         (ssse3_pmulhrswv4hi3): Likewise.
6397         (ssse3_pshufbv8qi3): Likewise.
6398         (ssse3_psign<mode>3): Likewise.
6399         (ssse3_palignrdi): Likewise.
6400         (abs<mode>2): Likewise.
6401         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
6402         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
6403         (sse2_pmovmskb): Set mode to SI instead of V2DF.
6404
6405 2007-04-23  Nick Clifton  <nickc@redhat.com>
6406
6407         * params.def: Fix formatting of emacs local variables.
6408
6409 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6410
6411         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
6412         move if inter-unit move isn't allowed.
6413         Don't split moving the first element of V2DI to DI to inter-unit
6414         move if inter-unit move isn't allowed.
6415
6416 2007-04-23  Richard Guenther  <rguenther@suse.de>
6417
6418         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
6419         and CDI_POST_DOMINATORS separately.
6420
6421 2007-04-23  Nick Clifton  <nickc@redhat.com>
6422
6423         * c.opt (Wformat-contains-nul): Add warning attribute.
6424
6425 2007-04-23  Jan Hubicka  <jh@suse.cz>
6426
6427         * function.c (init_function_start): Don't init line number info.
6428         (expand_function_end): Update.
6429         (reset_block_changes, record_block_change, finalize_block_changes,
6430         check_block_change, free_block_changes): Kill.
6431         * function.h (reset_block_changes, record_block_change,
6432         finalize_block_changes, check_block_change, free_block_changes): Remove
6433         prototypes.
6434         (struct function): Remove ib_boundaries_block.
6435         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6436         Use curr_insn_locator to initialize locator.
6437         (emit_line_note): Remove.
6438         * cfgexpand.c (expand_gimple_cond_expr): Update.
6439         (construct_exit_block): Likewise.
6440         (tree_expand_cfg): Initialize/finalize locators.
6441         * expr.c (expand_expr_real): Update.
6442         * cfglayout.c (line_locators_locs, line_locators_lines,
6443         file_locators_locs, file_locators_files): Remove.
6444         (set_block_levels): Move to cfgexpand.c.
6445         (insn_locators_initialize): Remove.
6446         (pass_insn_locators_initialize): Remove.
6447         (locations_locators_locs, locations_locators_vals): New static vars.
6448         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6449         Likewise.
6450         (insn_locators_alloc, insn_locators_finalize,
6451         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6452         New functions.
6453         (locator_location): New.
6454         (locator_line, locator_file): Rewrite.
6455         * rtl.h (emit_line_note): Kill.
6456         (insn_locators_alloc, insn_locators_finalize,
6457         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6458         Declare.
6459         * tree-inline.c (initialize_cfun): Do not initialize
6460         ib_boundaries_block.
6461         * passes.c (pass_insn_locators_initialize): Remove.
6462
6463 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6464
6465         PR middle-end/31448
6466         * expr.c (reduce_to_bit_field_precision): Handle
6467         CONST_INT rtx's.
6468
6469 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
6470
6471         PR tree-optimization/24659
6472         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
6473         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
6474         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
6475         * genopinit.c (optabs): Rename vec_pack_mod_optab
6476         to vec_pack_trunc_optab.
6477         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
6478         early for scalar floating point operands for NOP_EXPR.
6479         (vectorizable_type_promotion): Ditto.
6480         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
6481         vec_pack_trunc_optab.
6482         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
6483
6484         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
6485         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
6486         Rename from VEC_PACK_MOD_EXPR.
6487         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
6488         * expr.c (expand_expr_real_1): Ditto.
6489         * tree-inline.c (estimate_num_insns_1): Ditto.
6490         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
6491
6492         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
6493         (vec_unpacks_lo_v4sf): Ditto.
6494         (vec_pack_trunc_v2df): Ditto.
6495         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
6496         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6497         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
6498
6499         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
6500         vec_pack_mod_v8hi.
6501         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6502
6503         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
6504         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
6505         packing of floating point operands.
6506         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
6507         represent unpacking of floating point operands.
6508         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
6509         [vec_unpacks_hi]: Ditto.
6510         [vec_unpacks_lo]: Ditto.
6511
6512 2007-04-22  Jan Hubicka  <jh@suse.cz>
6513
6514         * final.c (rest_of_handle_final): Call
6515         targetm.asm_out.constructor/targetm.asm_out.destructor
6516         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
6517         proper priority via decl_*_priority_insert.
6518         * c-common.c (c_expand_body): Likewise.
6519
6520 2007-04-22  Richard Guenther  <rguenther@suse.de>
6521
6522         PR tree-optimization/29789
6523         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
6524         (rewrite_reciprocal): New helper split out from
6525         determine_invariantness_stmt.
6526         (rewrite_bittest): Likewise.
6527         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
6528         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
6529         is not.
6530
6531 2007-04-22  Revital Eres  <eres@il.ibm.com>
6532
6533         * loop-unroll.c (var_to_expand): New field to support also
6534         insns of the form x = something + x.
6535         (analyze_insn_to_expand_var): Use it.
6536         (expand_var_during_unrolling): Likewise.
6537
6538 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6539
6540         * predict.c: Include pointer-set.h.
6541         (bb_predictions): New variable.
6542         (tree_predicted_by_p, tree_predict_edge,
6543         remove_predictions_associated_with_edge): Use bb_predictions map
6544         instead of bb->predictions.
6545         (clear_bb_predictions, assert_is_empty): New functions.
6546         (combine_predictions_for_bb): Use bb_predictions map.  Call
6547         clear_bb_predictions.
6548         (tree_estimate_probability): Create and free bb_predictions map.
6549         * Makefile.in (predict.o): Add pointer-set.h dependency.
6550         * basic-block.h (struct basic_block_def): Remove predictions
6551         field.
6552         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
6553
6554 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6555
6556         PR target/31480
6557         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
6558         is null.
6559
6560 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6561
6562         * timevar.c (timevar_print): Change reference of --disable-checking to
6563         --enable-checking=release.  Also warn if assert checking is disabled.
6564
6565 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6566
6567         PR C/30265
6568         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
6569         decl as addressable if the compound literal was marked as
6570         addressable.
6571         Mark the decl as a gimple register if it is a complex or
6572         vector decl and does not live in memory.
6573
6574 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6575
6576         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
6577         (GENERIC_NEXT): New function macro.
6578         (PHI_CHAIN): Use phi_node's new chain variable.
6579         (tree_phi_node): Change tree_common to tree_base
6580         and add the chain field.
6581         * tree-phinodes.c (make_phi_node): Don't set
6582         TREE_TYPE on the new node.
6583         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
6584         instead of checking GIMPLE_TUPLE_P in chain_next.
6585         * tree-vect-transform.c
6586         (get_initial_def_for_induction): Look at
6587         PHI_RESULT_TREE for the type of the phi node.
6588         (update_vuses_to_preheader): Use PHI_CHAIN
6589         instead of TREE_CHAIN on the phi node.
6590         * tree-ssa-structalias.c (compute_points_to_sets):
6591         Likewise.
6592         (ipa_pta_execute): Likewise.
6593
6594 2007-04-21  Richard Guenther  <rguenther@suse.de>
6595
6596         PR middle-end/31136
6597         * fold-const.c (fold_unary): Call fold_convert_const on the
6598         original tree.
6599
6600 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
6601
6602         * gcse.c (store_killed_in_insn): Handle PARALLELs.
6603         (store_killed_in_pat): New.
6604
6605 2007-04-20  Richard Henderson  <rth@redhat.com>
6606
6607         PR target/31628
6608         * config/i386/i386.c (type_has_variadic_args_p): Look for any
6609         TREE_LIST with a void_type_node value, not void_list_node exactly.
6610
6611 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
6612
6613         * doc/standards.texi: Re-arrange into language-specific
6614         subsections. Add a C++ section, documenting which standards we
6615         support.
6616
6617 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6618
6619         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
6620         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
6621
6622 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
6623
6624         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
6625         ecrti.o and crtbegin.o.
6626         (LIB_DEFAULT_SPEC): Include -lc.
6627         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
6628
6629 2007-04-20  Richard Henderson  <rth@redhat.com>
6630
6631         PR target/28623
6632         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
6633         argument; update all callers.
6634         (get_unaligned_offset): New.
6635         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
6636         get_unaligned_address, just pass on the address directly.
6637         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
6638         the subreg in the helper patterns.
6639         (unaligned_extendqidi_le): Use get_unaligned_offset.
6640         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
6641         (unaligned_extendhidi_be): Likewise.
6642         (unaligned_extendhidi): Tidy.
6643         * config/alpha/alpha-protos.h: Update.
6644
6645 2007-04-20  Richard Henderson  <rth@redhat.com>
6646
6647         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
6648         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
6649         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
6650         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6651         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6652         (CPP_SPEC): Don't include %(cpp_subtarget).
6653         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
6654         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6655         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
6656
6657 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
6658
6659         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
6660         for __builtin_ia32_cmpordss.
6661
6662         PR tree-optimization/31632
6663         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
6664         and arg1 for optimizations of comparison against min/max values.
6665         Fold arg0 to arg1's type for optimizations of comparison against
6666         min+1 and max-1 values.
6667
6668 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
6669
6670         * reload.c (combine_reloads): When trying to use a dying register,
6671         check whether it's uninitialized and don't use if so.
6672
6673 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
6674
6675         * fold-const.c: Remove prototypes for native_encode_expr and
6676         native_interpret_expr.
6677         (native_encode_expr): Make non-static.
6678         (native_interpret_expr): Likewise.
6679         * tree.h: Add prototypes for the above.
6680
6681 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6682
6683         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
6684         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
6685         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
6686         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
6687         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
6688         Add length attributes.
6689
6690 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
6691
6692         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
6693         not that it is 1.
6694
6695         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
6696         __STDC_WANT_DEC_FP__.
6697
6698 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6699
6700         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
6701         for long double compatibility.
6702         * configure: Regenerate.
6703
6704 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
6705
6706         PR rtl-optimization/29841
6707         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
6708         trap instructions.
6709         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
6710         that may cause control flow transfer from being moved.
6711
6712 2007-04-18  Jan Hubicka  <jh@suse.cz>
6713
6714         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
6715         types.
6716
6717 2007-04-18  Eric Christopher  <echristo@apple.com>
6718
6719         * config/rs6000/darwin.md (load_macho_picbase): Use link register
6720         only. Update operands.
6721         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
6722         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
6723         link register to pic register.
6724
6725 2007-04-18  Dirk Mueller  <dmueller@suse.de>
6726
6727         PR diagnostic/31227
6728         * tree-vrp.c (search_for_addr_array): New.
6729         (check_array_bounds): Suppress warning about
6730         address taken of array refs if its not de-referenced.
6731
6732 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6733
6734         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
6735         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
6736
6737         * tree-vectorizer.h (NITERS_KNOWN_P): New.
6738         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
6739         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
6740
6741         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
6742         dump print.
6743         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
6744         print message.
6745         (vect_analyze_scalar_cycles): Fix indentation.
6746         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
6747         (vect_mark_relevant): Include phis in relevance analysis.
6748
6749         * tree-vect-transform.c (vect_transform_loop): Add an assert.
6750
6751 2007-04-18  Anatoly Sokolov <aesok@post.ru>
6752
6753         * config/avr/avr.c (ptrreg_to_str): Replace error() with
6754         output_operand_lossage().
6755
6756 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6757
6758         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
6759         the unused code for reduction without adjust-in-epilog to simplify the
6760         function.
6761
6762 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
6763
6764         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
6765         (S390_TDC_NEGATIVE_ZERO): New constant.
6766         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
6767         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
6768         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
6769         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
6770         (S390_TDC_POSITIVE_INFINITY): New constant.
6771         (S390_TDC_NEGATIVE_INFINITY): New constant.
6772         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
6773         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
6774         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
6775         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
6776         (S390_TDC_INFINITY): New constant.
6777         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
6778         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
6779         optimization for UNSPEC_CCZ_TO_INT.
6780         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
6781         ("*ccz_to_int"): New insn.
6782         ("isinf<mode>2"): New insn.
6783         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
6784         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
6785         (UNSPEC_CCZ_TO_INT): New constant.
6786
6787 2007-04-18  Richard Guenther  <rguenther@suse.de>
6788
6789         PR tree-optimization/19431
6790         PR tree-optimization/21463
6791         * tree-pass.h (pass_phiprop): Declare.
6792         * passes.c (init_optimization_passes): New phiprop pass.
6793         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
6794         (phivn_valid_p): New helper function.
6795         (phiprop_insert_phi): Likewise.
6796         (propagate_with_phi): Likewise.
6797         (tree_ssa_phiprop): New propagator propagating loads
6798         through phi nodes if profitable.
6799
6800 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6801
6802         * tree-vect-analyze.c (process_use): New function.
6803         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
6804         Check phis in all bbs.
6805         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
6806         assert.
6807
6808 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6809
6810         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
6811         we use REG_EQUAL.
6812
6813 2007-04-17  Anatoly Sokolov <aesok@post.ru>
6814
6815         PR target/30483
6816         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
6817         error().
6818
6819 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
6820
6821         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
6822         on "0".
6823         (sse_vmmulv4sf3): Likewise.
6824         (sse2_vmaddv2df3): Likewise.
6825         (sse2_vmmulv2df3): Likewise.
6826
6827 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
6828
6829         PR rtl-optimization/31360
6830         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
6831         (target_reg_cost): New.
6832         (init_set_costs): Initialize target_reg_cost.  Add comments
6833         regarding the rationale of the costs.
6834         (global_cost_for_size): Renamed to...
6835         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
6836         of register pressure.
6837         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
6838         estimate_reg_pressure_cost.  Add number of ivs.
6839         (determine_set_costs): Dump target_reg_cost.
6840         * loop-invariant.c (gain_for_invariant):  Use
6841         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
6842         (best_gain_for_invariant, find_invariants_to_move): Remove
6843         n_inv_uses.
6844         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
6845         (target_reg_cost): Declare.
6846         (global_cost_for_size): Declaration removed.
6847         (estimate_reg_pressure_cost): Declare.
6848
6849 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
6850
6851         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
6852         regnos into even/odd register pairs.
6853         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
6854         TDmode similar to the other floating point modes.
6855         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
6856         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
6857         define_expand's.
6858         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
6859         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
6860         (movdd_hardfloat64): Use TARGET_MFPGPR.
6861
6862 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
6863
6864         * reload1.c (delete_output_reload): Don't count output in n_inherited.
6865
6866         Revert
6867         2005-01-05  Richard Henderson  <rth@redhat.com>
6868         PR rtl-opt/10692
6869         * reload1.c (do_input_reload): Restrict the optimization deleteing
6870         a previous output reload to RELOAD_FOR_INPUT.
6871
6872 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
6873
6874         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
6875         induc_vec_info_type.
6876         (vectorizable_induction): New function declaration.
6877         * tree-vect-transform.c (get_initial_def_for_induction): No need to
6878         check if already vectorized.  Find first place in BB where new stmts
6879         can be inserted.  Takes only one argument.
6880         (vectorizable_induction): New function.
6881         (vect_transform_stmt): Add case for induc_vec_info_type to call
6882         vectorizable_induction.
6883         (vect_transform_loop): Consider phis for vectorization.
6884         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
6885         condition.
6886         (analyze_operations): Call vectorizable_induction when analyzing phis.
6887         Fix comment.
6888         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
6889         (vect_mark_relevant): Include phis in relevance analysis.
6890         (vect_mark_stmts_to_be_vectorize): Likewise.
6891         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
6892
6893 2007-04-16  Lawrence Crowl  <crowl@google.com>
6894
6895         * doc/invoke.texi (Debugging Options): Add documentation for the
6896         -femit-struct-debug options -femit-struct-debug-baseonly,
6897         -femit-struct-debug-reduced, and
6898         -femit-struct-debug-detailed[=...].
6899
6900         * c-opts.c (c_common_handle_option): Add
6901         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
6902         and OPT_femit_struct_debug_detailed_.
6903         * c.opt: Add specifications for
6904         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
6905         and -femit-struct-debug-detailed[=...].
6906         * opts.c (set_struct_debug_option): Parse the
6907         -femit-struct-debug-... options.
6908         * opts.c (matches_main_base, main_input_basename,
6909         main_input_baselength, base_of_path, matches_main_base): Add
6910         variables and functions to compare header base name to compilation
6911         unit base name.
6912         * opts.c (should_emit_struct_debug): Add to determine to emit a
6913         structure based on the option.
6914         (dump_struct_debug) Also disabled function to debug this
6915         function.
6916         * opts.c (handle_options): Save the base name of the
6917         compilation unit.
6918
6919         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
6920         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
6921         This hook indicates if a type is generic.  Set it by default
6922         to "never generic".
6923         * langhooks.h (struct lang_hooks_for_types): Add a new hook
6924         to determine if a struct type is generic or not.
6925         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
6926         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
6927         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
6928         with live C++ hook.
6929
6930         * flags.h (enum debug_info_usage): Add an enumeration to describe
6931         a program's use of a structure type.
6932         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
6933         to indicate the program's usage of the type.  Filter structs based
6934         on the -femit-struct-debug-... specification.
6935         (gen_type_die): Split into two routines, gen_type_die and
6936         gen_type_die_with_usage.  gen_type_die is now a wrapper
6937         that assumes direct usage.
6938         (gen_type_die_with_usage): Replace calls to gen_type_die
6939         with gen_type_die_with_usage adding the program usage of
6940         the referenced type.
6941         (dwarf2out_imported_module_or_decl): Suppress struct debug
6942         information using should_emit_struct_debug when appropriate.
6943
6944 2007-04-16  Ian Lance Taylor  <iant@google.com>
6945
6946         PR tree-optimization/31522
6947         * tree-vrp.c (vr_phi_edge_counts): New static variable.
6948         (vrp_initialize): Allocate vr_phi_edge_counts.
6949         (vrp_visit_phi_node): Don't push to infinity if we saw a new
6950         executable edge.  Drop test for all constants.
6951         (vrp_finalize): Free vrp_phi_edge_counts.
6952
6953         * doc/cpp.texi (Common Predefined Macros): Clarify description of
6954         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
6955
6956         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
6957         predecessors at head rather than tail.
6958
6959 2007-04-16  Matthias Klose  <doko@debian.org>
6960
6961         * config/alpha/linux.h (CPP_SPEC): Define.
6962         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
6963
6964 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
6965
6966         * function.h: Remove sequence_stack extern declaration.
6967
6968 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
6969
6970         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
6971         TARGET_FIDOA.
6972         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
6973         defined.
6974
6975 2007-04-16  Anatoly Sokolov <aesok@post.ru>
6976
6977         * config/avr/avr.c (avr_arch_types): Rearranging  array.
6978         (enum avr_arch): Add.
6979         (avr_mcu_types): Use avr_arch enumeration constants instead of
6980         numbers.
6981         * config/avr/avr.h (LINK_SPEC): Simplify.
6982
6983 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
6984
6985         * config/m68k/m68k.c (m68k_libcall_value,
6986         m68k_function_value): Use macros for register names more.
6987
6988         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
6989         instead.
6990         (M68K_REGNAME): Use A6_REG.
6991         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
6992
6993 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6994
6995         PR middle-end/28071
6996         * sched-int.h (struct deps): Split field 'pending_lists_length' into
6997         'pending_read_list_length' and 'pending_write_list_length'.  Update
6998         comment.
6999         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
7000         to handle two length counters instead of one.  Update all uses.
7001         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
7002         two length counters instead of one.
7003         * sched-rgn.c (propagate_deps): Update to handle two length counters
7004         instead of one.
7005
7006 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
7007
7008         PR target/31582
7009         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
7010         copy of source, pass it to ix86_expand_vector_set and return
7011         it as target.
7012
7013 2007-04-16  David Ung  <davidu@mips.com>
7014             Joseph Myers  <joseph@codesourcery.com>
7015
7016         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
7017         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
7018         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
7019         Add 74K processor information.
7020         * config/mips/mips.md: Include 74k.md.
7021         (cpu): Add 74kc,74kf,74kx.
7022         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
7023         * config/mips/74k.md: New.
7024         * doc/invoke.texi (MIPS Options): Document 74K support.
7025
7026 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
7027
7028         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
7029         vectorizable_* functions.
7030         * tree-vect-transform.c (vectorizable_call): Add check for
7031         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
7032         (vectorizable_store): likewise.
7033         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
7034         Add comments.
7035         (vectorizable_operation, vectorizable_type_demotion): Likewise.
7036         (vectorizable_type_promotion, vectorizable_load): Likewise.
7037         (vectorizable_live_operation, vectorizable_condition): Likewise.
7038         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
7039         STMT_VINFO_LIVE_P.
7040         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
7041
7042 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7043
7044         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
7045         register numbers more.
7046         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
7047         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
7048         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
7049         FUNCTION_VALUE_REGNO_P): Likewise.
7050         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
7051         STATIC_CHAIN_REGNUM): Likewise.
7052         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
7053         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
7054         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
7055         * config/m68k/m68k.md (FP_REG): New.
7056
7057 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7058
7059         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
7060         alignment on fido.
7061
7062 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
7063
7064         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
7065         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
7066         comment typos.
7067
7068 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7069
7070         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
7071         cold loops.
7072
7073 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7074
7075         PR c/31520
7076         * c-decl.c (finish_decl): Grab the type of the decl after the call
7077         to store_init_value.
7078
7079 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
7080
7081         * common.opt (fforward-propagate): Fix "Optimization" annotation.
7082
7083 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
7084
7085         PR c++/25874
7086         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
7087         post dominators and cleanup cfg before returning.
7088
7089 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7090
7091         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
7092         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
7093
7094 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
7095
7096         * config.gcc: Recognize fido.
7097         * config/m68k/m68k-devices.def (fidoa): New.
7098         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
7099         __mfido__.
7100         (FL_FIDOA, TARGET_FIDOA): New.
7101         * config/m68k/m68k.opt (mfidoa): New.
7102
7103 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7104
7105         PR middle-end/31322
7106         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
7107         when a personality function is used.
7108
7109 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
7110
7111         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
7112
7113 2007-04-13  Mike Stump  <mrs@apple.com>
7114
7115         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
7116         we can...
7117         * config/darwin.opt (fapple-kext): Make C++ only.
7118         * config/darwin.c (darwin_override_options): Remove code to ensure
7119         -fapple-kext is given for C++ only.
7120
7121 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
7122
7123         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
7124         * config/mips/mips.c (override_options): Call
7125         SUBTARGET_OVERRIDE_OPTIONS, if defined.
7126
7127 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
7128
7129         * config/i386/i386.opt (msvr3-shlib): Removed.
7130
7131         * doc/invoke.texi: Remove -msvr3-shlib.
7132
7133 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
7134
7135         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
7136         with "popcnt" instruction.
7137
7138 2007-04-13  Richard Guenther  <rguenther@suse.de>
7139
7140         PR tree-optimization/21258
7141         * tree-vrp.c (compare_case_labels): New helper.
7142         (find_switch_asserts): New function.
7143         (find_assert_locations): Call it for SWITCH_EXPRs.
7144
7145 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
7146
7147         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
7148         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
7149         check is now implied in X87_FLOAT_MODE_P.
7150         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7151         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7152         (fix_trunc<mode>_i386_fisttp): Ditto.
7153         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7154         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7155         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7156         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7157         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7158         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7159         (unnamed_splitters): Ditto.
7160         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
7161         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
7162         FIRST_SSE_REG for local functions when SSE math is enabled or
7163         for functions with sseregparm attribute.
7164         (standard_80387_constant_p): Return -1 if mode is not
7165         X87_FLOAT_MODE_P.
7166         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
7167         (ix86_expand_compare): Ditto.
7168         (ix86_expand_carry_flag_compare): Ditto.
7169         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
7170         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
7171         DECIMAL_FLOAT_MODE_P.
7172         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
7173         of SCALAR_FLOAT_MODE_P.
7174         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
7175         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
7176         checks before FLOAT_MODE_P.
7177         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
7178         before FLOAT_MODE_P.
7179         [DIV]: Ditto.
7180         [NEG]: Ditto.
7181         [ABS]: Ditto.
7182         [SQRT]: Ditto.
7183         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
7184
7185 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
7186             Charles Wilson  <libtool@cwilson.fastmail.fm>
7187
7188         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
7189         (libgcc.mvars): Don't depend on them.
7190         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
7191         * exec-tool.in: New.
7192
7193 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
7194
7195         * doc/invoke.text (--help): Document --help=common.
7196
7197 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
7198
7199         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
7200
7201 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7202
7203         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
7204         * genemit.c (main): Emit #include "integrate.h".
7205         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
7206         (LOADGP_RTP): New mips_loadgp_style.
7207         * config/mips/mips.h: Include config/vxworks-dummy.h.
7208         (TARGET_RTP_PIC): New macro.
7209         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
7210         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
7211         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
7212         for TARGET_RTP_PIC.
7213         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
7214         -mvxworks-pic when using -mrtp and a PIC option.
7215         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
7216         for RTP PIC.
7217         (mips_symbolic_constant_p, mips_symbolic_address_p)
7218         (mips_symbol_insns): Handle SYMBOL_HALF.
7219         (override_options): Warn about -G and -mrtp being used together.
7220         Initialize mips_lo_relocs[SYMBOL_HALF].
7221         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
7222         (mips_emit_loadgp): Handle LOADGP_RTP.
7223         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
7224         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
7225         (tablejump): Handle function-relative case table entries if
7226         TARGET_RTP_PIC.
7227         * config/mips/predicates.md (symbol_ref_operand): New predicate.
7228
7229 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7230
7231         * config/mips/mips.md (load_call<mode>): Allow any general register.
7232         destination.
7233         (sibcall_value_internal, sibcall_value_multiple_internal)
7234         (call_value_internal, call_value_split, call_value_multiple_internal)
7235         (call_value_multiple_split): Remove constraints from operand 0.
7236
7237 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7238
7239         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
7240         rather than loadgp_noshared.
7241         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
7242         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
7243         gen_loadgp.
7244         * config/mips/mips.md (loadgp): Rename to...
7245         (loadgp_newabi): ...this.
7246         (loadgp_noshared): Rename to...
7247         (loadgp_absolute): ...this.
7248
7249 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7250
7251         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
7252         false for locally-binding symbols.
7253         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
7254
7255 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7256
7257         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
7258         (SYMBOL_GOT_PAGE_OFST): ...this.
7259         (SYMBOL_GOT_GLOBAL): Rename to...
7260         (SYMBOL_GOT_DISP): ...this.
7261         (SYMBOL_GOTOFF_GLOBAL): Rename to...
7262         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
7263         * config/mips/mips.c (mips_global_symbol_p): New function.
7264         (mips_symbol_binds_local_p): Likewise.
7265         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
7266         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
7267         and mips_symbol_binds_local_p.
7268         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
7269         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
7270         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
7271         SYMBOL_GOTOFF_DISP.
7272         (mips_ok_for_lazy_binding_p): New function.
7273         (mips_load_call_address, mips_expand_call): Use it.
7274         (mips_dangerous_for_la25_p): Likewise.
7275         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
7276         (*got_disp<mode>): Use got_disp_operand instead of
7277         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
7278         SYMBOL_GOTOFF_GLOBAL.
7279         (*got_page<mode>): Use got_page_ofst_operand instead of
7280         local_got_operand.
7281         * config/mips/predicates.md (const_call_insn_operand): Use
7282         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
7283         (global_got_operand): Rename to...
7284         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
7285         SYMBOL_GOT_GLOBAL.
7286         (local_got_operand): Rename to...
7287         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
7288         of SYMBOL_GOT_LOCAL.
7289
7290 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7291
7292         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
7293         TARGET_CALL_CLOBBERED_GP.
7294         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7295         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
7296         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
7297         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
7298         of TARGET_ABICALLS && !TARGET_NEWABI.
7299         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7300         * config/mips/mips.c (mips_load_call_address): Check
7301         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7302         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7303         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7304         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
7305         TARGET_ABICALLS && TARGET_NEWABI.
7306         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
7307         TARGET_ABICALLS.
7308         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
7309         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
7310         TARGET_ABICALLS && TARGET_NEWABI.
7311         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
7312         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
7313         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
7314         whether indirect calls must use $25.
7315         (mips_extra_live_on_entry): Check TARGET_GOT instead of
7316         TARGET_ABICALLS.
7317         * config/mips/mips.md (jal_macro): Check flag_pic and
7318         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
7319         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
7320         instead of TARGET_ABICALLS.
7321         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
7322         TARGET_ABICALLS && TARGET_OLDABI.
7323         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7324         (sibcall): In the comment above the define_insn, mention
7325         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
7326         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
7327         instead of TARGET_ABICALLS.
7328
7329 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
7330
7331         * doc/md.texi (Blackfin family constraints): Document PA and PB.
7332         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
7333         (MACFLAGS_MATCH_P): New macro.
7334         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
7335         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
7336         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
7337         the other MACFLAG constants.
7338         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
7339         (flag_machi): Tighten constraints.  Renumber some of the operands.
7340         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
7341         output template.
7342         (flag_machi_parts_acconly): New pattern.
7343         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
7344         used.
7345         (flag_macinit1hi): Tighten constraints.
7346         (flag_mul_macv2hi_parts_acconly): New pattern.
7347
7348         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
7349         Use a more efficient implementation.
7350         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
7351         inline sequences when not optimizing for size.
7352
7353         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
7354         movhi_high2low): Delete, merge functionality into...
7355         (packv2hi): ... this pattern.
7356
7357         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
7358         * config/bfin/bfin.opt (msim): New option.
7359         (mcpu=): New option.
7360         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
7361         (bfin_cpu_t): Typedef of enum bfin_cpu.
7362         (bfin_cpu_type): New declaration.
7363         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
7364         -msim and -mcpu= options.
7365         (LIB_SPEC): Likewise.
7366         * config/bfin/bfin.c (bfin_cpu_type): Define.
7367         (bfin_handle_option): Handle -mcpu= option.
7368         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
7369         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
7370         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
7371
7372 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7373
7374         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
7375         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
7376         (powerpc-wrs-vxworksae): Use ${tm_file}.
7377         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
7378         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
7379         * config/i386/vx-common.h: New file.
7380
7381 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7382
7383         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
7384         of crt0.o%s.
7385
7386 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
7387
7388         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
7389         ldxtr.
7390
7391 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
7392
7393         PR c++/31078
7394         PR c++/31103
7395         * c-common.c (c_build_qualified_type): Set canonical type
7396         appropriately.
7397
7398 2007-04-12  Richard Guenther  <rguenther@suse.de>
7399
7400         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
7401         lower bound and element size if lower bound is not zero
7402         or either of the ARRAY_REF operands is set.
7403
7404 2007-04-12  Richard Guenther  <rguenther@suse.de>
7405
7406         PR tree-optimization/24689
7407         PR tree-optimization/31307
7408         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
7409         indices by value.
7410         * gimplify.c (canonicalize_addr_expr): To be consistent with
7411         gimplify_compound_lval only set operands two and three of
7412         ARRAY_REFs if they are not gimple_min_invariant.  This makes
7413         it never at this place.
7414         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7415
7416 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7417
7418         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
7419         null before emitting a .nsubspa directive.
7420
7421 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7422
7423         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
7424         need_to_partition_p if there are no memory statements in the
7425         function.
7426
7427 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7428
7429         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
7430         (gcd_of_steps_may_divide_p): New function.
7431         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
7432
7433 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7434
7435         * reload.c (find_reloads_toplev, find_reloads_address,
7436         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
7437         not a pointer equality test, to decide if we need to call
7438         push_reg_equiv_alt_mem.
7439
7440 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
7441
7442         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
7443         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
7444         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
7445
7446 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7447
7448         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
7449         vector to be positive.
7450
7451 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7452
7453         PR 30735
7454         PR 31090
7455         * doc/invoke.texi: Document --params max-aliased-vops and
7456         avg-aliased-vops.
7457         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
7458         debug_memory_partitions): Move to tree-flow.h
7459         * params.h (AVG_ALIASED_VOPS): Define.
7460         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
7461         users.
7462         (mp_info_t): Likewise.
7463         (get_mem_sym_stats_for): New.
7464         (set_memory_partition): Move from tree-flow-inline.h.
7465         (mark_non_addressable): Only clear the set of symbols for the
7466         partition if it exists.
7467         (dump_memory_partitions): Move from tree-ssa-operands.c
7468         (debug_memory_partitions): Likewise.
7469         (need_to_partition_p): New.
7470         (dump_mem_ref_stats): New.
7471         (debug_mem_ref_stats): New.
7472         (dump_mem_sym_stats): New.
7473         (debug_mem_sym_stats): New.
7474         (update_mem_sym_stats_from_stmt): New.
7475         (compare_mp_info_entries): New.
7476         (mp_info_cmp): Call it.
7477         (sort_mp_info): Change argument to a list of mem_sym_stats_t
7478         objects.
7479         (get_mpt_for): Move from tree-ssa-operands.c.
7480         (find_partition_for): New.
7481         (create_partition_for): Remove.
7482         (estimate_vop_reduction): New.
7483         (update_reference_counts): New.
7484         (build_mp_info): New.
7485         (compute_memory_partitions): Refactor.
7486         Document new heuristic.
7487         Call build_mp_info, update_reference_counts,
7488         find_partition_for and estimate_vop_reduction.
7489         (compute_may_aliases): Populate virtual operands before
7490         calling debugging dumps.
7491         (delete_mem_sym_stats): New.
7492         (delete_mem_ref_stats): New.
7493         (init_mem_ref_stats): New.
7494         (init_alias_info): Call it.
7495         (maybe_create_global_var): Remove alias_info argument.
7496         Get number of call sites and number of pure/const call sites
7497         from gimple_mem_ref_stats().
7498         (dump_alias_info): Call dump_memory_partitions first.
7499         (dump_points_to_info_for): Show how many times a pointer has
7500         been dereferenced.
7501         * opts.c (decode_options): For -O2 set --param
7502         max-aliased-vops to 500.
7503         For -O3 set --param max-aliased-vops to 1000 and --param
7504         avg-aliased-vops to 3.
7505         * fortran/options.c (gfc_init_options): Remove assignment to
7506         MAX_ALIASED_VOPS.
7507         * tree-flow-inline.h (gimple_mem_ref_stats): New.
7508         * tree-dfa.c (dump_variable): Dump memory reference
7509         statistics.
7510         Dump NO_ALIAS* settings.
7511         (referenced_var_lookup): Tidy.
7512         (mem_sym_stats): New.
7513         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
7514         and ORIG are different SSA names for a memory partition.
7515         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
7516         * tree-flow.h (struct mem_sym_stats_d): Define.
7517         (mem_sym_stats_t): Define.
7518         (struct mem_ref_stats_d): Define.
7519         (struct gimple_df): Add field mem_ref_stats.
7520         (enum noalias_state): Define.
7521         (struct var_ann_d): Add bitfield noalias_state.
7522         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
7523         debug_mem_ref_stats, debug_memory_partitions,
7524         debug_mem_sym_stats): Declare.
7525         * tree-ssa-structalias.c (update_alias_info): Update call
7526         sites, pure/const call sites and asm sites in structure
7527         returned by gimple_mem_ref_stats.
7528         Remove local variable IS_POTENTIAL_DEREF.
7529         Increase NUM_DEREFS if the memory expression is a potential
7530         dereference.
7531         Call update_mem_sym_stats_from_stmt.
7532         If the memory references memory, call
7533         update_mem_sym_stats_from_stmt for all the direct memory
7534         symbol references found.
7535         (intra_create_variable_infos): Set noalias_state field for
7536         pointer arguments according to the value of
7537         flag_argument_noalias.
7538         * tree-ssa-structalias.h (struct alias_info): Remove fields
7539         num_calls_found and num_pure_const_calls_found.
7540         (update_mem_sym_stats_from_stmt): Declare.
7541         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
7542         Set default value to 100.
7543         (PARAM_AVG_ALIASED_VOPS): Define.
7544
7545 2007-04-11  Richard Guenther  <rguenther@suse.de>
7546
7547         PR middle-end/31530
7548         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
7549         a * -b + c as c - a * b if we honor sign dependent rounding.
7550
7551 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7552
7553         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
7554         bfin_expand_strmov.
7555         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
7556         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
7557         variables.
7558         (initialize_trampoline): Don't use old-style function definition.
7559         (bfin_secondary_reload): Mark IN_P argument as unused.
7560
7561 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
7562
7563         PR tree-optimization/31343
7564         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
7565         (build_polynomial_chrec): Return a scalar when the evolution is zero.
7566         * testsuite/gcc.dg/vect/pr31343.c: New.
7567
7568 2007-04-10  Eric Christopher  <echristo@apple.com>
7569
7570         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
7571         * config/i386/i386.md (*cmpfp0): Use.
7572         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7573         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7574         (fix_trunc<mode>_i386_fisttp): Ditto.
7575         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7576         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7577         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7578         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7579         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7580         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7581         (unnamed_splitters): Ditto.
7582         * config/i386/i386.c (output_fix_trunc): Assert that
7583         we're not being passed a TFmode operand.
7584
7585 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
7586
7587         PR tree-optimization/31526
7588         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
7589         n_basic_blocks to find newly added blocks.
7590
7591 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
7592
7593         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
7594         alternative.
7595         (fix_trunc<mode>si_sse): Ditto.
7596         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
7597         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
7598         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
7599         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
7600         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
7601         expander using SSEMODEF mode macro.
7602         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
7603         expander using SSEMODEF mode macro.
7604         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
7605         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
7606         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
7607         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
7608         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
7609         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
7610         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
7611         Macroize insn using X87MODEF mode macro.
7612
7613 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7614
7615         * config/i386/sse.md (sse2_pinsrw): Removed.
7616         (sse2_pextrw): Renamed to ...
7617         (*sse2_pextrw): This.
7618
7619 2007-04-09  Jan Hubicka  <jh@suse.cz>
7620
7621         PR target/27869
7622         * config/i386/sse.md
7623         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
7624         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
7625         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
7626         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
7627
7628 2007-04-09  Jan Hubicka  <jh@suse.cz>
7629
7630         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
7631         multiple fields of union.
7632
7633 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
7634
7635         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
7636         (create_preheaders): Check that loops are available.
7637         (fix_loop_structure): Clean up, improve comments.
7638         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
7639         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
7640         state flags.
7641         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
7642         * predict.c (tree_estimate_probability): Do not call
7643         calculate_dominance_info.  Call create_preheaders.
7644         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
7645         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
7646         flags.
7647         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
7648         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
7649         * tree-cfg.c (tree_split_edge): Make an assert more precise.
7650         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
7651         arguments.
7652
7653 2007-04-08  Jan Hubicka  <jh@suse.cz>
7654
7655         * tree.h (maybe_fold_offset_to_component_ref): Declare.
7656         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
7657         * fold-const.c (fold_unary): Use it.
7658
7659 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7660
7661         * varasm.c (assemble_variable): Remove call to
7662         lang_hooks.decls.prepare_assemble_variable.
7663         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
7664         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
7665         * langhooks.h (lang_hooks_for_decls): Remove
7666         prepare_assemble_variable.
7667
7668 2007-04-08  Mike Stump  <mrs@apple.com>
7669
7670         * config/i386/i386.c: Use inc/dec on Core2.
7671
7672 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
7673
7674         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
7675         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7676         lhd_tree_inlining_end_inlining): Remove.
7677         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
7678         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
7679         end_inlining hooks.
7680         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
7681         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7682         lhd_tree_inlining_end_inlining): Remove prototypes.
7683         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
7684         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
7685         LANG_HOOKS_TREE_INLINING_START_INLINING,
7686         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
7687
7688         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
7689         not set it.
7690
7691 2007-04-08  Anatoly Sokolov <aesok@post.ru>
7692
7693         PR target/29932
7694         * config/avr/predicates.md (io_address_operand): Delete predicate.
7695         (low_io_address_operand): Don't use 'mode' argument.
7696         (higth_io_address_operand): Rename ...
7697         (high_io_address_operand): ... to this. Don't use 'mode' argument.
7698         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
7699         for above change.
7700
7701 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
7702
7703         Revert change removing staticp.
7704
7705 2007-04-07  Anatoly Sokolov <aesok@post.ru>
7706
7707         PR target/30289
7708         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
7709         earlyclobber.
7710
7711 2007-04-07  Bruce Korb  <bkorb@gnu.org>
7712
7713         * c.opt: Add -Wformat-contains-nul.
7714         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
7715           -Wformat setting.
7716         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
7717         the NUL byte warning.
7718
7719 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
7720
7721         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
7722
7723 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7724
7725         * tree.c (staticp): No longer use staticp langhook.
7726         * langhooks.c (lhd_staticp): Removed.
7727         * langhooks.h (struct lang_hooks): Remove staticp.
7728         * c-common.c (c_staticp): Remove.
7729         * c-common.h (c_staticp): Ditto.
7730         * langhooks-defs.h (lhd_staticp): Ditto.
7731         (LHD_HOOKS_STATICP): Ditto
7732         * tree.h (gcc_assert_lowered): New macro.
7733
7734 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
7735
7736         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
7737         argument "reliable".
7738         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
7739         Add argument "reliable".  Propagate it through calls.
7740         (infer_loop_bounds_from_undefined):  Derive number of iterations
7741         estimates from references in blocks that do not dominate loop latch.
7742         (gcov_type_to_double_int): New function.
7743         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
7744         and expected_loop_iterations_unbounded.
7745         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
7746         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
7747         * tree-data-ref.c (estimated_loop_iterations): Export.
7748         (get_references_in_stmt): Fix -- do not return addresses of local
7749         objects.
7750         * cfgloop.h (expected_loop_iterations_unbounded,
7751         estimated_loop_iterations): Declare.
7752
7753 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
7754
7755         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7756
7757 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7758
7759         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
7760         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
7761         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
7762         Use output_387_reg_move().
7763         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
7764         expander using X87MODEF12 mode macro.
7765         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
7766         choosing register preferences.  Use output_387_reg_move().
7767         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
7768         instead of "x".  Use output_387_reg_move().
7769         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
7770         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
7771         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
7772         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
7773         Use output_387_reg_move().
7774         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
7775         mode macro.
7776         (*truncxf?f_i387 splitter): Ditto.
7777
7778 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7779
7780         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
7781         LANG_HOOKS_SAFE_FROM_P.
7782         * expr.c (safe_from_p): Remove langhook call.
7783         * langhooks.h (lang_hooks): Remove safe_from_p.
7784         (lhd_safe_from_p): Remove prototype.
7785         * langhooks.c (lhd_safe_from_p): Remove.
7786
7787 2007-04-06  Jan Hubicka  <jh@suse.cz>
7788
7789         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
7790         functions.
7791
7792 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7793
7794         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
7795         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
7796         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
7797         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
7798         alternative.
7799         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
7800         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
7801
7802 2007-04-05  Richard Henderson  <rth@redhat.com>
7803
7804         * config/alpha/alpha.c (print_operand) [+]: Remove.
7805         (alpha_end_function): Print nop if call at end of function.
7806         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
7807         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
7808         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
7809         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
7810         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
7811         the call pattern. Update peepholes to match.
7812
7813 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
7814
7815         * doc/extend.texi (Other Builtins): Add decimal float variants
7816         of signbit.
7817         * builtins.def: Ditto.
7818         * builtins.c (expand_builtin): Ditto.
7819
7820 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
7821             H.J. Lu  <hongjiu.lu@intel.com>
7822
7823         PR target/31478
7824         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
7825         of V8HImode when calling ix86_binary_operator_ok.
7826         (sse2_pmaddwd): Call ix86_binary_operator_ok.
7827         (sdot_prodv8hi): Operands 1 and 2 must be register.
7828
7829 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7830
7831         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
7832         initialize align to silence bogus warning.
7833
7834 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7835
7836         PR middle-end/22156
7837         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
7838         all_no_warning.
7839         (struct sra_walk_fns): Remove use_all parameter from use.
7840         (sra_hash_tree): Handle BIT_FIELD_REFs.
7841         (sra_elt_hash): Don't hash bitfld blocks.
7842         (sra_elt_eq): Skip them in parent compares as well.  Handle
7843         BIT_FIELD_REFs.
7844         (sra_walk_expr): Don't maintain or pass down use_all_p.
7845         (scan_use): Remove use_all parameter.
7846         (scalarize_use): Likewise.  Re-expand assignment to
7847         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
7848         output, and re-scalarize after output.  Don't mark anything
7849         for no warning.
7850         (scalarize_ldst): Adjust.
7851         (scalarize_walk_gimple_modify_statement): Likewise.
7852         (build_element_name_1): Handle BIT_FIELD_REFs.
7853         (instantiate_element): Don't warn for any element whose parent
7854         is used as a whole.
7855         (instantiate_missing_elements_1): Return the sra_elt.
7856         (canon_type_for_field): New.
7857         (try_instantiate_multiple_fields): New.
7858         (instantiate_missing_elemnts): Use them.
7859         (mark_no_warning): Removed.
7860         (generate_one_element_ref): Handle BIT_FIELD_REFs.
7861         (REPLDUP, sra_build_elt_assignment): New.
7862         (generate_copy_inout): Use them.
7863         (generate_element_copy): Likewise.  Handle bitfld differences.
7864         (generate_element_zero): Don't recurse for blocks.  Use
7865         sra_build_elt_assignment.
7866         (generate_one_element_int): Take elt instead of var.  Use
7867         sra_build_elt_assignment.
7868         (generate_element_init_1): Adjust.
7869         (scalarize_use, scalarize_copy): Use REPLDUP.
7870         (scalarize_ldst): Move assert before dereference.
7871         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
7872
7873 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7874
7875         * regmove.c: Fix unused variable warnings due to previous commit.
7876
7877 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7878
7879         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
7880         (regmove_bb_head): Remove.
7881         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
7882         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
7883         problems with fixup_match_1.
7884         Don't initialize/free regmove_bb_head.
7885
7886         (reg_is_remote_constant_p): If an insn is in the same basic block
7887         but not before INSN, consider it remote, too.
7888
7889 2007-04-05  Anatoly Sokolov <aesok@post.ru>
7890
7891         PR target/25448
7892         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
7893         DECL_ASSEMBLER_NAME, not the DECL_NAME.
7894
7895 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
7896
7897         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
7898         (CONDITIONAL_REGISTER_USAGE): Likewise.
7899
7900 2007-04-04  Richard Henderson  <rth@redhat.com>
7901
7902         * config/alpha/lib1funcs.asm: Remove unused file.
7903
7904 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7905
7906         PR other/31356
7907         * opts.c (print_specific_help): Fix --help=<language>
7908         header line.
7909         (common_handle_option): Support --help=common.
7910
7911 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7912
7913         PR other/31353
7914         * gcc.c (main): Do not run the linker if
7915         print_subprocess_help indicates that it shouldn't be
7916         run.
7917
7918 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7919
7920         PR doc/31355
7921         * doc/invoke.texi (--help=): Document <languages> value, fix
7922         formatting in tables of values.
7923
7924 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
7925
7926         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
7927         dllimport attribute of virtual methods.
7928
7929 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
7930
7931         * config/score/crti.asm: Change _bss_start to __bss_start.
7932         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
7933         (OUTGOING_REG_PARM_STACK_SPACE) update.
7934         * config/score/score.opt: add options to make backend support
7935         score5, score5u, score7 and score7d.
7936         * config/score/score.md: Likewise.
7937         * config/score/misc.md: Likewise.
7938         * config/score/mac.md: Likewise.
7939         * doc/invoke.texi: Likewise.
7940         * doc/md.texi: update constraints define.
7941
7942 2007-04-03  Richard Henderson  <rth@redhat.com>
7943
7944         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
7945         an appropriate type, use the mode instead.
7946
7947 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
7948
7949         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
7950         Set the default --with-arch setting to mips2.
7951         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
7952         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
7953         (MULTILIB_OSDIRNAMES): Delete.
7954         (MULTILIB_DIRNAMES): Define.
7955         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
7956         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
7957         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
7958         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
7959         VXWORKS_OS_CPP_BUILTINS.
7960         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
7961         (MIPS_DEBUGGING_INFO): Undefine.
7962         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
7963
7964 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
7965
7966         PR middle-end/30704
7967         * fold-const.c (native_encode_real): Encode real.c provided longs
7968         as a series of 32-bit native integers.
7969         (native_interpret_real): Interpret buffer as a series of 32-bit
7970         native integers.
7971
7972 2007-04-03  Richard Guenther  <rguenther@suse.de>
7973
7974         * genpreds.c (write_insn_constraint_len): Write function
7975         optimized for CONSTRAINT_LEN implementation.
7976         (write_tm_preds_h): Output insn_constraint_len inline and
7977         use it for CONSTRAINT_LEN.
7978         (write_insn_preds_c): Don't output insn_constraint_len.
7979         * doc/md.texi (define_register_constraint): Document multi-letter
7980         constraints shall have the same length if they start with the same
7981         letter.
7982
7983 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
7984
7985         PR target/31175
7986         * config/i386/i386.md (isinf<mode>2): Expand only when
7987         TARGET_C99_FUNCTIONS is set.
7988
7989 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
7990
7991         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
7992         (x86_64-*-linux*): Ditto.
7993         * config/i386/i386.opt (mpc): New option.
7994         * config/i386/i386.c (overrride_options): Handle
7995         ix87_precision_string.
7996         * config/i386/crtprec.c: New file.
7997         * config/i386/t-crtpc: Ditto.
7998         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
7999         and -mpc80 options.
8000         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
8001         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
8002         crtprec32.o, crtprec64.o and crtprec80.o.
8003
8004         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
8005         and -mpc80 options.
8006         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
8007
8008 2007-04-02  Eric Christopher  <echristo@apple.com>
8009
8010         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
8011         limitations on darwin.
8012
8013 2007-04-02  Anatoly Sokolov <aesok@post.ru>
8014
8015         PR target/31137
8016         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
8017
8018 2007-04-02  Dave Korn  <dave.korn@artimi.com>
8019
8020         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
8021
8022 2007-04-02  Dave Korn  <dave.korn@artimi.com>
8023
8024         * libgcc2.h (exception_descriptor): Don't forward-declare.
8025         (__get_eh_table_language, __get_eh_table_version): Delete
8026         prototypes of long-dead functions.
8027
8028 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
8029
8030         * ebitmap.h: New file
8031         * ebitmap.c: New file
8032         * Makefile.in (ebitmap.o): New target.
8033
8034 2007-04-01  Jan Hubicka  <jh@suse.cz>
8035
8036         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
8037         before very first instruction.
8038
8039 2007-04-01  Jan Hubicka  <jh@suse.cz>
8040
8041         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
8042         waring on 64bit hosts.
8043         * bitmap.h: Fix typo in bitmap_head_def.
8044
8045 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
8046
8047         PR rtl-optimization/31391
8048         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
8049         into a DELETED_LABEL note, and the label is in an empty basic
8050         block, update BB_END as well as BB_HEAD.
8051
8052 2007-04-01  Richard Henderson  <rth@redhat.com>
8053
8054         PR tree-optimization/31169
8055         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
8056         to varying if the range is outside [0,  prec-1].
8057
8058 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
8059
8060         PR target/31388
8061         * config/mips/mips.md (load_const_gp): New insn.
8062         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
8063         the MIPS16 GP pseudo register if no_new_pseudos.
8064         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
8065
8066 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8067
8068         PR target/31364
8069         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
8070         secureplt.
8071         (call_value): Likewise.
8072
8073 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
8074             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8075
8076         PR 14737
8077         * doc/invoke.texi: (optimization options): Reword description
8078         of -ffast-math. Document its primary purpose.
8079
8080 2007-03-31  Richard Guenther  <rguenther@suse.de>
8081
8082         * omp-low.c (splay-tree.h): Include.
8083         (lookup_decl): Replace splay-tree usage by pointer-map.
8084         (maybe_lookup_decl): Likewise.
8085         (new_omp_context): Likewise.
8086         (delete_omp_context): Likewise.
8087         * gimplify.c (splay-tree.h): Include.
8088         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
8089         pointer-map.
8090         (remap_ssa_name): Likewise.
8091         (remap_decl): Likewise.
8092         (remap_type_1): Likewise.
8093         (remap_type): Likewise.
8094         (copy_body_r): Likewise.
8095         (expand_call_inline): Likewise.
8096         (clone_body): Likewise.
8097         (copy_tree_r): Likewise.
8098         (remap_save_expr): Likewise.
8099         (unsave_r): Likewise.
8100         (unsave_expr_now): Likewise.
8101         (tree_function_versioning): Likewise.
8102         (build_duplicate_type): Likewise.
8103         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
8104         (struct copy_body_data): Replace splay-tree by pointer-map.
8105         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
8106         not $(SPLAY_TREE_H).
8107         (gimplify.o): Depend on $(SPLAY_TREE_H).
8108         (omp-low.p): Likewise.
8109
8110 2007-03-31  Anatoly Sokolov <aesok@post.ru>
8111
8112         * config/avr/predicates.md (even_register_operand,
8113         odd_register_operand): New predicates.
8114         * config/avr/avr.md (movw peephole2): New.
8115         (movw_r peephole2): New.
8116
8117 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
8118
8119         * tree.h (get_signed_or_unsigned_type): New.
8120         * fold-const.c (operand_equal_for_comparison_p): Use
8121         get_signed_or_unsigned_type instead of
8122         lang_hooks.types.signed_or_unsigned_type.
8123         * expr.c (store_expr): Ditto.
8124         * langhooks.c (get_signed_or_unsigned_type): New.
8125         (lhd_signed_or_unsigned_type): New.
8126         * langhooks.h (lhd_signed_or_unsigned_type): New.
8127         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
8128
8129 2007-03-30  Richard Henderson  <rth@redhat.com>
8130
8131         * tree-ssa-loop-ivopts.c: Include target.h.
8132         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
8133         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
8134         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
8135         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
8136
8137 2007-03-30  Richard Henderson  <rth@redhat.com>
8138             Kai Tietz  <kai.tietz@onevision.com>
8139
8140         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
8141         default for 64-bit.
8142         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
8143         (TARGET_64BIT_MS_ABI): New.
8144         (DBX_REGISTER_NUMBER): Handle 64-bit.
8145         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
8146         (LONG_TYPE_SIZE): Force to 32.
8147         (REG_PARM_STACK_SPACE): New.
8148         (OUTGOING_REG_PARM_STACK_SPACE): New.
8149         (REGPARM_MAX, SSE_REGPARM_MAX): New.
8150         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
8151         (STACK_BOUNDARY): Use 128 for 64-bit.
8152         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
8153         Add 64-bit implementation.
8154         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
8155         argument unused.
8156         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
8157         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
8158         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
8159         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
8160         (ix86_handle_cconv_attribute): Don't warn when ignoring if
8161         TARGET_64BIT_MS_ABI.
8162         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
8163         (ix86_pass_by_reference): Likewise.
8164         (ix86_function_value_regno_p): Likewise.
8165         (ix86_build_builtin_va_list): Likewise.
8166         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
8167         (function_arg_advance_ms_64): New.
8168         (function_arg_advance): Call it.
8169         (function_arg_ms_64): New.
8170         (function_arg): Call it.
8171         (function_value_ms_64): New.
8172         (ix86_function_value_1): Call it.
8173         (return_in_memory_ms_64): New.
8174         (ix86_return_in_memory): Call it.
8175         (setup_incoming_varargs_ms_64): New.
8176         (ix86_setup_incoming_varargs): Call it.
8177         (ix86_expand_prologue): Handle 64-bit stack probing.
8178         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
8179         (output_pic_addr_const): Likewise.
8180         (x86_this_parameter): Likewise.
8181         (x86_output_mi_thunk): Likewise.
8182         (x86_function_profiler): Likewise.
8183         (TARGET_STRICT_ARGUMENT_NAMING): New.
8184         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
8185         (TARGET_64BIT_MS_ABI): New.
8186         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
8187         * config/i386/i386.md (allocate_stack_worker): Remove.
8188         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
8189         describe the clobber of eax without a match_scratch.
8190         (allocate_stack_worker_postreload): Remove.
8191         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
8192         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
8193         (allocate_stack_worker_rex64_postreload): Remove.
8194         (allocate_stack): Handle 64-bit.
8195         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
8196         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
8197         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
8198         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
8199         (STANDARD_STARTFILE_PREFIX_1): Likewise.
8200         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
8201         * config.build (x86_64-*-mingw*): New host.
8202         * config.host (x86_64-*-mingw*): New host.
8203         * config.gcc (x86_64-*-mingw*): New target.
8204         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
8205
8206 2007-03-30  Richard Henderson  <rth@redhat.com>
8207             Kai Tietz  <kai.tietz@onevision.com>
8208
8209         * c-pragma.c (struct def_pragma_macro_value): New.
8210         (struct def_pragma_macro): New.
8211         (pushed_macro_table): New.
8212         (dpm_hash, dpm_eq): New.
8213         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
8214         (init_pragma): Install them.
8215         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
8216
8217 2007-03-30  Anatoly Sokolov <aesok@post.ru>
8218
8219         * config/avr/avr.c (avr_override_options): Clear
8220         'flag_delete_null_pointer_checks'.
8221
8222 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
8223
8224         PR c++/26099
8225         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
8226         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
8227         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
8228         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
8229         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
8230         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
8231         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
8232         C++ extensions.
8233         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
8234
8235 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
8236
8237         * regmove.c: Move all of pass_stack_adjustments from here...
8238         * combine-stack-adj.c: ...to this new file.
8239         * Makefile.in: Add rules for combine-stack-adj.o.
8240
8241 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
8242
8243         PR tree-optimization/31383
8244         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
8245         to have the same length.
8246
8247 2007-03-30  Jan Hubicka  <jh@suse.cz>
8248
8249         PR middle-end/30700
8250         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
8251         availablility; add more sanity checking; ask varpool only about
8252         VAR_DECL.
8253
8254 2007-03-29  Richard Henderson  <rth@redhat.com>
8255
8256         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
8257         to decide, but __SIZEOF_LONG_LONG__.
8258
8259 2007-03-29  Richard Henderson  <rth@redhat.com>
8260
8261         * emutls.c (struct __emutls_array): New.
8262         (emutls_destroy): Use it instead of casting element 0 from void*.
8263         (__emutls_get_address): Likewise.
8264
8265 2007-03-29  Richard Henderson  <rth@redhat.com>
8266
8267         * varasm.c (initializer_constant_valid_p): Don't deny
8268         DECL_DLLIMPORT_P on functions.
8269
8270         * config/i386/cygming.h: Remove function declarations.
8271         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
8272         (ASM_OUTPUT_LABELREF): Remove.
8273         (COMMON_ASM_OP): Remove.
8274         (ASM_OUTPUT_COMMON): Remove.
8275         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
8276         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
8277         (ASM_DECLARE_FUNCTION_NAME): Likewise.
8278         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
8279         Rename from TARGET_ENCODE_SECTION_INFO.
8280         * config/i386/netware.h: Likewise.
8281         * config/i386/i386-protos.h: Update.
8282         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
8283         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
8284         (legitimate_constant_p): Reject dllimports.
8285         (dllimport_map, get_dllimport_decl): New.
8286         (legitimize_dllimport_symbol): New.
8287         (legitimize_address, ix86_expand_move): Use it.
8288         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
8289         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
8290         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
8291         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
8292         * config/i386/predicates.md (constant_call_address_operand): Only
8293         accept symbols; reject dllimport_p symbols.
8294         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
8295         i386_pe_maybe_record_exported_symbol.
8296         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
8297         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
8298         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
8299         trust the setting of DECL_DLLIMPORT_P.
8300         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
8301         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
8302         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
8303         tidy the argument scanning loop.
8304         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
8305         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
8306         (i386_pe_strip_name_encoding): Remove.
8307         (i386_pe_binds_local_p): New.
8308         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
8309         (i386_pe_output_labelref): Remove.
8310         (i386_pe_asm_output_aligned_decl_common): New.
8311         (i386_pe_maybe_record_exported_symbol): Rename from
8312         i386_pe_record_exported_symbol; check for dllexported symbols.
8313
8314 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
8315
8316         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
8317         add comment explaining why vsnprintf cannot be used.
8318
8319 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
8320
8321         PR tree-optimization/30666
8322         * tree.c (build_complex_type): When creating type names for DWARF2
8323         debug info, create TYPE_DECLs for TYPE_NAME instead of
8324         IDENTIFIER_NODEs.
8325         (build_common_tree_nodes_2): Use build_complex_type when building
8326         predefined complex types, to preserve canonical types.
8327
8328 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
8329
8330         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
8331         (noce_get_alt_condition): Look at it to determine whether to
8332         reverse the condition or not.
8333         (noce_get_condition): Substitute the truth for lies.
8334         (noce_find_if_block): Set the then_else_reversed field.
8335
8336 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
8337
8338         * config/fr30/fr30.md (movdi): Do not accept immediates as the
8339         destination of this insn.
8340         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
8341         than calling gen_rtx_SET directly.  Use r0 to hold the value of
8342         'address + 4' rather than a stack based temporary which can be
8343         mis-optimized away.
8344
8345 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8346
8347         * config/s390/s390.c (s390_secondary_input_reload_class,
8348         s390_secondary_output_reload_class): Functions removed.
8349         (s390_secondary_reload): New function.
8350         (TARGET_SECONDARY_RELOAD): Target macro defined.
8351         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
8352         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
8353         * config/s390/s390.md ("reload_outti", "reload_outdi",
8354         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
8355         "reload_out<mode>"): Expanders removed.
8356         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
8357         "reload<mode>_nonoffmem_out"): Expanders added.
8358
8359 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8360
8361         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
8362         SRC->DEST replacement failed anyway.
8363
8364 2007-03-28  Mike Stump  <mrs@apple.com>
8365
8366         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
8367         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
8368         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
8369
8370 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
8371
8372         * config.gcc: Accept barcelona as a variant of amdfam10.
8373         * config/i386/i386.c (override_options): Likewise.
8374         * doc/invoke.texi: Likewise.
8375
8376 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
8377
8378         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
8379         offsets for BIT_FIELD_REF and COMPONENT_REF.
8380
8381 2007-03-28  Richard Guenther  <rguenther@suse.de>
8382
8383         * tree.c (is_global_var): Move ...
8384         * tree-flow-inline.h (is_global_var): ... here.
8385         * tree.h (is_global_var): Remove declaration.
8386
8387 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
8388
8389         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
8390         option.
8391         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
8392         * config/i386/i386.c (ix86_tune_features): Initialize new
8393         tuning option.
8394         * config/i386/predicates.md (promotable_binary_operator): Use
8395         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
8396
8397 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
8398
8399         PR target/31380
8400         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
8401
8402 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
8403
8404         * config/fr30/fr30.md (movsi_internal): Change destination
8405         constraint from m to V and add m to the end.
8406
8407 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8408
8409         * config/sh/sh.md (movsi_i): Fix type attribute.
8410
8411 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8412
8413         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
8414         (movsf_ie): Likewise.
8415
8416 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8417
8418         * config.gcc: Add sh4-300 to multilib.
8419         * config/sh/t-mlib-sh4-300: New file.
8420
8421 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
8422
8423         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
8424         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
8425         fix_trunc<mode>di2.
8426         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
8427         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
8428         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
8429         "fixuns_trunctddi2"): Whitespace fix.
8430
8431 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
8432
8433         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
8434         the definition of struct sh_args.
8435         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
8436         CALL_COOKIE_INT_REG_GET): Likewise.
8437
8438 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
8439
8440         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
8441         transformations are applied successfully.
8442
8443 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
8444
8445         * tree.c (tree_contains_struct): Permit 512 tree codes.
8446         * tree.h (tree_contains_struct): Ditto.
8447         (MAX_TREE_CODES): Ditto.
8448         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
8449         SPARE member to store remaining padding bits.
8450
8451 2007-03-27  Anatoly Sokolov <aesok@post.ru>
8452
8453         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
8454         architecture.
8455
8456 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
8457
8458         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
8459         * configure: Regenerate.
8460
8461         * configure: Regenerate using the correct version of autoconf.
8462
8463 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
8464
8465         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
8466         pointer regs.
8467         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
8468         regs to "__SP_L__" and "__SP_H__".
8469
8470 2007-03-27  Richard Guenther  <rguenther@suse.de>
8471
8472         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
8473         computations with it with a HOST_WIDE_INT variable.
8474
8475 2007-03-26  Mike Stump  <mrs@apple.com>
8476
8477         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
8478         objective-c-header, objective-c++-header and objc++-cpp-output
8479         support.
8480         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
8481
8482 2007-03-26  Richard Henderson  <rth@redhat.com>
8483
8484         PR target/31361
8485         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
8486         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
8487         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
8488         IX86_BUILTIN_PSRLQ128): New.
8489         (ix86_init_mmx_sse_builtins): Add them.
8490         (ix86_expand_builtin): Expand them.
8491         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
8492         operand 2 be TImode.
8493         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
8494         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
8495         _mm_srli_epi64): Mark __B const.
8496         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
8497         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
8498         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
8499         new two-vector shift builtins.
8500
8501 2007-03-26  Ian Lance Taylor  <iant@google.com>
8502
8503         PR tree-optimization/31345
8504         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
8505         [+INF, +INF(OVF)] into VARYING.
8506
8507 2007-03-26  Zack Weinberg  <zackw@panix.com>
8508
8509         * gengtype-parse.c: New file.
8510         * gengtype-yacc.y: Delete.
8511         * gengtype-lex.l: Don't include gengtype-yacc.h.
8512         Define YY_DECL and yyterminate appropriately for recursive
8513         descent parser.  yylval is now a string out-parameter to yylex.
8514         (HWS, EOID): New shorthand.
8515         (IWORD): Add a couple more types.
8516         (yylex): Add a setup stanza.  Remove the complex rules for
8517         detecting GTY'ed types and typedefs; replace with simple
8518         keyword detectors.  Adjust everything for the changed
8519         definition of yylval.  Ignore all pp-directives, not just #define.
8520         (yyerror): Delete.
8521         (parse_file): Rename yybegin; do not call yyparse.
8522         (yyend): New.
8523         * gengtype.c (xasprintf): Export again.
8524         (this_file): New.  Use everywhere __FILE__ was being used.
8525         (get_lang_bitmap): Special case types defined in gengtype.c.
8526         (do_typedef, new_structure): Suppress definition of certain types.
8527         (new_structure): Improve diagnostics of duplicate definitions.
8528         Make sure location_s is associated with input.h.
8529         (nreverse_pairs, define_location_structures): New functions.
8530         (main): Improve tagging of kludge types.  Remove old kludges
8531         for input.h types; use define_location_structures.
8532         * gengtype.h: Update prototypes.  Define token codes here.
8533         * Makefile.in: Remove all references to gengtype-yacc.
8534         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
8535         and gengtype.
8536         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
8537         add GTY((skip)) to the field that's only conditionally there.
8538         * doc/install.texi: Document that Bison is no longer required
8539         unless building treelang.
8540
8541         * gengtype.c: Don't include gtyp-gen.h.
8542         (srcdir): Declare here.
8543         (base_files, lang_dir_names): Allocate dynamically.
8544         (gt_files, num_gt_files, num_lang_dirs): New globals.
8545         (measure_input_list, read_input_line, read_input_list)
8546         (set_lang_bitmap): New functions.
8547         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
8548         simplify, relying on read_input_list to set up the bitmaps.
8549         (main): Arguments are no longer unused.  Check for correct number
8550         of command line arguments, set srcdir and srcdir_len, then call
8551         read_input_list, before doing anything else.  No need to worry
8552         about duplicates in main loop.
8553         * configure.ac: Simplify the calculation of all_gtfiles.
8554         Put language tags in there.  Don't set or substitute
8555         all_gtfiles_files_langs or all_gtfiles_files_frags.
8556         * Makefile.in: Revamp the way gengtype is invoked, now that it
8557         takes a file on its command line with a much simpler format.
8558         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
8559         (GTFILES): Remove duplicates and C source files.
8560         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
8561         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
8562         * configure: Regenerate.
8563
8564         * gengtype.h: Remove all type definitions to gengtype.c; leave
8565         only definitions of options_p, type_p, and pair_p as opaque
8566         pointers.  Update prototypes.
8567         * gengtype.c: Many type definitions moved here from gengtype.h.
8568         Consolidate type definitions at the top of the file.
8569         (xvasprintf): Delete.
8570         (xasprintf): Make static.
8571         (create_nested_pointer_option): Add 'next' parameter.
8572         (create_field_all, create_field_at): New functions.
8573         (create_field): Now a thin wrapper around create_field_all.
8574         (create_optional_field): Rename create_optional_field_ and add
8575         line argument.  Original name is now a macro which supplies
8576         __LINE__.
8577         (oprintf): Use vsnprintf directly.
8578         (close_output_files): Use fatal rather than perror/exit.
8579         (note_def_vec, note_def_vec_alloc): Use create_field_at.
8580         (main): Set progname.  Don't use exit.
8581         * gengtype-yacc.y (struct_fields): Use create_field_at.
8582         (option, optionseqopt): Delete.
8583         (optionseq): Consolidate productions from option here so we
8584         can use the first argument to create_option.
8585
8586         * gengtype-lex.l: Distinguish unions from structures in the
8587         token type.  Don't call find_structure; return the tag as a string.
8588         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
8589         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
8590         Reorganize typedef_struct production accordingly.
8591         Use create_nested_ptr_option.
8592         * gengtype.c (create_nested_ptr_option): New function.
8593         * gengtype.h: Declare it.
8594
8595         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
8596         (string_type): Don't declare.
8597         (do_scalar_typedef): Declare.
8598         (create_scalar_type): Update prototype.
8599         * gengtype.c (string_type): Make static.
8600         (scalar_nonchar, scalar_char): New.
8601         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
8602         (resolve_typedef): Use scalar_nonchar for error recovery.
8603         (create_scalar_type): Remove name_len field.  Return scalar_char
8604         or scalar_nonchar as appropriate.
8605         (adjust_field_type): Look at scalar_is_char boolean to decide whether
8606         to use string_type.
8607         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
8608         whenever possible.
8609         (main): Initialize scalar_char and scalar_nonchar before calling
8610         gen_rtx_next.
8611         * gengtype-lex.l: Adjust for removal of second argument to
8612         create_scalar_type.  Use yylval.s instead of yylval.t when
8613         returning SCALAR.
8614         * gengtype-yacc.y: Type of SCALAR is string.  Call
8615         create_scalar_type from type:SCALAR rule.  Adjust for removal of
8616         second argument to create_scalar_type.
8617
8618         * vec.h: Remove all #if IN_GENGTYPE blocks.
8619         Add comment saying that changes may require adjustments to gengtype.
8620         * gengtype.c: Don't include coretypes.h or tm.h.
8621         Add comment to inclusion of errors.h.
8622         (note_def_vec, note_def_vec_alloc): New functions.
8623         * gengtype.h: Declare new functions.
8624         * gengtype-lex.l: Don't include coretypes.h.
8625         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
8626         Delete.
8627         (update_lineno): Remove unnecessary prototype.
8628         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
8629         (VEC rule): Just return VEC_TOKEN.
8630         * gengtype-yacc.y (VEC_TOKEN): New token type.
8631         (type): Add a production for VEC(a,b).
8632         * Makefile.in: Update dependencies.
8633
8634         * gengtype-lex.l: Remove rules for parsing pointer-to-function
8635         typedefs that use the old PARAMS macro.
8636
8637         * gengtype-lex.l: Remove all rules and states relating to yacc
8638         input files.
8639         * gengtype-yacc.y: Similarly.
8640         * gengtype.c (note_yacc_type): Delete function.
8641         * gengtype.h: Update prototypes.
8642
8643 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
8644
8645         * tree-pretty-print.c (dump_generic_node): Report precision of
8646         unnamed integer types.
8647
8648 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
8649
8650         * ifcvt.c (noce_try_store_flag_constants): Don't check
8651         no_new_pseudos here.
8652         (noce_try_store_flag_constants): Don't check no_new_pseudos.
8653         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
8654         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
8655         noce_try_sign_mask): Likewise.
8656         (if_convert): Check no_new_pseudos here.
8657
8658         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
8659         Remove prototypes.
8660         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
8661         (noce_get_condition): Handle new then_else_reversed argument.
8662         (noce_init_if_info): Remove, fold into noce_find_if_block.
8663         (noce_process_if_block): Take a struct noce_if_info as the
8664         argument.  Don't set up one based on ce_if_info.  Update pointer
8665         references accordingly.
8666         (cond_move_process_if_block): Likewise.
8667         (process_if_block): Removed.
8668         (find_if_block): Removed.  Move functionality two new functions,
8669         noce_find_if_block and cond_exec_find_if_block.
8670         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
8671         blocks and the symmetric IF-ELSE-JOIN case.
8672         (cond_exec_find_if_block): Also new function mostly based on old
8673         find_if_block and process_if_block.
8674         (find_if_header): Replace find_if_block call with separately
8675         guarded calls to noce_find_if_block and cond_exec_find_if_block.
8676         (find_cond_trap): Update noce_get_condition call.
8677         (dead_or_predicable): Likewise.
8678
8679 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
8680
8681         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
8682         Remove.
8683         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
8684         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
8685         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
8686         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
8687         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
8688         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
8689         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
8690         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
8691         __builtin_ia32_psrad128 builtins.
8692
8693 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
8694
8695         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
8696         * config/i386/constraints.md
8697         (define_constraint "I"): Use IN_RANGE macro.
8698         (define_constraint "J"): Ditto.
8699         (define_constraint "K"): Ditto.
8700         (define_constraint "M"): Ditto.
8701         (define_constraint "N"): Ditto.
8702         (define_constraint "O"): Ditto.
8703         * config/i386/predicates.md
8704         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
8705         (define_predicate "const_0_to_3_operand"): Ditto.
8706         (define_predicate "const_0_to_7_operand"): Ditto.
8707         (define_predicate "const_0_to_15_operand"): Ditto.
8708         (define_predicate "const_0_to_63_operand"): Ditto.
8709         (define_predicate "const_0_to_255_operand"): Ditto.
8710         (define_predicate "const_1_to_31_operand"): Ditto.
8711         (define_predicate "const_2_to_3_operand"): Ditto.
8712         (define_predicate "const_4_to_7_operand"): Ditto.
8713
8714 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8715
8716         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
8717         in SImode for save_world.
8718         * config/rs6000/altivec.md (save_world, restore_world): Convert to
8719         LR hard reg.
8720
8721 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
8722
8723         PR tree-optimization/30784
8724         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
8725         BIT_FIELD_REF.
8726
8727 2007-03-25  Revital Eres  <eres@il.ibm.com>
8728
8729         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
8730           Fold movement_possibility function into it.
8731
8732 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8733
8734         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
8735         (load_macho_picbase_{si,di}): Convert to LR hard reg.
8736         (call_indirect_nonlocal_darwin64): Same.
8737         (call_nonlocal_darwin64): Same.
8738         (call_value_indirect_nonlocal_darwin64): Same.
8739         (call_value_nonlocal_darwin64): Same.
8740         (sibcall_nonlocal_darwin64): Same.
8741         (sibcall_value_nonlocal_darwin64): Same.
8742         (sibcall_symbolic_64): Same.
8743         (sibcall_value_symbolic_64): Same.
8744         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
8745         LR pseudo.
8746         (rs6000_emit_load_toc_table): Same.
8747         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
8748         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
8749         (mull_call): Same.
8750         (divss_call): Same.
8751         (divus_call): Same.
8752         (quoss_call): Same.
8753         (quous_call): Same.
8754         (load_toc_v4_pic_si): Same
8755         (load_toc_v4_PIC_1): Same.
8756         (load_toc_v4_PIC_1b): Same.
8757         (call_indirect_aix{32,64}): Same.
8758         (call_value_indirect_aix{32,64}): Same.
8759         (call): Same.
8760         (call_value): Same.
8761         (call_local{32,64}): Same.
8762         (call_value_local{32,64}): Same.
8763         (call_indirect_nonlocal_aix{32,64}): Same.
8764         (call_nonlocal_aix{32,64}): Same.
8765         (call_value_indirect_nonlocal_aix{32,64}): Same.
8766         (call_value_nonlocal_aix{32,64}): Same.
8767         (call_indirect_nonlocal_sysv<mode>): Same.
8768         (call_nonlocal_sysv<mode>): Same.
8769         (call_value_indirect_nonlocal_sysv<mode>): Same.
8770         (call_value_nonlocal_sysv<mode>): Same.
8771         (sibcall): Same.
8772         (sibcall_local{32,64}): Same.
8773         (sibcall_value_local{32,64}): Same.
8774         (sibcall_nonlocal_aix{32,64}): Same.
8775         (sibcall_value_nonlocal_aix{32,64}): Same.
8776         (sibcall_nonlocal_sysv<mode>): Same.
8777         (sibcall_value): Same.
8778         (sibcall_value_nonlocal_sysv<mode>): Same.
8779
8780 2007-03-24  Paul Brook  <paul@codesourcery.com>
8781
8782         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
8783         * config/arm/linux-eabi.h: Remove legacy syscall hack.
8784
8785 2007-03-24  Richard Henderson  <rth@redhat.com>
8786
8787         * config/ia64/constraints.md: New file.
8788         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
8789         satisfies_constraint_?.
8790         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
8791         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
8792         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
8793         ia64_output_mi_thunk): Likewise.
8794         (ia64_const_ok_for_letter_p): Remove.
8795         (ia64_const_double_ok_for_letter_p): Remove.
8796         (ia64_extra_constraint): Remove.
8797         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
8798         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
8799         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
8800         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
8801         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
8802         EXTRA_MEMORY_CONSTRAINT): Remove.
8803         * config/ia64/ia64.md: Include constriants.md.  Replace
8804         CONST_OK_FOR_? with satisfies_constraint_?.
8805
8806 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
8807             H.J. Lu  <hongjiu.lu@intel.com>
8808
8809         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
8810         DPD or BID name.
8811         (name macros): Use DPD_BID_NAME to convert names properly.
8812
8813         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
8814         decimal floating point format.
8815         (init_floating_libfuncs): Change decimal functions so that they
8816         have a "bid_" prefix if the decimal system uses the BID format,
8817         and "dpd_" prefix if the decimal system uses the DPD format.
8818         (init_interclass_conv_libfuncs): Ditto.
8819         (init_intraclass_conv_libfuncs): Ditto.
8820
8821         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8822         using the BID format.
8823
8824         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8825         whether we are using the BID decimal format.
8826         * configure: Regenerate.
8827
8828         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8829         the compiler has decimal floating point enabled.  Define
8830         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8831         instead of DPD.
8832
8833         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8834         using the BID format.
8835
8836         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8837         whether we are using the BID decimal format.
8838         * configure: Regenerate.
8839
8840         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8841         the compiler has decimal floating point enabled.  Define
8842         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8843         instead of DPD.
8844
8845         * doc/install.texi (--enable-decimal-float): Document BID and DPD
8846         options, and that it is enabled for i386/x86_64 systems.
8847
8848         * Makefile.in (enable_decimal_float): New.
8849         (DECNUMFMT): New.
8850         (DECNUMINC): Add  -I$(DECNUMFMT).
8851         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
8852         to $(DECNUMFMT) from $(DECNUM).
8853
8854         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
8855         Substitute enable_decimal_float.
8856         * configure: Regenerated.
8857
8858         PR other/30529
8859         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
8860         unsigned long.
8861
8862         * configure.ac: Enable decimal float for x86_64-*-linux*.
8863         * configure: Regenerated.
8864
8865         PR other/30530
8866         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
8867         decimal128ClearSign to flip and clear the sign bit in decimal128.
8868         (decimal_real_maxval): Set decimal128SetSign to set the sign
8869         bit in decimal128.
8870
8871 2007-03-23  Ian Lance Taylor  <iant@google.com>
8872
8873         * fold-const.c (fold_binary): Correct warning for X - c >= X.
8874
8875 2007-03-23  Ian Lance Taylor  <iant@google.com>
8876
8877         * tree-dump.c (dump_files): Correct comment.
8878
8879 2007-03-23  Ian Lance Taylor  <iant@google.com>
8880
8881         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
8882
8883 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
8884
8885         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
8886         in cfglayout mode.  Don't go into and out of cfglayout mode.
8887         Link the blocks in the order of the constructed traces.
8888         (rest_of_handle_tracer): Adjust call to tracer.
8889         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
8890         Don't go into cfglayout mode.
8891         (rtl_loop_done): Don't go out of cfglayout mode.
8892         * cfglayout.c (relink_block_chain): New function, split out from...
8893         (fixup_reorder_chain): ...here.  Remove redundant checking.
8894         (cfg_layout_finalize): Don't clear the header, footer, and aux
8895         fields here, move the code to do so to relink_block_chain.  Likewise
8896         for free_original_copy_tables.
8897         * rtl.h (tracer): Update prototype.
8898         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
8899         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
8900         mode.  Use relink_block_chain to serialize the CFG according to the
8901         new basic block order.  Move targetm.cannot_modify_jumps_p check from
8902         here...
8903         (gate_handle_reorder_blocks): ...to here.
8904         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
8905         from here...
8906         (gate_duplicate_computed_gotos): ...to here.
8907         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
8908         something always changes when going into and out of cfglayout mode.
8909         Perform an expensive cfg cleanup while going into cfglayout mode.
8910         Always update liveness information on HAVE_conditional_execution
8911         targets.  Reserialize the basic blocks and go out of cfglayout mode.
8912         * reg-stack.c: Include cfglayout.h.
8913         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
8914         the call to reorder_basic_blocks.
8915         * basic-block.h (reorder_basic_blocks): Update prototype.
8916         (relink_block_chain): New prototype.
8917         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
8918
8919 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
8920
8921         * config/mips/mips.md (type, hazard, *movdi_32bit,
8922         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
8923         *movhi_internal, *movqi_internal, *movsf_hardfloat,
8924         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
8925         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
8926         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
8927         applicable.
8928         (movcc): Change first xfer to multi.
8929         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
8930         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
8931         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
8932         config/mips/generic.md: Change reservations using "xfer" to use
8933         "mfc,mtc".
8934         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
8935         using match_operand.
8936         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
8937         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
8938         examining mode.
8939         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
8940
8941 2007-03-22  Richard Henderson  <rth@redhat.com>
8942
8943         * config/i386/i386.c: Remove unnecessary function declarations.
8944         Move targetm definition, and all related macros, to the end of
8945         the file.  Resort some functions to put definitions before uses.
8946         (ix86_attribute_table): Make static.  Move to end of file.
8947         (ix86_gimplify_va_arg): Make static.
8948
8949 2007-03-22  Richard Henderson  <rth@redhat.com>
8950
8951         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
8952         don't increase local_regparm with force_align_arg_pointer check.
8953         (ix86_function_sseregparm): Assert 32-bit.
8954         (type_has_variadic_args_p): New.
8955         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
8956         type_has_variadic_args_p.
8957         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
8958         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
8959         use memset instead.  Do maybe_vaarg check first; skip attribute
8960         tests if true; skip attribute tests for 64-bit.
8961         (construct_container): Remove TARGET_DEBUG_ARG.
8962         (function_arg_advance_32, function_arg_advance_64): Split out ...
8963         (function_arg_advance): ... from here.
8964         (function_arg_32, function_arg_64): Split out ...
8965         (function_arg): ... from here.
8966         (ix86_pass_by_reference): Tidy.
8967         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
8968         (function_value_32): New, from parts of ix86_function_value
8969         and ix86_value_regno.
8970         (function_value_64): New, from parts of ix86_function_value
8971         and ix86_libcall_value.
8972         (ix86_function_value_1): New.
8973         (ix86_function_value, ix86_libcall_value): Use it.
8974         (return_in_memory_32, return_in_memory_64): Split out ...
8975         (ix86_return_in_memory): ... from here.
8976         (ix86_struct_value_rtx): Skip for 64-bit.
8977         (ix86_libcall_value, ix86_value_regno): Remove.
8978         (setup_incoming_varargs_64): Split out ...
8979         (ix86_setup_incoming_varargs): ... from here.
8980         (ix86_va_start): Remove TARGET_DEBUG_ARG.
8981         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
8982         * config/i386/i386-protos.h (ix86_function_value): Remove.
8983         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
8984
8985 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8986
8987         PR other/23572
8988         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
8989         infinities not supported, otherwise emit warning if -Woverflow. On
8990         underflow, emit warning if -Woverflow.
8991         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
8992         and 0 otherwise.
8993         * real.h (real_from_string): Update declaration
8994
8995 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
8996             Richard Henderson  <rth@redhat.com>
8997
8998         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
8999         * calls.c (compute_argument_block_size, expand_call,
9000         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
9001         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
9002         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
9003         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
9004         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
9005         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
9006         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
9007         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
9008         Set to 1.
9009
9010 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
9011
9012         * c-incpath.c (add_sysroot_to_chain): New.
9013         (merge_include_chains): Add sysroot argument.  Call
9014         add_sysroot_to_chain if sysrooted.
9015         (register_include_chains): Update call to merge_include_chains.
9016         * doc/cppopts.texi: Document use of '=' in include directory
9017         arguments.
9018
9019 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
9020
9021         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
9022         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
9023         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
9024         insn pattern using X87MODEF12 mode macro.
9025
9026 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
9027
9028         * regmove.c (regmove_optimize): Use reg_mentioned_p
9029         instead of reg_overlap_mentioned_p for DST.
9030
9031 2007-03-21  Mike Stump  <mrs@apple.com>
9032
9033         * c.opt: Fixup for Objective-C/C++.
9034
9035 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
9036
9037         * explow.c (convert_memory_address): Fold memory reference when
9038         POINTERS_EXTEND_UNSIGNED < 0
9039
9040 2007-03-21  Richard Henderson  <rth@redhat.com>
9041
9042         PR target/31245
9043         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
9044         * config/i386/mmintrin.h (__m64): Likewise.
9045         * config/i386/xmmintrin.h (__m128): Likewise.
9046
9047 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9048
9049         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
9050         (VXWORKS_OS_CPP_BUILTINS): Define.
9051         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
9052         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
9053
9054 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9055
9056         * rtl.h (constant_pool_reference_p): Delete.
9057         (find_constant_src): Declare.
9058         * rtlanal.c (find_constant_src): New function.
9059         * simplify-rtx.c (constant_pool_reference_p): Delete.
9060         * config/i386/i386.md: Use find_constant_src instead of
9061         constant_pool_reference_p/avoid_constant_pool_reference pairs.
9062
9063 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
9064
9065         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
9066         * c-cppbuiltin.c (c_cpp_builtins): Define them.
9067
9068 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
9069
9070         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
9071         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
9072         (arm_elf_asm_constructor): Use it.
9073         (arm_elf_asm_destructor): New function.
9074
9075 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
9076
9077         * jump.c (mark_jump_label): Treat SEQUENCE specially.
9078
9079 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
9080
9081         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
9082
9083 2007-03-19  Andrew Haley  <aph@redhat.com>
9084
9085         PR tree-optimization/31264
9086         * tree-vrp.c (register_edge_assert_for_1): Don't look though
9087         VIEW_CONVERT_EXPRs.
9088
9089 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
9090
9091         PR rtl-optimization/30907
9092         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
9093         (fwprop_init): Always call loop_optimizer_initialize.
9094         (fwprop_done): Always call loop_optimizer_finalize.
9095         (fwprop): We always have loop info now.
9096         (gate_fwprop_addr): Remove.
9097         (pass_fwprop_addr): Use gate_fwprop as gate.
9098
9099         PR rtl-optimization/30841
9100         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
9101         df_chain_alloc): Call df_reorganize_refs unconditionally.
9102         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
9103         refs_organized to refs_organized_size.
9104         (df_ref_create_structure): Use refs_organized_size instead of
9105         bitmap_size if refs had been organized, and keep refs_organized_size
9106         up-to-date.
9107         * df.h (struct df_ref_info): Change refs_organized to
9108         refs_organized_size.
9109         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
9110         bitmap_size.
9111
9112 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
9113
9114         * except.c (output_function_exception_table): Do not reference the
9115         EH personality routine for functions that do not require an
9116         exception table.
9117
9118 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
9119
9120         PR c/30762
9121         * c-typeck.c (convert_for_assignment): Call comptypes for
9122         RECORD_TYPE or UNION_TYPE.
9123
9124         PR inline-asm/30505
9125         * reload1.c (reload): Do invalid ASM checking after
9126         cleanup_subreg_operands.
9127
9128 2007-03-19  Jeff Law  <law@redhat.com>
9129
9130         * tree-cfg.c (find_taken_edge): Tighten conditions for
9131         optimizing computed gotos.
9132
9133 2007-03-19  Michael Matz  <matz@suse.de>
9134
9135         * builtins.c (expand_builtin_sync_operation,
9136         expand_builtin_compare_and_swap,
9137         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
9138         correctly.
9139
9140         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
9141         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
9142         for operand 3.
9143
9144 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9145
9146         * doc/tm.texi: Add brackets around the return type of
9147         TARGET_SECONDARY_RELOAD.
9148
9149 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9150         Richard Guenther  <rguenther@suse.de>
9151
9152         PR tree-optimization/31254
9153         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
9154         Use handled_component_p () where appropriate.  Continue
9155         propagating into the rhs if we propagated into an INDIRECT_REF
9156         on the lhs.
9157
9158 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9159
9160         * config/s390/s390.md (op_type attribute): RRR instruction type added.
9161         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
9162         (xde, xdee): Mode attributes adjusted to support DFP modes.
9163         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
9164         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
9165         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
9166         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
9167         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
9168         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
9169         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
9170         numbers.
9171         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
9172         "movsf"): Insn definitions removed.
9173         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
9174         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
9175         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
9176         definitions added.
9177         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
9178         "reload_in<mode>", "reload_out<mode>"): Expander added.
9179         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
9180         Expander removed.
9181
9182 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9183
9184         * config/s390/s390.md: Only non-functional changes.  Renamed
9185         FPR mode macro to BFP all over the file.
9186
9187 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9188
9189         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
9190         (op_type attribute): RRF instruction type added.
9191         (fT0): New mode attribute.
9192         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
9193         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
9194         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
9195         no secondary memory is needed when moving DFmode values between GPRs
9196         and FPRs.
9197
9198 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9199
9200         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
9201         inverted and documentation adjusted.
9202         ("mhard-dfp", "msoft-dfp"): New options.
9203         * config/s390/s390.c (s390_handle_arch_option): New architecture
9204         switch: z9-ec.
9205         (override_options): Sanity checks for the new options added.
9206         * config.gcc: New architecture switch: z9-ec.
9207         * config/s390/s390.h (processor_flags): PF_DFP added.
9208         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
9209         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
9210         when the bit is NOT set so remove it from the defaults.
9211
9212 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9213
9214         * genemit.c (main): Print include statement for dfp.h.
9215         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
9216         is not available.
9217
9218 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
9219
9220         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
9221
9222 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
9223
9224         PR target/31022
9225         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
9226         instead of PATTERN.
9227
9228 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9229
9230         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
9231         attr_length_call, output_call, output_indirect_call): Cleanup
9232         formatting of targetm calls.
9233
9234 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
9235
9236         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
9237
9238 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9239
9240         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
9241         reservation, bypass and anti-bypass descriptions for these instructions.
9242         Update move patterns.
9243         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
9244         TYPE_FPSTORE.
9245
9246 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
9247
9248         * tree-vect-transform.c (get_initial_def_for_induction): Replace
9249         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
9250         (get_initial_def_for_reduction): Likewise.
9251
9252 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
9253
9254         Fix PR tree-optimization/29922
9255         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
9256         (get_representative): Removed.
9257         (value_dies_in_block_x): Update for rvuse removal.
9258         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
9259         (compute_antic_aux): Handle when PHI nodes appear in
9260         non-single-successors.
9261         (dump_bitmap_of_names): Removed.
9262         (compute_antic_safe): Renamed and removed rvuse calculation.
9263         Calculate only antic safe.
9264         (insert_into_preds_of_block): Remove assert.
9265         (execute_pre): Update for renamed functions.
9266         (defer_or_phi_translate_block): New function.
9267
9268 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9269
9270         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
9271         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
9272         typos.
9273         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
9274         Follow spelling conventions.
9275
9276         * tree-data-ref.h: Remove the prototype for analyze_array.
9277
9278 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
9279
9280         PR tree-optimization/31041
9281         * tree-vect-transform.c (get_initial_def_for_induction): Call
9282         force_gimple_operand.
9283
9284 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
9285
9286         * ipa-type-escape.c (look_for_casts) : Revert code to use
9287         handled_component_p due to ada test a-numaux.adb.
9288
9289 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9290
9291         * final.c (final_scan_insn): Alter the condition of a
9292         conditional trap if we have nonstandard CC.
9293
9294 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9295
9296         * configure.ac: Remove excess quoting from asm line 0 test.
9297         * configure: Rebuilt.
9298
9299 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9300
9301         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
9302         * c-common.c (convert_and_check): Move warning logic to...
9303         (warnings_for_convert_and_check): ...here. Define.
9304         * c-common.h (warnings_for_convert_and_check): Declare.
9305
9306 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9307
9308         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
9309         (output_call): Likewise.
9310
9311 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9312
9313         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
9314
9315 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9316
9317         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
9318
9319 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
9320
9321         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
9322         opteron, athlon-64 and athlon-fx processor_alias_table entries.
9323
9324 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
9325
9326         PR tree-optimization/31183
9327         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
9328         Use double_int instead of unsigned int for representing access_strides.
9329         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
9330
9331 2007-03-16  Richard Guenther  <rguenther@suse.de>
9332
9333         PR tree-optimization/31146
9334         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
9335         to allow recursion of forward_propagate_addr_expr.
9336         (forward_propagate_addr_into_variable_array_index): Likewise.
9337         (forward_propagate_addr_expr): Likewise.
9338         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9339         (forward_propagate_addr_expr_1): Recurse on simple copies
9340         instead of propagating into them.  Do so for useless conversions
9341         as well.
9342         (forward_propagate_addr_expr): Clean up unused statements after
9343         recursion.
9344
9345 2007-03-16  Richard Guenther  <rguenther@suse.de>
9346
9347         * builtins.c (expand_builtin_cexpi): Use the right argument
9348         for the expansion via cexp.
9349
9350 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9351
9352         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
9353         * configure: Rebuilt.
9354
9355 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9356
9357         PR debug/29906
9358         * dwarf2out.c (force_type_die): Adjust comment.
9359         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
9360
9361 2007-03-15  DJ Delorie  <dj@redhat.com>
9362
9363         * config/frv/predicates.md (minmax_operator): Don't check operands
9364         here.
9365
9366 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9367
9368         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
9369         Update constant estimates of number of iterations.
9370         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
9371         argument renamed to "realistic".
9372         (compute_estimated_nb_iterations): Removed.
9373         (record_niter_bound): New function.
9374         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
9375         call record_nonwrapping_iv with upper = false.
9376         (infer_loop_bounds_from_signedness): Pass upper argument to
9377         record_nonwrapping_iv.
9378         (estimate_numbers_of_iterations_loop): Do not call
9379         compute_estimated_nb_iterations.  Record estimate based on profile
9380         information.  Initialize the constant estimates of number of
9381         iterations.
9382         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
9383         estimates.
9384         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
9385         number of iterations is too small.
9386         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
9387         (EST_NOT_AVAILABLE): Removed.
9388         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
9389         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
9390         fields.
9391
9392 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9393
9394         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
9395         Handle NE_EXPR guards.
9396
9397 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9398
9399         PR c++/24924
9400         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
9401         Set also -pedantic-errors by default for the  preprocessor unless
9402         -fpermissive is given.
9403
9404 2007-03-15  Richard Guenther  <rguenther@suse.de>
9405
9406         PR middle-end/29719
9407         PR middle-end/31161
9408         * builtins.c (expand_builtin_cexpi): As a fallback if we
9409         don't have builtins for sincos or cexp create a function
9410         declaration for cexp and expand to a call to that.
9411         (expand_builtin_int_roundingfn): Always fall
9412         back to floor/ceil and its variants even if they may be
9413         not available.
9414
9415 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
9416
9417         PR middle-end/31159
9418         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
9419         jump tables, move the call to delete_dead_jumptables from here...
9420         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
9421         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
9422         don't allow merging of blocks that try_redirect_by_replacing_jump
9423         also does not handle when not optimizing.
9424
9425 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9426             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
9427
9428         * config/i386/i386.md (x86_sahf_1): Correctly handle
9429         HAVE_AS_IX86_SAHF.
9430
9431 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9432
9433         PR target/31167
9434         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
9435         x86_64_general_operand as operand[2] predicate.  Remove "iF"
9436         from operand constraints and use "e" constraint instead.
9437         (*subti3_1, *subti3_1 splitter): Ditto.
9438         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
9439         operand[1] predicate.
9440
9441 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
9442
9443         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
9444         arrays, multiply the access strides by the size of the sub-array.
9445         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
9446
9447 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9448
9449         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
9450         the configured assembler supports the sahf mnemonic.
9451         * configure: Regenerate.
9452         * config.in: Regenerate.
9453
9454         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
9455         emit "sahf" or ".byte\t0x9e" as asm template.
9456
9457 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
9458
9459         PR 31018
9460         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
9461         option to replace hard coded TARGET_xxx in md file.
9462         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
9463         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9464         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
9465         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
9466         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
9467         (X86_TUNE_NOT_VECTORMODE): Ditto.
9468         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
9469         (TUNE_AVOID_VECTOR_DECODE): Ditto.
9470         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9471         (TUNE_SLOW_IMUL_IMM8): Ditto.
9472         (TUNE_MOVE_M1_VIA_OR): Ditto.
9473         (TUNE_NOT_UNPAIRABLE): Ditto.
9474         (TUNE_NOT_VECTORMODE): Ditto.
9475
9476         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
9477         options.
9478
9479         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
9480         tuning options instead of hard coded TARGET_xxx.
9481         (fix ssemode peephole2's): Ditto.
9482         (imul peephole2's): Ditto.
9483         (movsi_or): Ditto.
9484         (movdi_or_rex64): Ditto.
9485         (move peephole2): Ditto.
9486         (not peephole2's): Ditto.
9487
9488 2007-03-14  Dirk Mueller  <dmueller@suse.de>
9489
9490         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
9491         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
9492         * c-parser.c (c_parser_if_body): Always add an empty statement in case
9493         of empty body.
9494         * c-parser.c (c_parser_do_statement): Warn about empty body in
9495         do/while statement.
9496         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
9497         * doc/invoke.texi (-Wempty-body): Update documentation.
9498
9499 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9500
9501         PR c/21438
9502         * c-common.h (warn_for_div_by_zero): Declare.
9503         * c-common.c (warn_for_div_by_zero): Define.
9504         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
9505         warning.
9506
9507 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9508
9509         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
9510         to PREFIX and STANDARD_PREFIX.
9511
9512 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9513             Phil Edwards  <phil@codesourcery.com>
9514
9515         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
9516         (__gthread_once_t): Remove busy field for RTPs.
9517         (__GTHREAD_ONCE_INIT): Update accordingly.
9518
9519 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9520
9521         * doc/invoke.texi: Document VxWorks options.
9522
9523 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9524
9525         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
9526
9527 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
9528
9529         PR tree-optimization/30590
9530         * tree-nrv.c (tree_nrv): Check for the partial update of the
9531         return value.
9532
9533 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9534
9535         * flags.h (flag_random_seed): Remove declaration, in favor of...
9536         * toplev.h (get_random_seed, set_random_seed): ... these.
9537         * tree.c (get_file_function_name): Use the former.
9538         * opts.c (common_handle_option): Use the latter.
9539         * toplev.c
9540
9541 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
9542
9543         PR middle-end/31127
9544         * cse.c (cse_find_path): Do not bail out if a basic block that
9545         we already visited now becomes part of a path that starts at a
9546         different basic block.  Just disallow this, to make sure we
9547         visit each basic block at most once.
9548
9549 2007-03-13  Jan Hubicka  <jh@suse.cz>
9550
9551         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
9552         when profile esitmate is present, calls with very low frequency are
9553         cold.
9554
9555 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
9556
9557         PR tree-optimization/30730
9558         PR tree-optimization/26900
9559         * tree-ssa-loop-niter.c: Include gmp.h.
9560         (bounds): New type.
9561         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
9562         split_to_var_and_offset, determine_value_range,
9563         bound_difference_of_offsetted_base, refine_bounds_using_guard,
9564         bound_difference, bounds_add, bounds_negate,
9565         number_of_iterations_ne_max, dump_affine_iv): New functions.
9566         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
9567         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
9568         difference of initial and final value of control iv to validate
9569         results.
9570         (number_of_iterations_cond): Add loop parameter.  Determine bounds
9571         on the difference of the extremes of the control iv.  Add dumps.
9572         (expand_simple_operations): Handle phi nodes.
9573         (simplify_using_initial_conditions): Do not record used conditions.
9574         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
9575         Do not set additional_info.
9576         (implies_nonnegative_p, implies_ge_p): Removed.
9577         (derive_constant_upper_bound): Do not use parameter `additional'.
9578         (record_estimate): Parameter `additional' removed.  Parameter
9579         `i_bound' added.  Do not call derive_constant_upper_bound.
9580         (record_nonwrapping_iv): Use derive_constant_upper_bound to
9581         bound the number of iterations estimate.
9582         (estimate_numbers_of_iterations_loop): Pass the estimate from
9583         the number of iterations analysis to record_estimate.
9584         * tree.h (multiple_of_p): Declare.
9585         * tree-scalar-evolution.c (expression_expensive_p): Removed.
9586         (scev_const_prop): Do not check expression_expensive_p.
9587         * fold-const.c (multiple_of_p): Exported.
9588         * double-int.c (double_int_mask): Exported.
9589         * double-int.h (double_int_mask): Declare.
9590         * tree-flow.h (struct tree_niter_desc): Removed additional_info
9591         field.  Added max field.
9592
9593 2007-03-13  David Taylor  <taylor@candd.org>
9594
9595         PR driver/12448:
9596         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
9597         default -MQ.
9598
9599 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9600
9601         PR target/31123
9602         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
9603         two unamed patterns.
9604
9605 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
9606
9607         * config/i386/i386.opt (mcx16, msahf): New options.
9608         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
9609         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
9610
9611         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
9612         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
9613         Output -mcx16 and -msahf options when corresponding bit is set.
9614
9615         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
9616         and -msahf options.
9617
9618 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9619
9620         * configure.ac: Test for assembler tolerance to # 0 "".
9621         * configure, config.in: Rebuilt.
9622         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
9623
9624 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
9625
9626         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
9627
9628         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
9629         (handle_syscall): Handle direct system calls.
9630         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
9631
9632 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9633
9634         * doc/invoke.texi: Fix cpp.info cross-reference.
9635         * doc/passes.texi: Fix gcc.info cross-reference.
9636
9637 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
9638
9639         PR tree-optimization/30835
9640         * lambda-code.c (can_convert_to_perfect_nest): Check whether
9641         bb_for_stmt is not NULL before accessing it.
9642
9643 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
9644
9645         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
9646         some multilibs.
9647
9648 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9649
9650         PR 30635
9651         * doc/install.texi: Document --enable-stage1-languages
9652
9653 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
9654
9655         * tree-pass.h (pass_into_cfg_layout_mode,
9656         pass_outof_cfg_layout_mode): Declare.
9657         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
9658         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
9659         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
9660         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
9661
9662 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
9663
9664         * c-decl.c (warn_variable_length_array): New function.
9665         Refactored from grokdeclarator to handle warn_vla
9666         and handle unnamed array case.
9667         (grokdeclarator): Refactored VLA warning case.
9668         * c.opt (Wvla): New flag.
9669         * doc/invoke.texi (Wvla): New warning.
9670
9671 2007-03-12  Richard Henderson  <rth@redhat.com>
9672
9673         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
9674         (TARGET_SECTION_TYPE_FLAGS): New.
9675
9676 2007-03-12  Richard Henderson  <rth@redhat.com>
9677
9678         * config/darwin.c (machopic_reloc_rw_mask): New.
9679         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
9680         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
9681
9682 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
9683
9684         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
9685         * cppdefault.h (cpp_PREFIX): Document.
9686         (cpp_PREFIX_len): Likewise.
9687         (cpp_EXEC_PREFIX): New variable.
9688         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
9689         * c-incpath.c (add_standard_paths): Correct logic for relocating
9690         paths within prefix.
9691
9692 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
9693
9694         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
9695         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
9696         mode macro.
9697         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
9698         fix_truncdfdi_sse using SSEMODEF mode macro.
9699         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
9700         fix_truncdfsi_sse using SSEMODEF mode macro.
9701         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
9702         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
9703
9704 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
9705
9706         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
9707         elfos.h to tm_file.
9708
9709 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
9710
9711         * tree.h : Add multiple_of_p declaration.
9712         * fold-const.c (multiple_of_p): Make multiple_of_p public.
9713         * ipa-type-escape.c (results_of_malloc): Redundant.
9714         (visited_stmts): New. Visited stmt for walk_use_def_chains.
9715         (cast_type): Extended with new members.
9716         (check_cast): Returns cast_type.
9717         (cast): New structure for data of walk_use_def_chains.
9718         (is_malloc_result, is_cast_from_non_pointer_1,
9719         is_cast_from_non_pointer,
9720         is_array_access_through_pointer_and_index): New functions.
9721         (look_for_casts): Returns cast types.
9722         (check_call): Returns void.
9723         (okay_pointer_operation): Use support of pointer plus index,
9724         pointer plus constant and allow all multiplications.
9725
9726 2007-03-11  Richard Guenther  <rguenther@suse.de>
9727
9728         PR tree-optimization/31115
9729         * tree-vrp.c (extract_range_from_binary_expr): Make sure
9730         the shift count is positive and non-anti-range for RSHIFT_EXPR.
9731         A shift count of zero is not special as with *_DIV_EXPR.
9732         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
9733         direction.
9734
9735 2007-03-11  Ian Lance Taylor  <iant@google.com>
9736
9737         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
9738         the *_DIV_EXPR codes correctly with overflow infinities.
9739
9740 2007-03-11  Ira Rosen  <irar@il.ibm.com>
9741
9742         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
9743         indicate success/failure of the analysis. Add negation to subtrahend
9744         in case of subtraction. Fail if both operands contain constants.
9745         (create_data_ref): Fail if analyze_offset fails.
9746
9747 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
9748
9749         * config/i386/i386.md (frndintxf2): Rename to ...
9750         (rintxf2): ... this. Remove expander having same name.
9751         (rintsf2, rintdf2): Implement using SSEMODEF macro.
9752         (roundsf2, rounddf2): Ditto.
9753         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
9754         (lround<mode>di2, lround<mode>si2): Ditto.
9755
9756 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
9757
9758         * lower-subreg.c: Include except.h.
9759         (decompose_multiword_subregs): Verify that the only control flow
9760         insns we can split are loads to multi-words pseudos.
9761         Handle breaking such blocks after splitting, instead of calling
9762         find_many_sub_basic_blocks.
9763
9764         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
9765         on the new basic block.  Add a lengthy comment explaining why we
9766         thought this was necessary.
9767         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
9768
9769 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
9770
9771         PR c++/30924
9772         * tree.c (walk_type_fields): Recurse into the element type of
9773         ARRAY_TYPEs if there is a pointer set.
9774
9775 2007-03-10  Dirk Mueller  <dmueller@suse.de>
9776
9777         * c-common.c (warn_logical_operator): Fix condition.
9778
9779 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
9780
9781         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
9782         quotation mark.
9783         * config/darwin.c (machopic_select_section): Remove superfluous
9784         argument in call to categorize_decl_for_section.  Remove unused
9785         variable shlib.
9786
9787 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
9788
9789         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
9790         defined.
9791         * configure: Regenerate.
9792
9793 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
9794
9795         PR target/31101
9796         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
9797         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
9798         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
9799         Add LABEL_NUSES to emitted label.
9800         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
9801         branch probability value to emitted jump insn.
9802         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
9803         Do not check life information and do not re-arrange input operands
9804         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
9805
9806 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9807
9808         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
9809         the change of decode_asm_operands.
9810
9811 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9812
9813         * mode-switching.c (create_pre_exit): Skip blockage insn.
9814
9815 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
9816
9817         * tree-pass.h (TODO_update_smt_usage): Remove.
9818         Update all users.
9819         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
9820         argument SOME.
9821         Update all users.
9822
9823 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9824
9825         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
9826         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
9827         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
9828         SOM target.
9829
9830 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
9831
9832         * gcc.c: Document %{, in big comment at top.
9833         (input_suffix_matches): Remove special handling for .s and
9834         .S.
9835         (input_spec_matches): New.
9836         (handle_braces): Handle %{,.
9837         (validate_switches): ',' indicates a value which is not a switch.
9838         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
9839         to detect assembler input.
9840         * config/i386/sol2.h (CPP_SPEC): Likewise.
9841         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
9842         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
9843         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
9844         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
9845         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
9846         -m64 causes deployment target to default to 10.5.
9847         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9848
9849 2007-03-09  Richard Henderson  <rth@redhat.com>
9850
9851         PR target/26090
9852         * target.h (targetm.asm.out.reloc_rw_mask): New.
9853         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
9854         (TARGET_ASM_OUT): Use it.
9855         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
9856         * varasm.c (categorize_decl_for_section): Remove shlib argument;
9857         use the new reloc_rw_mask target hook instead.
9858         (default_section_type_flags_1): Merge into...
9859         (default_section_type_flags): ... here.
9860         (decl_readonly_section_1): Merge into...
9861         (decl_readonly_section): ... here.
9862         (default_elf_select_section_1): Merge into...
9863         (default_elf_select_section): ... here.
9864         (default_unique_section_1): Merge into...
9865         (default_unique_section): ... here.
9866         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
9867         (default_select_rtx_section): Use it.
9868         (default_elf_select_rtx_section): Likewise.
9869         * output.h: Update to match.
9870         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
9871         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
9872         (TARGET_ASM_RELOC_RW_MASK): New.
9873         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
9874         to categorize_decl_for_section.
9875         (x86_64_elf_unique_section): Likewise.
9876         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
9877         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
9878         (TARGET_ASM_RELOC_RW_MASK): New.
9879         * config/ia64/ia64.c (ia64_rwreloc_select_section,
9880         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
9881         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
9882         (TARGET_RWRELOC): Remove.
9883         (ia64_section_type_flags): Adjust call to default_section_type_flags.
9884         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9885         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
9886         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
9887         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
9888         (rs6000_xcoff_select_section): Use decl_readonly_section.
9889         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
9890         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9891         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
9892         (TARGET_SECTION_TYPE_FLAGS): Remove.
9893         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
9894
9895 2007-03-09  Roger Sayle  <roger@eyesopen.com>
9896
9897         * fold-const.c (fold_comparison): Remove compile-time evaluation of
9898         complex constant equality/inequality comparisons for here.
9899         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
9900         known at compile-time or can be simplified to a scalar comparison.
9901         (fold_relational_const): Move compile-time evaluation of complex
9902         constant equality/inequality comparisons to here.
9903
9904 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9905
9906         PR rtl-optimization/30643
9907         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
9908         dest_addr_elt.
9909         (fold_rtx): Recurse, like before 2006-11-03.
9910
9911 2007-03-09  DJ Delorie  <dj@redhat.com>
9912
9913         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
9914         m32c-pragma.o.
9915
9916 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
9917
9918         PR tree-optimization/30375
9919         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
9920         LHS of statements is not the same.
9921         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
9922
9923 2007-03-09  Chao-ying Fu  <fu@mips.com>
9924
9925         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
9926         REV 2.
9927         * doc/invoke.texi (-mdspr2): Document new option.
9928         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
9929         New unspec for DSP REV 2.
9930         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
9931         these instructions are extended in DSP REV 2.
9932         (mips-dspr2.md): Include.
9933         * config/mips/mips.opt (mdspr2): New option.
9934         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
9935         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
9936         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
9937         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
9938         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
9939         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
9940         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
9941         and 2 builtins.
9942         (bdesc_map): Add one field of unsupported_target_flags.
9943         (bdesc_arrays):  Update entries to have extra fields.  Add
9944         dsp_32only_bdesc.
9945         (mips_init_builtins): Initialize new function types.
9946         Check unsupported_target_fileds to filter out builtins.
9947         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
9948         TARGET_DSPR2.
9949         (ASM_SPEC): Pass mdspr2 to the assembler.
9950         * config/mips/mips-dspr2.md: New file.
9951
9952 2007-03-09  Sa Liu  <saliu@de.ibm.com>
9953
9954         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
9955
9956 2007-03-09  Ian Lance Taylor  <iant@google.com>
9957
9958         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
9959         argument) like -Wstrict-overflow=2.
9960         * doc/invoke.texi (Warning Options): Update documentation.
9961
9962 2007-03-09  Dirk Mueller  <dmueller@suse.de>
9963
9964         PR c++/17946
9965         * doc/invoke.texi (-Wlogical-op): Document.
9966         * common.opt (-Wlogical-op): New.
9967         * c-common.h (warn_logical_operator): Declare.
9968         * c-common.c (warn_logical_operator): Define.
9969         * c-typeck.c (parser_build_binary_op): Call
9970         warn_logical_operator.
9971
9972 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9973
9974         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
9975         * final.c (final_scan_insn): Test for non-"" file name.
9976
9977 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
9978
9979         * doc/loop.texi: Document the Omega linear constraints solver.
9980         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
9981         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
9982         omega-hash-table-size, omega-max-keys, and
9983         omega-eliminate-redundant-constraints.
9984         * tree-pass.h (pass_check_data_deps): Declared.
9985         * omega.c: New.
9986         * omega.h: New.
9987         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
9988         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
9989         pass_check_data_deps): New.
9990         * tree-data-ref.c (init_data_ref): Remove declaration.
9991         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
9992         (analyze_array): Renamed init_array_ref, move up initializations.
9993         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
9994         Removed arguments that are set to NULL.
9995         (analyze_indirect_ref): Correct indentation, correct call to
9996         init_pointer_ref.
9997         (object_analysis): Call init_array_ref instead of analyze_array.
9998         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
9999         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
10000         of DR_ACCESS_FNS_ADDR.
10001         (init_omega_eq_with_af, omega_extract_distance_vectors,
10002         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
10003         ddr_consistent_p): New.
10004         (compute_affine_dependence): Check consistency of ddrs when
10005         flag_check_data_deps is passed.
10006         (analyze_all_data_dependences): Uncomment.
10007         (tree_check_data_deps): New.
10008         * tree-data-ref.h: Include omega.h.
10009         (DR_ACCESS_FNS_ADDR): Removed.
10010         (data_dependence_relation): Add inner_loop.
10011         (DDR_INNER_LOOP): New.
10012         * common.opt (fcheck-data-deps): New.
10013         * tree-flow.h (tree_check_data_deps): Declare.
10014         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
10015         (OBJS-common): Depend on omega.o.
10016         (omega.o): Define.
10017         * passes.c (pass_check_data_deps): Scheduled.
10018         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
10019         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
10020         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
10021         PARAM_VECT_MAX_VERSION_CHECKS,
10022         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
10023
10024 2007-03-09  Richard Guenther  <rguenther@suse.de>
10025
10026         PR tree-optimization/30904
10027         PR middle-end/31058
10028         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
10029         the same way as *_DIV_EXPR.
10030
10031 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10032
10033         * recog.c (decode_asm_operands): No mixed declarations and code.
10034
10035 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10036
10037         * rtl.def (ASM_INPUT): Add location.
10038         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
10039         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
10040         (decode_asm_operands): Add loc operand.
10041         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
10042         * stmt.c (expand_asm): Rename to...
10043         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
10044         gen_rtx_ASM_INPUT_loc.
10045         (expand_asm_expr): Adjust.
10046         * recog.c (decode_asm_operands): Add loc operand.
10047         (check_asm_operands, extract_insn): Adjust.
10048         * reload1.c (maybe_fix_stack_asms): Likewise.
10049         * final.c (asm_insn_count): Likewise.
10050         (final_scan_insn): Output # line before and after asm.
10051
10052 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
10053
10054         * tree-ssa-structalias.c (variable_info): Remove
10055         finished_solution.
10056         (new_var_info): Ditto.
10057         (shared_bitmap_info_t): New structure.
10058         (shared_bitmap_table): New variable.
10059         (shared_bitmap_hash): New function.
10060         (shared_bitmap_eq): Ditto
10061         (shared_bitmap_lookup): Ditto.
10062         (shared_bitmap_add): Ditto.
10063         (merge_smts_into): Change to take bitmap directly.
10064         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
10065         (init_alias_vars): Init shared bitmap hashtable.
10066         (delete_points_to_sets): Delete shared bitmap hashtable.
10067         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
10068         is_aliased removal as a change that was still necessary was
10069         deleted.
10070
10071 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
10072
10073         * config/i386/i386.h (override_options): Conditionally disable
10074         x86_sahf for 64bit targets only.
10075
10076 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10077
10078         PR C/31072
10079         * c-decl.c (merge_decls): Don't call make_var_volatile.
10080         * varasm.c (make_var_volatile): Remove.
10081         * output.h (make_var_volatile): Remove.
10082
10083 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
10084
10085         PR tree-optimization/31085
10086         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
10087
10088 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10089
10090         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
10091         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
10092         ATTR_CONST_NOTHROW_LIST.
10093
10094         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
10095         FIX_TRUNC_EXPR.
10096
10097 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
10098
10099         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
10100
10101 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
10102
10103         PR 31013
10104         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
10105         is declared.
10106         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
10107         passed, use shared libgcc.
10108
10109 2007-03-08  Roger Sayle  <roger@eyesopen.com>
10110
10111         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
10112         instead of calling build2 with a GIMPLE_MODIFY_STMT.
10113         (honor_protect_cleanup_actions, lower_try_finally_switch):
10114         Likewise.
10115         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
10116         ifc_temp_var): Likewise.
10117         * tree-inline.c (setup_one_parameter): Likewise.
10118         * tree-mudflap.c (mf_decl_cache_locals,
10119         mf_build_check_statement_for): Likewise.
10120         * tree-nested.c (init_tmp_var, save_tmp_var,
10121         finalize_nesting_tree_1): Likewise.
10122         * tree-outof-ssa.c (insert_copy_on_edge,
10123         insert_backedge_copies): Likewise.
10124         * tree-profile.c (tree_gen_edge_profiler,
10125         tree_gen_ic_profiler): Likewise.
10126         * tree-scalar-evolution.c (scev_const_prop): Likewise.
10127         * tree-sra.c (sra_build_assignment): Likewise.
10128         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
10129         * tree-ssa-math-opts.c (insert_reciprocals,
10130         execute_cse_sincos_1): Likewise.
10131         * tree-tailcall.c (adjust_accumulator_values,
10132         adjust_return_value): Likewise.
10133         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
10134         * tree-vect-transform.c (vect_create_data_ref_ptr,
10135         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
10136         vect_create_epilog_for_reduction, vectorizable_reduction,
10137         vectorizable_call, vectorizable_conversion,
10138         vectorizable_assignment, vectorizable_operation,
10139         vectorizable_type_demotion, vect_gen_widened_results_half,
10140         vect_permute_store_chain, vectorizable_store,
10141         vect_setup_realignment, vect_permute_load_chain,
10142         vectorizable_load, vectorizable_condition,
10143         vect_create_cond_for_align_checks): Likewise.
10144         * tree-vrp.c (build_assert_expr_for): Likewise.
10145
10146 2007-03-08  Ian Lance Taylor  <iant@google.com>
10147
10148         * tree-vrp.c: Include "intl.h".
10149         (usable_range_p): New static function.
10150         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
10151         overflowed values, juts set *strict_overflow_p.
10152         (compare_values): Only return -2 if one of the operands is not a
10153         constant.
10154         (compare_ranges): Call usable_range_p.
10155         (compare_range_with_value): Likewise.
10156         (vrp_evaluate_conditional_warnv): Rename from
10157         vrp_evaluate_conditional.  Make static.  Change all callers.
10158         (vrp_evaluate_conditional): New function.
10159         (simplify_div_or_mod_using_ranges): Issue warning about reliance
10160         on signed overflow.
10161         (simplify_abs_using_ranges): Likewise.
10162         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
10163         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
10164         within_stmt parameter.
10165         * tree-ssa-propagate.c (fold_predicate_in): Update call to
10166         vrp_evaluate_conditional.
10167         * tree-ssa-threadedge.c
10168         (record_temporary_equivalences_from_stmts_at_dest): Change
10169         simplify parameter to take a second tree parameter.
10170         (simplify_control_stmt_condition): Likewise.
10171         (thread_across_edge): Likewise.
10172         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10173         (thread_across_edge): Likewise.
10174         * Makefile.in (tree-vrp.o): Depend upon intl.h.
10175
10176 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
10177
10178         * config/i386/i386.h (TARGET_SAHF): New define.
10179         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
10180         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
10181         (x86_sahf): New global variable.
10182         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
10183         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
10184         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
10185         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
10186         for 64-bit.
10187         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
10188         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
10189         when expanding fcomi/sahf based tests.
10190         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
10191         expanding sahf based alternative. Emit sahf based sequence when
10192         optimizing for code size.
10193         * config/i386/i386.md (x86_sahf_1): Do not disable for
10194         TARGET_64BIT, enable for TARGET_SAHF.
10195
10196 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
10197
10198         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
10199         spurious whitespace from error message.
10200
10201 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
10202
10203         PR c++/30852
10204         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
10205
10206 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
10207
10208         * c-decl.c (grokdeclarator): Disable warnings for anonymous
10209         bitfields.
10210         * tree-sra.c (instantiate_element): Propagate disabled warnings
10211         from the element itself to the created variable.
10212
10213 2007-03-07  Richard Henderson  <rth@redhat.com>
10214
10215         PR target/30848
10216         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
10217         silently fix up the stack in the case of a missing register.
10218
10219 2007-03-07  Paul Brook  <paul@codesourcery.com>
10220
10221         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
10222
10223 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
10224
10225         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
10226         New.
10227         (phase1_vrs): Use them.
10228         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
10229         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
10230         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
10231         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
10232         __gnu_Unwind_Restore_WMMXC if required.
10233         (_Unwind_VRS_Pop): Implement iWMMXt support.
10234         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
10235         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
10236         gnu_Unwind_Save_WMMXC): Define.
10237
10238 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
10239
10240         * config/vxworks.h (vxworks_override_options): Declare.
10241         (VXWORKS_OVERRIDE_OPTIONS): Use it.
10242         * config/vxworks.c: Include target.h and toplev.h.
10243         (vxworks_override_options): New function.
10244         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
10245
10246 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
10247
10248         * config/s390/s390.c (override_options): Don't emit an error when
10249         -mstack-size is used without providing -mstack-guard.
10250         (s390_emit_prologue): Choose stack_guard value automatically if not
10251         provided via command line.
10252         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
10253
10254 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
10255
10256         * config/i386/i386.c (output_set_got): Add a GOT initialization
10257         sequence for VxWorks PIC.
10258         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
10259         around labels as well as symbols.  Use gotoff_operand instead
10260         of local_symbolic_operand.
10261         (legitimize_pic_address): Use gotoff_operand instead of
10262         local_symbolic_operand.  Use @GOT accesses for labels as
10263         well as symbols.
10264         (ix86_output_addr_diff_elt): Use PC-relative rather than
10265         GP-relative offsets for VxWorks PIC.
10266         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
10267         no_new_pseudos.  Check whether the returned register is op0.
10268         * config/i386/i386.md (tablejump): Use PC-relative rather than
10269         GP-relative offsets for VxWorks PIC.
10270         * config/i386/predicates.md (gotoff_operand): New predicate.
10271
10272 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10273
10274         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
10275         before defining.
10276         * config/vxworks-dummy.h: New file.
10277         * config/i386/i386.h: Include it.
10278
10279 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
10280
10281         * dwarf2out.c (is_inlined_entry_point): New
10282         (add_high_low_attributes): Emit DW_AT_entry_pc along with
10283         DW_AT_ranges if the first subblock is the entry point.
10284
10285 2007-03-06  David Daney  <ddaney@avtrex.com>
10286
10287         * doc/install.texi (mips-*-*): Change recommended binutils
10288         version.
10289
10290 2007-03-06  Anatoly Sokolov <aesok@post.ru>
10291
10292         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
10293         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
10294         devices.
10295         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10296         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10297
10298 2007-03-06  Jan Hubicka  <jh@suse.cz>
10299
10300         * errors.h (warning, error, fatal, internal_error): Mark as cold.
10301         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
10302         are hot.
10303         (probably_cold_bb_p): Cold functions are cold.
10304         (probably_never_executed_bb_p): Cold functions are cold.
10305         (tree_bb_level_predictions): Predict calls to cold functions as not
10306         taken.
10307         (compute_function_frequency): Check hot/cold attributes.
10308         * function.h (function_frequency): Update comments.
10309         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
10310         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
10311         (c_common_att): Add cold and hot.
10312
10313         * doc/extend.texi (hot,cold attributes): Document.
10314
10315 2007-03-06  Andrew Haley  <aph@redhat.com>
10316
10317         * function.c (expand_function_end): Move blockage to just after we
10318         emit the label for the naked return from the function.
10319
10320 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10321
10322         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
10323         before redefining.
10324
10325 2007-03-06  Jan Hubicka  <jh@suse.cz>
10326
10327         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
10328         loaded for constant large models.  Non-large 64bit PIC can do.
10329         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
10330         * cmodel.h: Add LARGE PIC.
10331         * i386.md (UNSPEC_PLTOFF): New.
10332         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
10333         needed.
10334         (*call_1_rex64): Disable for large models.
10335         (*call_1_rex64_large): New.
10336         (*call_value_1_rex64): Disable for large models.
10337         (*call_value_1_rex64_large): New.
10338         (set_rip_rex4): New.
10339         (set_got_offset_rex64): New.
10340         * predicates.md (constant_call_address_operand): For large model
10341         constant calls are not possible.
10342         * i386-protos.h (construct_plt_address): Declare.
10343         * i386.c (override_options): Accept large models.
10344         (ix86_expand_prologue): Expand large PIC GOT pointer load.
10345         (legitimate_constant_p): Add new UNSPECs.
10346         (legitimate_pic_operand_p): Likewise.
10347         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
10348         (legitimize_pic_address): Do easy RIP relative way for TLS only for
10349         non-large model.
10350         (output_pic_addr_const): Add PLTOFF.
10351         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
10352         (ix86_expand_move): Legitimize pic address when in PIC mode.
10353         (construct_plt_address): New function.
10354         (ix86_expand_call): Offload the address to register and use GOT pointer
10355         for large model.
10356         * invoke.texi (mcmodel=large): Update documentation.
10357
10358 2007-03-06  Richard Henderson  <rth@redhat.com>
10359
10360         * config/i386/i386.c (x86_use_leave, x86_push_memory,
10361         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
10362         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
10363         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
10364         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
10365         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
10366         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
10367         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
10368         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
10369         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
10370         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10371         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
10372         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10373         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10374         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
10375         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
10376         x86_schedule, x86_use_bt, x86_pad_returns,
10377         x86_use_xchgb): Merge into ...
10378         (ix86_tune_features): ... here.  New array.
10379         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10380         x86_bswap): Merge into ...
10381         (ix86_arch_features): ... here.  New array.
10382         (x86_3dnow_a): Remove.
10383         (x86_accumulate_outgoing_args): Make static.
10384         (x86_arch_always_fancy_math_387): Make static.
10385         (ix86_tune_mask, ix86_arch_mask): Move ...
10386         (override_options): ... to local variables here.  Apply the
10387         appropriate mask to each element of ix86_arch_features and
10388         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
10389         as were done in the old macros.
10390         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
10391         * config/i386/i386.h (x86_use_leave, x86_push_memory,
10392         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
10393         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
10394         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
10395         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
10396         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
10397         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
10398         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
10399         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
10400         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
10401         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10402         x86_accumulate_outgoing_args, x86_prologue_using_move,
10403         x86_epilogue_using_move, x86_decompose_lea,
10404         x86_arch_always_fancy_math_387, x86_shift1,
10405         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10406         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10407         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
10408         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10409         x86_use_incdec, x86_pad_returns, x86_bswap,
10410         x86_partial_flag_reg_stall): Remove.
10411         (enum ix86_tune_indices): New.
10412         (ix86_tune_features): New.
10413         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
10414         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
10415         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
10416         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
10417         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
10418         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
10419         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
10420         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
10421         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
10422         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
10423         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
10424         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
10425         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
10426         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
10427         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
10428         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
10429         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
10430         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
10431         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
10432         TARGET_EXT_80387_CONSTANTS): Use it.
10433         (enum ix86_arch_indices): New.
10434         (ix86_arch_features): New.
10435         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
10436         TARGET_BSWAP): Use it.
10437         (ix86_tune_mask, ix86_arch_mask): Remove.
10438
10439 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
10440
10441         PR bootstrap/31020
10442         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
10443         Define using $${sysroot_headers_suffix}.
10444         * configure: Regenerate.
10445         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
10446         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
10447         defined.
10448         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
10449         * gcc.c (print_sysroot_headers_suffix): New.
10450         (option_map): Include --print-sysroot-headers-suffix.
10451         (display_help): Mention -print-sysroot-headers-suffix.
10452         (process_command): Handle -print-sysroot-headers-suffix.
10453         (do_spec_1): Append multilib directory to include-fixed path if
10454         sysroot suffixes in use.
10455         (main): Handle -print-sysroot-headers-suffix.
10456         * Makefile.in (start.encap): Don't depend on xlimits.h
10457         (xlimits.h): Remove.
10458         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
10459         limits.h for each multilib in fixinc_list.
10460         (fixinc_list, s-fixinc_list): New.
10461         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
10462         generate them for each multilib in fixinc_list.
10463         (stmp-fixproto): Use include-fixed.  Run fixproto for each
10464         multilib in fixinc_list.
10465         (mostlyclean): Don't remove xlimits.h.
10466         (clean): Remove include-fixed.
10467         (real-install-headers-tar, real-install-headers-cpio,
10468         real-install-headers-cp): Don't copy include, only include-fixed.
10469         (install-mkheaders): Depend on fixinc_list.  Don't depend on
10470         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
10471         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
10472         SYSTEM_HEADER_DIR setting in mkheaders.conf.
10473
10474 2007-03-06  Jan Hubicka  <jh@suse.cz>
10475
10476         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
10477         NANs easilly.
10478
10479 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10480
10481         * configure.ac: Allow tm_file to contain build-directory files.
10482         * configure: Regenerate.
10483         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
10484         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
10485         * config/m68k/print-sysroot-suffix.sh: New file.
10486
10487 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10488
10489         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
10490         of pic_offset_table_rtx if reload_completed.
10491         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
10492         PIC_OFFSET_TABLE_REGNUM.
10493         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
10494         return true.
10495         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
10496         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
10497
10498 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10499
10500         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10501         functions that call eh_return.
10502
10503 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10504
10505         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10506         functions that need a constant pool.
10507
10508 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10509
10510         PR target/28181
10511         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
10512         (m68k_preferred_reload_class): Likewise.
10513         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
10514         (SECONDARY_RELOAD_CLASS): Define.
10515         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
10516         (LIMIT_RELOAD_CLASS): Delete.
10517         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
10518         registers from storing bytes.
10519         (m68k_secondary_reload_class): New function.
10520         (m68k_preferred_reload_class): Likewise.
10521
10522 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10523
10524         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
10525         leaf functions.
10526         (m68k_expand_prologue): Likewise.
10527
10528 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10529
10530         * config/m68k/m68k-protos.h (output_sibcall): Declare.
10531         (mips_expand_epilogue): Add a bool parameter.
10532         (m68k_legitimize_sibcall_address): Declare.
10533         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
10534         (m68k_expand_epilogue): Add a parameter to select between sibling
10535         and normal epilogues.  Only generate a return for the latter.
10536         (m68k_ok_for_sibcall_p): New function.
10537         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
10538         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
10539         (sibcall_value, *sibcall_value): Likewise.
10540         (*call, *call_value): Require !SIBLING_CALL_P.
10541         (epilogue): Update call to m68k_expand_epilogue.
10542         (sibcall_epilogue): New pattern.
10543         * config/m68k/predicates.md (const_call_operand): Say that this
10544         predicate applies to sibling calls too.
10545         (sibcall_operand): New predicate.
10546
10547 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10548
10549         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
10550         alternatives as movsi_cf.
10551         (movsf_cf_hard): Add commentary.
10552
10553 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
10554             Richard Sandiford  <richard@codesourcery.com>
10555
10556         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
10557         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
10558         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
10559         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
10560         as being live on exit from an interrupt function.
10561         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
10562         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
10563         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
10564         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
10565         (m68k_interrupt_function_p): Globalize.
10566         (m68k_compute_frame_layout): Remove reverse mask code.
10567         (m68k_emit_movem, m68k_set_frame_related): New functions.
10568         (m68k_output_function_prologue): Delete in favor of...
10569         (m68k_expand_prologue): ...this new function.
10570         (m68k_output_function_epilogue): Delete in favor of...
10571         (m68k_expand_epilogue): ...this new function.
10572         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
10573         functions.
10574         (print_operand): Handle %?.
10575         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
10576         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
10577         (prologue, epilogue): New patterns.
10578         (return): Turn into a define_expand.
10579         (*return): New pattern, derived from old "return" pattern.  Use rte
10580         rather than rts for interrupt functions.  Only use rtd if the pop
10581         count is nonzero.
10582         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
10583         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
10584         (link, *link, unlink, *unlink, load_got): Likewise.
10585
10586 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10587
10588         PR target/23482
10589         PR target/17114
10590         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
10591         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
10592         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
10593         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
10594         and m68k_matches_u_p.
10595         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
10596         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
10597         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
10598         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
10599         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
10600         (REG_STRICT_P): New macro.
10601         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
10602         PCREL_GENERAL_OPERAND_OK.
10603         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
10604         m68k_legitimate_base_reg_p.
10605         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
10606         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
10607         (PIC_CASE_VECTOR_ADDRESS): Update comment.
10608         * config/m68k/m68k.c (m68k_address): New structure.
10609         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
10610         (m68k_decompose_index, m68k_legitimate_constant_address_p)
10611         (m68k_jump_table_ref_p, m68k_decompose_address)
10612         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
10613         (m68k_matches_u_p): New functions.
10614         (print_operand_address): Rewrite to use m68k_decompose_index.
10615
10616 2007-03-05  David Taylor  <dtaylor@emc.com>
10617
10618         * gcc.c: Correct copyright date in --version output.
10619
10620 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10621
10622         * pa.md: In unamed move patterns, disparge copies between general
10623         and floating point registers using '?' modifier.  Don't include 'f'
10624         constraint for register preferences in DImode, SImode, HImode and
10625         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
10626         Remove constraints for copies between general and floating registers
10627         in soft-float DFmode pattern.
10628         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
10629         floating register.
10630         (movsf): Likewise.
10631
10632 2007-03-05  Mike Stump  <mrs@apple.com>
10633
10634         * c-common.c (targetcm): Add.
10635         * c-opts.c (c_common_handle_option): Handle language specific
10636         target options.
10637         * opts.c (handle_option): Verify language for target options, if
10638         any are given.
10639         * opth-gen.awk: Add CL_LANG_ALL.
10640         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
10641         (TARGETCM_INITIALIZER): Add.
10642         * target.h (struct gcc_targetcm): Add.
10643         (targetcm): Add.
10644         * targhooks.c (default_handle_c_option): Add.
10645         * targhooks.h (default_handle_c_option): Add.
10646         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
10647
10648         * config/darwin.opt (iframework): Add.
10649         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
10650         * config/darwin-c.c (handle_c_option): Add.
10651         (TARGET_HANDLE_C_OPTION): Add.
10652         (targetcm): Add.
10653         * doc/invoke.texi (Darwin Options): Add -iframework.
10654
10655 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10656
10657         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
10658         conversion.
10659
10660 2007-03-05  Ian Lance Taylor  <iant@google.com>
10661
10662         * c.opt (fgnu89-inline): New option.
10663         * c-opts.c (c_common_post_options): Set default value for
10664         flag_gnu89_inline.
10665         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
10666         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
10667         inline functions.
10668         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
10669         (grokdeclarator, start_function): Likewise.
10670         * c-cppbuiltin.c (c_cpp_builtins): Define either
10671         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
10672         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
10673         (C Dialect Options): Document -fgnu89-inline.
10674         * doc/extend.texi (Function Attributes): Explain what the
10675         gnu_inline attribute does.
10676         * doc/cpp.texi (Common Predefined Macros): Document
10677         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
10678
10679 2007-03-05  Ian Lance Taylor  <iant@google.com>
10680
10681         PR tree-optimization/31034
10682         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
10683         half-range if the other side is an overflow infinity.
10684
10685 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
10686
10687         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
10688         (bfin*-linux-uclibc*): New configuration.
10689         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
10690         defining.
10691         * config/bfin/linux.h: New file.
10692         * config/bfin/libgcc-bfin.ver: New file.
10693         * config/bfin/t-bfin-uclinux: New file.
10694         * config/bfin/t-bfin-linux: New file.
10695         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
10696         (TARGET_OS_CPP_BUILTINS): New macro.
10697
10698 2007-03-05  Richard Guenther  <rguenther@suse.de>
10699
10700         * fold-const.c (fold_binary): Remove duplicate folding
10701         of comparison of non-null ADDR_EXPR against null.
10702
10703 2007-03-05  Richard Guenther  <rguenther@suse.de>
10704             Dorit Nuzman  <dorit@il.ibm.com>
10705
10706         PR tree-optimization/26420
10707         * tree-vectorizer.c (vectorize_loops): Bail out early if there
10708         are no loops in the function.  Only print the number of
10709         vectorized loops if it is greater than zero or we are supposed
10710         to print information about unvectorized loops.
10711
10712 2007-03-05  Revital Eres  <eres@il.ibm.com>
10713
10714         * gcc.dg/var-expand1.c: New test.
10715         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
10716         when an accumulator is expanded.
10717
10718 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10719
10720         PR other/30465
10721         * c-common.c (convert_and_check): Don't give warnings for
10722         conversion if 'expr' already overflowed.
10723
10724 2007-03-04  Roger Sayle  <roger@eyesopen.com>
10725
10726         PR middle-end/30744
10727         * fold-const.c (fold_comparison): Enforce type consistency when
10728         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
10729
10730 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
10731
10732         * tree-ssa-address.c (create_mem_ref): Do not put an expression
10733         containing a cast to the base of TARGET_MEM_REF.
10734
10735 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
10736
10737         * tree.c (tree_contains_struct_check_failed): Remove spurious
10738         whitespace from error message.
10739
10740 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
10741
10742         PR target/30406
10743         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
10744         instead of precision.
10745
10746 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
10747             Nathan Sidwell  <nathan@codesourcery.com>
10748
10749         * emit-rtl.c (find_auto_inc): New.
10750         (try_split): recreate REG_INC notes,
10751         Use regular for loops rather than whiles.
10752
10753 2007-03-03  Andreas Schwab  <schwab@suse.de>
10754
10755         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
10756         * configure: Regenerate.
10757
10758 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10759
10760         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
10761         flag_rounding_math, not flag_unsafe_math_optimizations.
10762
10763         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
10764         fold_build2.
10765         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
10766         alpha_fold_vector_minmax): Likewise.
10767         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10768         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
10769
10770 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10771
10772         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
10773         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
10774         if the lhs has side-effects.
10775         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
10776
10777 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10778
10779         * config/i386/i386.h (TUNEMASK): Remove define.
10780         (ARCHMASK): Remove define.
10781         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
10782          Use ix86_arch_mask variable instead of ARCHMASK.
10783         * config/i386/i386.c (override_options): Ditto.
10784         (standard_80387_constant_p): Ditto.
10785
10786 2007-03-02  Ian Lance Taylor  <iant@google.com>
10787
10788         Used signed infinities in VRP.
10789         * tree-vrp.c (uses_overflow_infinity): New static function.
10790         (supports_overflow_infinity): New static function.
10791         (make_overflow_infinity): New static function.
10792         (negative_overflow_infinity): New static function.
10793         (positive_overflow_infinity): New static function.
10794         (is_negative_overflow_infinity): New static function.
10795         (is_positive_overflow_infinity): New static function.
10796         (is_overflow_infinity): New static function.
10797         (overflow_infinity_range_p): New static function.
10798         (compare_values_warnv): New function split out of compare_values.
10799         (compare_value): Call it.
10800         (set_value_range_to_nonnegative): Add overflow_infinity
10801         parameter.  Change caller.
10802         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
10803         Change callers.
10804         (vrp_expr_computes_nonzero): Likewise.
10805         (compare_ranges, compare_range_with_value): Likewise.
10806         (compare_name_with_value, compare_names): Likewise.
10807         (vrp_evaluate_conditional): Likewise.
10808         (set_value_range): Handle infinity
10809         (vrp_operand_equal_p, operand_less_p): Likewise.
10810         (extract_range_from_assert): Likewise.
10811         (vrp_int_const_binop): Likewise.
10812         (extract_range_from_binary_expr): Likewise.
10813         (extract_range_from_unary_expr): Likewise.
10814         (extract_range_from_comparison): Likewise.
10815         (extract_range_from_expr): Likewise.
10816         (dump_value_range): Likewise.
10817         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
10818         (test_for_singularity): Likewise.
10819         (vrp_int_const_binop): Remove inline qualifier.
10820         (adjust_range_with_scev): Add comment.
10821         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10822
10823 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
10824
10825         * tree-ssa-structalias.c (could_have_pointers): Tidy.
10826         (get_constraint_for): Likewise.
10827         (do_structure_copy): Likewise.
10828         (find_func_aliases): Fix references to MODIFY_EXPR.
10829         (intra_create_variable_infos): Tidy.
10830         * tree-ssa-operands.c (add_virtual_operand): Add argument
10831         IS_CALL_SITE.
10832         When adding members of alias sets, if IS_CALL_SITE is true and
10833         the symbol is not call-clobbered, skip it.
10834         Adjust all callers.
10835
10836 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10837
10838         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
10839         entry by means of emit_insn_at_entry.
10840
10841 2007-03-02  Richard Henderson  <rth@redhat.com>
10842
10843         * expr.h (promoted_input_arg): Remove decl.
10844         * function.c (promoted_input_arg): Merge into ...
10845         * combine.c (setup_incoming_promotions): ... only caller.
10846         Rearrange to avoid double loop.
10847
10848 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10849             Peter Bergner  <bergner@vnet.ibm.com>
10850             Janis Johnson  <janis187@us.ibm.com>
10851
10852         * config/rs6000/dfp.md: New file.
10853         * config/rs6000/rs6000.md: Include dfp.md.
10854         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
10855         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
10856         and TDmode decimal float modes in FP registers.
10857         (num_insns_constant): Likewise.
10858         (rs6000_legitimate_offset_address_p): Likewise.
10859         (rs6000_legitimize_address): Likewise.
10860         (rs6000_legitimize_reload_address): Likewise.
10861         (rs6000_legitimate_address): Likewise.
10862         (rs6000_emit_move): Likewise.
10863         (function_arg_boundary): Likewise.
10864         (function_arg_advance): Likewise.
10865         (rs6000_darwin64_record_arg_recurse): Likewise.
10866         (function_arg): Likewise.
10867         (rs6000_gimplify_va_arg): Likewise.
10868         (rs6000_split_multireg_move): Likewise.
10869         (rs6000_output_function_epilogue): Likewise.
10870         (rs6000_output_function_epilogue): Likewise.
10871         (rs6000_register_move_cost): Likewise.
10872         (rs6000_function_value): Likewise.
10873         (rs6000_libcall_value): Likewise.
10874
10875 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10876
10877         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
10878
10879 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10880
10881         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
10882         Use $MULTIDIR to choose between the kernel and RTP headers,
10883         and use $WIND_BASE and $WIND_USR to locate them.
10884
10885 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10886
10887         * config/i386/i386.c (override_options): Put initialization of
10888         ix86_tune_mask and ix86_arch_mask to the correct place.
10889
10890 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10891             Michael Meissner  <michael.meissner@amd.com>
10892
10893         PR target/31019
10894         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
10895         (ARCHMASK): Define.
10896         (TARGET_CMOVE): Use ARCHMASK.
10897         (TARGET_CMPXCHG): Ditto.
10898         (TARGET_CMPXCHG8B): Ditto.
10899         (TARGET_XADD): Ditto.
10900         (TARGET_BSWAP): Ditto.
10901         * config/i386/i386.c (ix86_tune_mask): New global variable.
10902         (ix86_arch_mask): Ditto.
10903         (override_options): Initialize ix86_tune_mask and
10904         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
10905         target_flags.
10906
10907 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10908
10909         PR 30992
10910         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
10911
10912 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
10913
10914         * target.h (init_dwarf_reg_sizes_extra): New target hook.
10915         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
10916         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
10917         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
10918         hook.
10919         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
10920         rs6000_init_dwarf_reg_sizes_extra): New.
10921         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
10922         SPE register high parts.
10923
10924 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
10925
10926         * Makefile.in: Add install-pdf target as
10927         copied from automake v1.10 rules.
10928         * configure.ac: Add install-pdf to target list.
10929         * configure: Regenerate.
10930
10931 2007-03-01  Paul Brook  <paul@codesourcery.com>
10932
10933         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
10934         modes to LDRD for DImode.
10935         (output_move_double): Fixup out of range ldrd/strd.
10936         (vfp_secondary_reload_class): Rename...
10937         (coproc_secondary_reload_class): ... to this.  Add wb argument.
10938         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
10939         coproc_secondary_reload_class for CLASS_IWMMXT.
10940         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
10941         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
10942
10943 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
10944
10945         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
10946         factor by the estimated number of iterations.
10947         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
10948         prefetch latency.
10949
10950         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
10951         decode_caches_intel, detect_caches_intel): New functions.
10952         (host_detect_local_cpu): Use detect_caches_amd and
10953         detect_caches_intel.
10954
10955 2007-03-01  Richard Henderson  <rth@redhat.com>
10956
10957         * expr.c (emit_move_complex_push): Export.
10958         (emit_move_complex_parts): Split out from ...
10959         (emit_move_complex): ... here.
10960         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
10961         * config/i386/i386.md (movcdi): New.
10962
10963 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
10964
10965         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
10966         size of mode1 to check for tieable modes in MMX case.
10967
10968 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
10969
10970         * Makefile.in (rtlanal.o): Depend on tree.h.
10971         * rtl.h (offset_within_section_p, split_const): Declare.
10972         * rtlanal.c: Include tree.h.
10973         (offset_within_block_p): New function, taken from
10974         mips_offset_within_object_p.
10975         (split_const): New function, taken from mips_split_const.
10976         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
10977         Declare.
10978         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
10979         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
10980         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
10981         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
10982         (m68k_illegitimate_symbolic_constant_p): New function.
10983         * config/m68k/m68k.md (movsi): Remove misleading predicates.
10984         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
10985         symbolic constant that might be outside the symbol's section,
10986         move the symbol first and then add the offset.
10987         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
10988         Override.
10989         * config/mips/mips.c (mips_split_const): Delete.
10990         (mips_offset_within_object_p): Delete.
10991         (mips_symbolic_constant_p): Use offset_within_section_p and
10992         split_const instead of mips_offset_within_object_p and
10993         mips_split_const.
10994         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
10995         (mips_legitimize_const_move, print_operand_reloc)
10996         (mips_dangerous_for_la25_p): Use split_const instead of
10997         mips_split_const.
10998
10999 2007-02-28  Eric Christopher  <echristo@apple.com>
11000
11001         * Makefile.in (install-include-dir): Don't rm -rf include.
11002
11003 2007-02-28  Richard Guenther  <rguenther@suse.de>
11004
11005         PR middle-end/30364
11006         * fold-const.c (fold_binary): Do not associate expressions
11007         with more than one variable for integer types that do not wrap.
11008
11009 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
11010
11011         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
11012         Delete, and replace with...
11013         (fold_builtin_call_array): This.  Update callers to use it.
11014         * fold-const.c (fold_build_call_list): Delete, and replace with...
11015         (fold_build_call_array): This.
11016         (fold_build_call_list_initializer): Delete, and replace with...
11017         (fold_build_call_array_initializer): This.
11018         * tree.h: Update declarations to reflect above changes.
11019
11020         * c-typeck.c (build_function_call): Store converted arguments
11021         in a stack-allocated array instead of building a list.
11022         (convert_arguments): Store arguments in the array passed in as an
11023         argument, and return the actual number of arguments.
11024         * c-format.c: (check_function_format): Pass arguments in an
11025         array instead of a list.
11026         * c-common.c (check_function_nonnull): Likewise.
11027         (check_function_sentinel): Likewise.
11028         (check_function_arguments): Likewise.
11029         * c-common.h: Update declarations to reflect above changes.
11030
11031 2007-02-28  Jan Hubicka  <jh@suse.cz>
11032
11033         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
11034         PRED_NEGATIVE_RETURN): Update outcomes.
11035
11036 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
11037
11038         * calls.c (emit_library_call_value_1): Handle partial registers
11039         correctly when building up CALL_INSN_FUNCTION_USAGE.
11040
11041 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11042
11043         * pa/predicates.md (move_src_operand): Allow zero for mode.
11044         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
11045         move pattern.
11046
11047 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
11048
11049         PR target/30970
11050         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
11051         *movv2df_internal): Enable pattern only for valid operand
11052         combinations.
11053         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
11054         tie only 128bit modes. For MMX registers, tie only 64bit modes.
11055
11056 2007-02-27  Mike Stump  <mrs@apple.com>
11057
11058         * config/darwin-crt3.c: Avoid compilation when compiling for a
11059         kext multilib.
11060
11061 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
11062
11063         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
11064         FIXED_INCLUDE_DIR.
11065         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
11066         for fixed headers and limits.h.
11067         (install-include-dir, install-headers-tar, install-headers-cpio,
11068         install-headers-cp, real-install-headers-tar,
11069         real-install-headers-cpio, real-install-headers-cp): Handle
11070         include-fixed as well as include.
11071         (install-mkheaders): Don't install files that go only in include
11072         not include-fixed.
11073         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
11074         from GCC_INCLUDE_DIR.
11075         * gcc.c (process_command): Remove special -BstageN/ handling.
11076         (do_spec_1): Add include-fixed directories.
11077
11078 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11079
11080         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
11081         _smulsi3_highpart.
11082         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
11083         New functions.
11084         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
11085         patterns.
11086
11087 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
11088
11089         * c-common.c (get_priority): Add check for
11090         SUPPORTS_INIT_PRIORITY.
11091
11092 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11093
11094         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
11095
11096         * config/bfin/bfin.c: Include "cfglayout.h".
11097         (MAX_LSETUP_DISTANCE): New macro.
11098         (struct loop_info): New members incoming, incoming_src and
11099         incoming_dest.  Delete member predecessor.
11100         (length_for_loop): New function.
11101         (bfin_optimize_loop): Handle more different loop structures.
11102         (bfin_discover_loop): Rework detection of predecessor blocks by
11103         examining incoming edges.
11104         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
11105         bfin_reorg_loops.
11106         (bfin_reorder_loops): New function.
11107         (bfin_reorg_loops): Use these three new functions.
11108
11109         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
11110         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
11111         (CONSTRAINT_LEN): Add entry for 'q'.
11112         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
11113         Add 'q' constraints.
11114         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
11115         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
11116
11117         * config/bfin/bfin.md (add_with_carry): New pattern.
11118         (s_or_u, su_optab, su_modifier): New code macros/attrs.
11119         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
11120         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
11121         support unsigned multiplies too.  Removed incorrect commutativity from
11122         operand 1 constraint where appropriate.
11123         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
11124         patterns.
11125         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
11126         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
11127         New patterns.
11128         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
11129         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
11130         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
11131         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
11132         usmulhisi_hh_huh): New patterns.
11133
11134         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
11135         lshifthi3): Fix output template to use half reg for operand 2.
11136
11137         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
11138         instead of R2.
11139
11140         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
11141
11142 2007-02-27  Andreas Schwab  <schwab@suse.de>
11143
11144         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
11145
11146 2007-02-27  Jan Hubicka  <jh@suse.cz>
11147
11148         * predict.c (last_basic_block_p): Remove.
11149         (tree_estimate_probability): Update return heuristic for commonized
11150         return blocks.
11151
11152 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
11153
11154         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
11155
11156 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
11157
11158         * doc/include/gcc-common.texi (versionsubtitle): New macro.
11159         * doc/cpp.texi: Standardize title page.
11160         * doc/cppinternals.texi: Likewise.
11161         * doc/gcc.texi: Standardize title page, remove version number
11162         from copyright page.
11163         * doc/gccint.texi: Likewise.
11164         * doc/install.texi: Standardize title page, add table of
11165         contents.
11166
11167 2007-02-26  Jan Hubicka  <jh@suse.cz>
11168
11169         * predict.def: Set outcomes according to more recent results.
11170         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
11171         Remove dead predictors.
11172         * predict.c (return_prediction): Fix pasto.
11173
11174 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
11175
11176         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
11177         change; avoid a memory leak when returning early.
11178
11179 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
11180
11181         * c-decl.c (static_ctors): Move to c-common.c.
11182         (static_dtors): Likewise.
11183         (finish_function): Use c_record_cdtor_fn.
11184         (build_cdtor): Move to c-common.c.
11185         (c_write_global_declarations): Use c_build_cdtor_fns.
11186         * c-common.h (static_ctors): Declare.
11187         (static_dtors): Likewise.
11188         (c_record_cdtor_fn): Likewise.
11189         (c_build_cdtor_fns): Likewise.
11190         * c-common.c (static_ctors): New variable.
11191         (static_dtors): Likewise.
11192         (c_record_cdtor_fn): New function.
11193         (build_cdtor): Move from c-decl.c
11194         (c_build_cdtor_fns): New function.
11195
11196         * output.h (assemble_addr_to_section): Declare.
11197         (get_cdtor_priority_section): Likewise.
11198         * varasm.c (assemble_addr_to_section): New function.
11199         (get_cdtor_priority_section): Likewise.
11200         (default_named_section_asm_out_destructor): Use them.
11201         (destor_dtor_section_asm_out_destructor): Likewise.
11202         (default_named_section_asm_out_constructor): Likewise.
11203         (default_ctor_section_asm_out_constructor): Likewise.
11204         * config.gcc (*-*-vxworks*): Include vxworks.o.
11205         * config/t-vxworks (vxworks.o): New target.
11206         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
11207         (TARGET_ASM_CONSTRUCTOR): Define.
11208         (TARGET_ASM_DESTRUCTOR): Likewise.
11209         (vxworks_asm_out_constructor): Declare.
11210         (vxworks_asm_out_destructor): Likewise.
11211
11212         * c-common.c (get_priority): Check that we have not just an
11213         INTEGER_CST, but an integer constant with integeral type.
11214
11215 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
11216
11217         PR tree-optimization/30938
11218         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
11219         use &dt[nargs-1] instead of &dt[nargs] in the call to
11220         vect_is_simple_use().
11221
11222 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
11223
11224         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
11225         from register elimination as PRE_MODIFY / POST_MODIFY increments.
11226         Do not attempt to handle MEM inside auto-inc expressions.
11227         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
11228         of a register modified by an auto-inc expression.  However, do handle
11229         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
11230         (elimination_effects): Prohibit elimination of a register modified
11231         by an auto-inc expression.  Disable register elimination rules whose
11232         target register is modified by an auto-inc expression with variable
11233         increment.
11234
11235 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
11236
11237         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
11238         off-by-one error.
11239         (array_at_struct_end_p): New function.
11240         (idx_infer_loop_bounds): Use it.
11241         (estimate_numbers_of_iterations_loop): Export.
11242         * predict.c (predict_loops): Use estimated_loop_iterations_int.
11243         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
11244         (tree_estimate_probability): Call record_loop_exits.
11245         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
11246         (estimated_loop_iterations, estimated_loop_iterations_int,
11247         estimated_loop_iterations_tree): New functions.
11248         (analyze_siv_subscript_cst_affine,
11249         compute_overlap_steps_for_affine_1_2,
11250         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
11251         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
11252         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
11253         (PRED_LOOP_ITERATIONS_GUESSED): New.
11254         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
11255         * cfgloop.h (estimate_numbers_of_iterations_loop,
11256         estimated_loop_iterations_int): Declare.
11257
11258 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
11259
11260         * doc/extend.texi: Document optional priority argument to
11261         constructors and destructors.
11262         * tree.c (init_priority_for_decl): Adjust GTY markers.
11263         (init_ttree): Use priority-info hash functions for
11264         init_priority_for_decl.
11265         (tree_map_eq): Rename to ...
11266         (tree_map_base_eq): ... this.
11267         (tree_map_marked_p): Rename to ...
11268         (tree_map_base_marked_p): ... this.
11269         (tree_map_base_hash): New function.
11270         (decl_init_priority_lookup): Rework.
11271         (decl_fini_priority_lookup): New function.
11272         (decl_priority_info): New function.
11273         (decl_init_priority_insert): Use it.
11274         (decl_fini_priority_insert): Likewise.
11275         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
11276         hierarchy.
11277         (decl_restrict_base_insert): Likewise.
11278         (decl_debug_expr_insert): Likewise.
11279         (decl_value_expr_lookup): Likewise.
11280         (decl_value_expr_insert): Likewise.
11281         * tree.h (priority_type): New type.
11282         (decl_init_priority_lookup): Use priority_type.
11283         (decl_fini_priority_lookup): New function.
11284         (decl_init_priority_insert): Use priority_type.
11285         (decl_fini_priority_insert): New function.
11286         (DECL_HAS_INIT_PRIORITY): Tweak comments.
11287         (DECL_INIT_PRIORITY): Likewise.
11288         (SET_DECL_INIT_PRIORITY): Add comment.
11289         (DECL_FINI_PRIORITY): New macro.
11290         (SET_DECL_FINI_PRIORITY): Likewise.
11291         (DEFAULT_INIT_PRIORITY): Document.
11292         (MAX_INIT_PRIORITY): Likewise.
11293         (MAX_RESERVED_INIT_PRIORITY): Likewise.
11294         (tree_map_base): New type.
11295         (tree_map_base_eq): New function.
11296         (tree_map_base_hash): Likewise.
11297         (tree_map_base_marked_p): Likewise.
11298         (tree_map): Inherit from tree_map_base.
11299         (tree_map_eq): Make it a macro.
11300         (tree_map_marked_p): Likewise.
11301         (tree_int_map): Inherit from tree_map_base.
11302         (tree_int_map_eq): Make it a macro.
11303         (tree_int_map_hash): Likewise.
11304         (tree_int_map_marked_p): Likewise.
11305         (tree_priority_map): New type.
11306         (tree_priority_map_eq): New macro.
11307         (tree_priority_map_hash): Likewise.
11308         (tree_priority_map_marked_p): Likewise.
11309         * varasm.c (emults_decl): Adjust for refactoring of tree_map
11310         hierarchy.
11311         (emutls_common_1): Likewise.
11312         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
11313         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
11314         of tree_map hierarchy.
11315         * tree-cfg.c (move_stmt_r): Likewise.
11316         (new_label_mapper): Likewise.
11317         * c-tree.h (c_expand_body): Move to ...
11318         * c-common.h (c_expand_body): ... here.
11319         * c-decl.c (c_expand_body): Move to ...
11320         * c-common.c (c_expand_body): ... here.
11321         (c_common_attribute_table): Allow 1 argument for the constructor
11322         and destructor attributes.
11323         (get_priority): New function.
11324         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
11325         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
11326
11327 2007-02-24  Jan Hubicka  <jh@suse.cz>
11328
11329         PR middle-end/30509
11330         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
11331
11332 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11333             Jan Hubicka  <jh@suse.cz>
11334
11335         PR target/30778
11336         * i386.c (counter_mode): New function.
11337         (expand_set_or_movmem_via_loop): Use it.
11338         (expand_movmem_epilogue): Likewise; fix pasto.
11339         (ix86_expand_movmem): Do emit guard even for constant counts.
11340         (ix86_expand_setmem): Likewise.
11341
11342 2007-02-25  Nick Clifton  <nickc@redhat.com>
11343
11344         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
11345         (JUMP_TABLES_IN_TEXT_SECTION): Define.
11346
11347 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11348
11349         PR target/30770
11350         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
11351         count argument with 0x10, not with 0x16.
11352         (expand_setmem_epilogue): Ditto.
11353
11354 2007-02-24  Mike Stump  <mrs@apple.com>
11355
11356         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
11357         symbols.
11358
11359 2007-02-24  Richard Guenther  <rguenther@suse.de>
11360
11361         PR middle-end/30951
11362         * fold-const.c (fold_binary): Fold x +- CST op x for
11363         EQ_EXPR and NE_EXPR.
11364
11365 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11366
11367         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
11368
11369 2007-02-24  Jan Hubicka  <jh@suse.cz>
11370
11371         * cgraphunit.c (decide_is_function_needed): Honor
11372         -fkeep-inline-functions.
11373
11374 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11375
11376         * builtins.c (fold_builtin_modf): New.
11377         (fold_builtin_2): Use it.
11378
11379 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11380
11381         * loop-iv.c (implies_p): Detect additional cases where A implies B.
11382         (determine_max_iter): Take additional LOOP arg; all callers changed.
11383         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
11384         one using simplifications.
11385         (simplify_using_initial_values): Return if the expression becomes
11386         invalid due to altered regs.
11387
11388 2007-02-23  DJ Delorie  <dj@redhat.com>
11389
11390         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
11391
11392 2007-02-23  Mike Stump  <mrs@apple.com>
11393
11394         * tlink.c (scan_linker_output): Parse linker messages from
11395         darwin9's linker better.
11396
11397 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
11398
11399         PR debug/29614
11400         * varpool.c (varpool_assemble_pending_decls):  Set
11401         varpool_last_needed_node to null.
11402
11403 2007-02-23  DJ Delorie  <dj@redhat.com>
11404
11405         * config/i386/i386.c (ix86_data_alignment): Don't specify an
11406         alignment bigger than the object file can handle.
11407
11408 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
11409
11410         PR target/30825
11411         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
11412         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
11413         (*movsf_1): Penalize MMX moves.
11414
11415 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
11416
11417         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
11418         2^32-1 or more times unless flag_unsafe_loop_optimizations.
11419
11420         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
11421
11422 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11423
11424         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
11425         (fold_builtin_1): Use them.
11426         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11427         BUILT_IN_SIGNIFICAND.
11428
11429 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
11430
11431         * config/i386/i386.c (bdesc_1arg): Initialize
11432         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
11433         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
11434         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
11435         and IX86_BUILTIN_MOVSLDUP.
11436
11437 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
11438
11439         PR rtl-optimization/30841
11440         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
11441
11442 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11443
11444         * builtins.c (fold_builtin_frexp): New.
11445         (fold_builtin_2): Use it.
11446
11447 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
11448
11449         * doc/invoke.texi (Spec Files): Document getenv spec function.
11450
11451         * gcc.c (getenv_spec_function): New function.
11452         (static_spec_functions): Add it.
11453         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
11454         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
11455         header files.
11456
11457 2007-02-22  Michael Matz  <matz@suse.de
11458
11459         PR c++/29433
11460         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
11461         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
11462
11463 2007-02-22  Ian Lance Taylor  <iant@google.com>
11464
11465         PR debug/30898
11466         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
11467         (mem_loc_descriptor): Call it.
11468
11469 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
11470             Ira Rosen  <irar@il.ibm.com>
11471
11472         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
11473
11474 2007-02-22  Ira Rosen  <irar@il.ibm.com>
11475
11476         PR tree-optimization/30843
11477         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
11478         stores only after all the group is vectorized.
11479
11480 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
11481
11482         PR tree-optimization/30858
11483         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
11484         in the reduction cycle have a single use in the loop.
11485         * tree-vectorizer.h (relevant): Add documentation.
11486
11487 2007-02-20  Mike Stump  <mrs@apple.com>
11488
11489         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
11490         * configure: Regenerate.
11491
11492 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11493
11494         Change the defaults of some parameters and options.
11495         * config/spu/spu-protos.h (spu_optimization_options): Declare.
11496         * config/spu/spu.c (spu_optimization_options): Add.
11497         (spu_override_options): Change params in spu_optimization_options.
11498         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
11499
11500         Register 127 is only 16 byte aligned when used as a frame pointer.
11501         * config/spu/spu-protos.h (spu_init_expanders): Declare.
11502         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
11503         HARD_FRAME_POINTER_REGNUM.
11504         (spu_legitimate_address):  Use regno_aligned_for_reload.
11505         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
11506         aligned when frame_pointer_needed is true.
11507         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
11508         to 8 bits.
11509         * config/spu/spu.h (INIT_EXPANDERS): Define.
11510
11511         Make sure shift and rotate instructions have valid immediate operands.
11512         * config/spu/predicates.md (spu_shift_operand): Remove.
11513         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
11514         * config/spu/constraints.md (W, O): Extend range.
11515         * config/spu/spu.md (umask, nmask): Define.
11516         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
11517         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
11518         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
11519         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
11520         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
11521         (lshr<mode>3_reg):  Fix rtl description.
11522
11523         Make sure mulhisi immediate operands are valid.
11524         * config/spu/predicates.md (imm_K_operand): Add.
11525         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
11526
11527         Generate constants using fsmbi and andi.
11528         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
11529         (print_operand, spu_split_immediate, classify_immediate,
11530         fsmbi_const_p): Handle IC_FSMBI2.
11531
11532         Correctly handle a CONST_VECTOR containing symbols.
11533         * config/spu/spu.c (print_operand): Handle HIGH correctly.
11534         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
11535         (immediate_load_p): Allow symbols that use 2 instructions to create.
11536         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
11537         with symbols when flag_pic is set.
11538         (const_vector_immediate_p): New.
11539         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
11540         accept a CONST_VECTOR with symbols.
11541         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
11542         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
11543         correctly.
11544         * config/spu/spu.md (high, low): Delete.
11545         (low_<mode>): Define.
11546
11547         Remove INTRmode and INTR_REGNUM, which didn't work.
11548         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
11549         of INTR_REGNUM.
11550         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
11551         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
11552         peephole2 pattern): Don't use INTR or 131.
11553         (movintrcc): Delete.
11554         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
11555         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
11556         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
11557         (UNSPEC_SET_INTR): Add.
11558         * config/spu/spu-modes.def (INTR): Remove.
11559
11560         More accurate warnings about run-time relocations.
11561         * config/spu/spu.c (reloc_diagnostic): Test in_section.
11562
11563         Correctly warn about immediate arguments to specific intrinsics.
11564         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
11565         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
11566         the instruction predicate.
11567
11568         Fix tree check errors with latest update.
11569         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
11570         CALL_EXPR_ARG.
11571         (spu_expand_builtin): Use CALL_EXPR_FN.
11572
11573         Add missing specific intrinsics.
11574         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
11575         si_bislede.
11576         * config/spu/spu_internals.h: Ditto.
11577
11578         Fix incorrect operand modifiers.
11579         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
11580         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
11581
11582         Optimize one case of zero_extend of a vec_select.
11583         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
11584
11585         Accept any immediate for hbr.
11586         * config/spu/spu.md (hbr):  Change s constraints to i.
11587
11588 2007-02-21  Paul Brook  <paul@codesourcery.com>
11589
11590         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
11591         condexec_count when skipping USE and CLOBBER.
11592
11593 2007-02-21  Nick Clifton  <nickc@redhat.com>
11594
11595         * common.opt (Warray-bounds): Add Warning attribute.
11596         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
11597         Likewise.
11598         (fsized-zeroes): Add Optimization attribute.
11599         (fsplit-wide-types, ftree-scev-cprop): Likewise.
11600         * c.opt (Wc++0x-compat): Add Warning attribute.
11601
11602 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
11603
11604         PR middle-end/30761
11605         * reload1.c (eliminate_regs_in_insn): In the single_set special
11606         case, attempt to re-recognize the insn before falling back to
11607         having reload fix it up.
11608
11609 2007-02-20  Eric Christopher  <echristo@gmail.com>
11610
11611         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
11612         Rewrite accordingly.
11613         (frv_read_iacc_argument): Ditto.
11614         (frv_expand_set_builtin): Take a call instead of arglist, update for
11615         above changes.
11616         (frv_expand_unop_builtin): Ditto.
11617         (frv_expand_binop_builtin): Ditto.
11618         (frv_expand_cut_builtin): Ditto.
11619         (frv_expand_binopimm_builtin): Ditto.
11620         (frv_expand_voidbinop_builtin): Ditto.
11621         (frv_expand_int_void2arg): Ditto.
11622         (frv_expand_prefetches): Ditto.
11623         (frv_expand_voidtriop_builtin): Ditto.
11624         (frv_expand_voidaccop_builtin): Ditto.
11625         (frv_expand_load_builtin): Ditto.
11626         (frv_expand_store_builtin): Ditto.
11627         (frv_expand_mdpackh_builtin): Ditto.
11628         (frv_expand_mclracc_builtin): Ditto.
11629         (frv_expand_mrdacc_builtin): Ditto.
11630         (frv_expand_mwtacc_builtin): Ditto.
11631         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
11632         calls for above.
11633
11634 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
11635
11636         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
11637         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
11638         cmpb instruction.
11639         (HAVE_GAS_DFP): Check for assembler support of decimal floating
11640         point instructions.
11641         * configure: Regenerate.
11642         * config.in: Regenerate.
11643         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
11644         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
11645         masks to power6 and power6x and to POWERPC_MASKS.
11646         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
11647         _ARCH_PWR6.
11648         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
11649         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
11650         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
11651         Access PROTOTYPE as variable, not mask.
11652
11653 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11654
11655         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
11656         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
11657         * combine.c (adjust_for_new_dest): Use it.
11658         * postreload.c (reload_combine): Likewise.
11659
11660 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11661
11662         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
11663         notes on an insn with multiple sets, even if single_set returns
11664         non-NULL for that insn.
11665
11666 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11667
11668         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
11669         scalbn and scalbln.
11670
11671 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
11672
11673         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
11674         if user didn't pass it.
11675         * config/i386/darwin.h (CC1_SPEC): Likewise.
11676         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
11677         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
11678         -mmacosx-version-min.
11679
11680 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11681             Uros Bizjak  <ubizjak@gmail.com>
11682
11683         * optabs.h (enum optab_index): Add new OTI_scalb.
11684         (scalb_optab): Define corresponding macro.
11685         * optabs.c (init_optabs): Initialize scalb_optab.
11686         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
11687         patterns.
11688         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
11689         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
11690         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
11691         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
11692         flag_unsafe_math_optimizations is set.
11693
11694         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
11695         to implement scalbf, scalb and scalbl built-ins as inline x87
11696         intrinsics.
11697
11698 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11699             DJ Delorie <dj@redhat.com>
11700
11701         PR other/30824
11702         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
11703         (diagnostic_report_diagnostic): ... here, and turn them into real
11704         errors. If warnings are inhibited, no need to do anything.
11705
11706 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
11707
11708         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
11709         better code generation.
11710
11711 2007-02-20  Ben Elliston  <bje@au.ibm.com>
11712
11713         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
11714
11715 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
11716
11717         * config/alpha/alpha.c, config/alpha/alpha.md,
11718         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
11719         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
11720         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
11721         config/arm/lib1funcs.asm: Follow spelling conventions.
11722
11723         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
11724         config/fr30/fr30.md, config/i386/i386.h,
11725         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11726         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
11727         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
11728         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
11729         config/rs6000/altivec.md, config/rs6000/rs6000.c,
11730         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
11731         config/sparc/sparc.c, config/sparc/sparc.h,
11732         config/sparc/sparc.md, config/spu/constraints.md,
11733         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
11734         conventions.
11735
11736 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
11737
11738         PR target/29943
11739         * varasm.c (use_blocks_for_decl_p): Return false for decls with
11740         alias attribute.
11741
11742 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11743
11744         * doc/invoke.texi (-ftree-lrs): Remove.
11745
11746 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
11747
11748         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
11749         NULL.
11750
11751 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
11752
11753         * config/ia64/ia64.c (ia64_expand_builtin): Use the
11754         new CALL_EXPR_FN macro for retrieving the function
11755         declaration of the input expression.
11756
11757 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11758
11759         * c.opt (Waddress): New.
11760         * common.opt (Walways-true): Delete.
11761         (Wstring-literal-comparison): Delete.
11762         * doc/invoke.texi (Warning Options): Delete -Walways-true and
11763         -Wstring-literal-comparison. Add -Waddress.
11764         (Waddress): New.
11765         (Walways-true): Delete.
11766         (Wstring-literal-comparison): Delete.
11767         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
11768         consistently instead of -Walways-true in example.
11769         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
11770         * c-typeck.c (parser_build_binary_op): Replace
11771         -Wstring-literal-comparison and -Walways-true with -Waddress.
11772         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
11773         with -Waddress.
11774
11775 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11776
11777         * tree-cfg.c (dump_function_to_file): Be prepared for functions
11778         without DECL_STRUCT_FUNCTION initialized.
11779
11780 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11781
11782         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
11783         due to calls to functions taking pointers as parameters.
11784
11785 2007-02-19  Richard Henderson  <rth@redhat.com>
11786
11787         PR debug/29558
11788         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
11789         in memory.
11790
11791 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11792
11793         * config/s390/s390.c (s390_call_saved_register_used,
11794         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
11795         accessed to the new scheme.
11796
11797 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11798
11799         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
11800         (cris_print_index, cris_print_operand, cris_print_operand_address)
11801         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
11802         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
11803         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
11804         GET_CODE () == xxx.
11805         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
11806         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
11807         GO_IF_LEGITIMATE_ADDRESS): Ditto.
11808         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
11809         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
11810         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
11811         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
11812         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
11813         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
11814         (uminsi3, call, call_value): Ditto.
11815         (define_split: indir_to_reg_split, unnamed): Ditto.
11816
11817 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
11818
11819         PR tree-optimization/30975
11820         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
11821         wrong assert.
11822
11823 2007-02-18  Eric Christopher  <echristo@gmail.com>
11824
11825         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
11826         Remove use of arglist.
11827         (mips_expand_builtin): Remove use of arglist, pass in expr.
11828         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
11829         (mips_expand_builtin_movtf): Ditto.
11830         (mips_expand_builtin_compare): Ditto.
11831
11832 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11833
11834         * tree-sra.c (sra_build_assignment): Replace assertion
11835         checking with a comment explaining why it can't be done.
11836
11837 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11838
11839         PR middle-end/30833
11840         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
11841         during CALL_EXPR representation conversion.
11842         * tree-ssa-propagate.c (set_rhs): Likewise.
11843
11844 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11845
11846         * tree-sra.c (sra_build_assignment): Disable assertion checking
11847         for now.
11848
11849 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11850
11851         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
11852         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11853         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
11854         Likewise.
11855         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
11856         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
11857         gimplify_init_ctor_eval_range, gimple_push_cleanup,
11858         gimplify_omp_for, gimplify_omp_atomic_pipeline,
11859         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
11860         force_gimple_operand): Likewise.
11861         * ipa-cp.c (constant_val_insert): Likewise.
11862         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
11863         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
11864         perfect_nestify): Likewise.
11865         * langhooks.c (lhd_omp_assignment): Likewise.
11866         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
11867         lower_copyprivate_clauses, lower_send_clauses,
11868         lower_send_shared_vars, expand_parallel_call,
11869         expand_omp_for_generic, expand_omp_for_static_nochunk,
11870         expand_omp_for_static_chunk, expand_omp_sections,
11871         lower_omp_single_copy, lower_omp_for_lastprivate,
11872         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
11873         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
11874         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
11875         Likewise.
11876
11877 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11878
11879         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
11880         config/sh/sh.md: Follow spelling conventions.
11881
11882         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
11883         config/frv/predicates.md: Follow spelling conventions.
11884
11885         * config/m68k/linux-unwind.h: Fix a comment typo.
11886         * target.h: Follow spelling conventions.
11887
11888 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11889
11890         PR rtl-optimization/28173
11891         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
11892         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
11893         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
11894         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
11895         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
11896
11897 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11898
11899         * builtins.c (fold_builtin_load_exponent): New.
11900         (fold_builtin_2): Use it.
11901
11902 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
11903
11904         PR rtl-optimization/30773
11905         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
11906         if we fail to attach a REG_EQUIV note.
11907
11908 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
11909             Roger Sayle  <roger@eyesopen.com>
11910
11911         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
11912
11913 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11914
11915         * calls.c (initialize_argument_information): Pass original EXP
11916         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
11917         code to split complex arguments here, as part of initializing the
11918         ARGS array.
11919         (expand_call): Remove code that builds a list of arguments and
11920         inserts implicit arguments into it.  Instead, just count how many
11921         implicit arguments there will be so we can determine the size of
11922         the ARGS array, and let initialize_argument_information do the work.
11923         (split_complex_values): Delete unused function.
11924
11925 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11926
11927         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
11928
11929 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11930
11931         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
11932         for arg pointer based indexed addressing.
11933
11934 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11935
11936         * config/ia64/ia64.h, config/ia64/ia64.md,
11937         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
11938         spelling conventions.
11939
11940 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11941
11942         * config/m68k/m68k.c (split_di): New.
11943         * config/m68k/m68k-protos.h: Declare split_di.
11944         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
11945           Improve predicate handling and split constant shifts.
11946
11947 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11948
11949         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
11950         parameter for register bitfield operations, general predicates
11951         cleanup
11952
11953 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11954
11955         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
11956         * config/m68k/linux-unwind.h: New file.
11957
11958 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11959
11960         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
11961         config/i386/athlon.md, config/ia64/ia64.md,
11962         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
11963         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
11964         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
11965         tree-ssa-loop-niter.c, tree-vect-analyze.c,
11966         tree-vect-transform.c: Fix comment typos.
11967
11968 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
11969
11970         * sched-deps.c (find_insn_list): Remove.
11971         * sched-int.h: Remove the prototype for find_insn_list.
11972
11973 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
11974
11975         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
11976         to linker.
11977         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
11978         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
11979         darwin_rs6000_override_options.
11980         (C_COMMON_OVERRIDE_OPTIONS): Expect
11981         darwin_macosx_version_min to be non-NULL always.
11982         (TARGET_C99_FUNCTIONS): Likewise.
11983         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
11984         (DARWIN_MINVERSION_SPEC): New.
11985         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
11986         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
11987         to cc1*.
11988         (DARWIN_MINVERSION_SPEC): New.
11989         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
11990         value.
11991         * config/darwin-c.c (darwin_cpp_builtins): Expect
11992         darwin_macosx_version_min to be non-NULL always.
11993
11994         * config/rs6000/rs6000.c: Clean up trailing whitespace.
11995
11996 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
11997
11998         * config/i386/i386.h (x86_use_xchgb): New.
11999         (TARGET_USE_XCHGB): New macro.
12000         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
12001         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
12002         Split after reload into bswaphi for shifts of 8.
12003         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
12004         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
12005         or when optimizing for size.
12006
12007 2007-02-16  Richard Guenther  <rguenther@suse.de>
12008             Christian Bruel  <christian.bruel@st.com>
12009
12010         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
12011         DECLs but prefer SSA_NAMEs over DECLs.
12012
12013 2007-02-16  Richard Guenther  <rguenther@suse.de>
12014
12015         * tree-flow-inline.h (single_imm_use_p): Remove.
12016         (zero_imm_uses_p): Likewise.
12017         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
12018         instead of single_imm_use_p.
12019         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
12020         zero_imm_uses_p.
12021
12022 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12023
12024         PR other/27843
12025         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
12026         nested double- and backquotes.
12027
12028 2007-02-15  Roger Sayle  <roger@eyesopen.com>
12029
12030         PR middle-end/30391
12031         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
12032         should be unreachable.
12033         (build2_stat): Allow construction of MODIFY_EXPR at any time.
12034         For the time being redirect GIMPLE_MODIFY_STMT to the new
12035         (renamed) build_gimple_modify_stmt_stat.
12036         (build2_gimple_stat): Rename to...
12037         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
12038         Always build a GIMPLE_MODIFY_STMT node.
12039         * tree.h (build2_gimple, build2_gimple_stat): Delete.
12040         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
12041         declarations.
12042
12043         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
12044         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
12045         * tree-complex.c (set_component_ssa_name, expand_complex_move,
12046         expand_complex_div_wide): Likewise.
12047         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
12048         * tree-ssa-loop-im.c (schedule_sm): Likewise.
12049         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
12050         * tree-ssa-loop-manip.c (create_iv): Likewise.
12051         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
12052         abs_replacement): Likewise.
12053         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
12054         realify_fake_stores): Likewise.
12055
12056         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
12057         node rather than a GIMPLE_MODIFY_STMT node.
12058         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
12059         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
12060         Likewise.
12061         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
12062         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
12063         GIMPLE_MODIFY_STMT.
12064
12065 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12066
12067         PR middle-end/30433
12068         * fold-const.c (fold_comparison): Add back the
12069         folding of constant complex comparisions.
12070
12071 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12072
12073         PR middle-end/30729
12074         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
12075         effects unknown to this function, return early.
12076
12077 2007-02-15  Ian Lance Taylor  <iant@google.com>
12078
12079         * lower-subreg.c (move_eh_region_note): New static function.
12080         (resolve_simple_move): Call it.
12081         (decompose_multiword_subregs): Track blocks for which we resolve a
12082         simple move which is also a control flow insn.  Pass them to
12083         find_many_sub_basic_blocks.
12084         (pass_lower_subreg): Add TODO_verify_flow.
12085         (pass_lower_subreg2): Likewise.
12086
12087 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12088             Brooks Moses  <brooks.moses@codesourcery.com>
12089             Lee Millward  <lee.millward@codesourcery.com>
12090
12091         * tree.h (enum tree_code_class): Add tcc_vl_exp.
12092         (VL_EXP_CLASS_P): New.
12093         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
12094         TREE_CODE_LENGTH.
12095         (TREE_OPERAND_CHECK_CODE): Likewise.
12096         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
12097         (TREE_RTL_OPERAND_CHECK): Likewise.
12098         (tree_operand_check_failed): Make second parameter the whole tree
12099         instead of its code.  Fixed callers.
12100         (VL_EXP_CHECK): New.
12101         (TREE_OPERAND_LENGTH): New.
12102         (VL_EXP_OPERAND_LENGTH): New.
12103         (CALL_EXPR_FN): New.
12104         (CALL_EXPR_STATIC_CHAIN): New.
12105         (CALL_EXPR_ARGS): New.
12106         (CALL_EXPR_ARG): New.
12107         (call_expr_nargs): New.
12108         (CALL_EXPR_ARGP): New.
12109         (build_nt_call_list): Declare.
12110         (build_vl_exp_stat): Declare.
12111         (build_vl_exp): New.
12112         (build_call_list): Declare.
12113         (build_call_nary): Declare.
12114         (build_call_valist): Declare.
12115         (build_call_array): Declare.
12116         (call_expr_arg): Declare.
12117         (call_expr_argp): Declare.
12118         (call_expr_arglist): Declare.
12119         (fold_build_call_list): Declare.
12120         (fold_build_call_list_initializer): Declare.
12121         (fold_call_expr): Declare to replace fold_builtin.
12122         (fold_builtin_fputs): Update to agree with modified definition.
12123         (fold_builtin_strcpy): Likewise.
12124         (fold_builtin_strncpy): Likewise.
12125         (fold_builtin_memory_chk): Likewise.
12126         (fold_builtin_stxcpy_chk): Likewise.
12127         (fold_builtin_strncpy_chk): Likewise.
12128         (fold_builtin_next_arg): Likewise.
12129         (fold_build_call_expr): Declare.
12130         (fold_builtin_call_list): Declare.
12131         (fold_builtin_call_valist): Declare.
12132         (build_call_expr): Declare.
12133         (validate_arglist): Update to agree with modified definition.
12134         (tree_operand_length): New.
12135         (call_expr_arg_iterator): New.
12136         (init_call_expr_arg_iterator): New.
12137         (next_call_expr_arg): New.
12138         (first_call_expr_arg): New.
12139         (more_call_expr_args_p): New.
12140         (FOR_EACH_CALL_EXPR_ARG): New.
12141
12142         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
12143         and tcc_gimple_stmt.
12144         (tree_code_size): Update documentation.  Use sizeof (tree) rather
12145         than sizeof (char *).
12146         (tree_size): Likewise.  Add case for tcc_vl_exp.
12147         (tree_node_structure): Add case for tcc_vl_exp.
12148         (contains_placeholder_p): Likewise.
12149         (substitute_in_expr): Likewise.
12150         (substitute_placeholder_in_expr): Likewise.
12151         (stabilize_reference_1): Likewise.
12152         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
12153         to diagnose breakage of this interface for constructing CALL_EXPRs.
12154         (build_nt): Add similar assertion here.
12155         (build_nt_call_list): New.
12156         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
12157         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
12158         TREE_CODE_LENGTH.
12159         (get_callee_fndecl): Use new CALL_EXPR accessors.
12160         (tree_operand_check_failed): Change parameters to pass entire node
12161         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
12162         (process_call_operands): New.
12163         (build_vl_exp_stat): New.
12164         (build_call_list): New.
12165         (build_call_nary): New.
12166         (build_call_valist): New.
12167         (build_call_array): New.
12168         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12169         (call_expr_arglist): New.
12170
12171         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
12172         tcc_vl_exp instead of a fixed-size tcc_expression.
12173
12174         * doc/c-tree.texi (CALL_EXPR): Document new representation and
12175         accessors for CALL_EXPRs.
12176         (AGGR_INIT_EXPR): Likewise.
12177
12178 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12179             Brooks Moses  <brooks.moses@codesourcery.com>
12180             Lee Millward  <lee.millward@codesourcery.com>
12181
12182         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
12183         (expand_builtin_nonlocal_goto): Change parameter to be entire
12184         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
12185         (expand_builtin_prefetch): Likewise.
12186         (expand_builtin_classify_type): Likewise.
12187         (mathfn_built_in): Return NULL_TREE instead of 0.
12188         (expand_errno_check): Use new CALL_EXPR accessors.
12189         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
12190         Return NULL_RTX instead of 0.
12191         (expand_builtin_mathfn_2): Likewise.
12192         (expand_builtin_mathfn_3): Likewise.
12193         (expand_builtin_interclass_mathfn): Likewise.
12194         (expand_builtin_sincos): Likewise.
12195         (expand_builtin_cexpi): Likewise.
12196         (expand_builtin_int_roundingfn): Likewise.
12197         (expand_builtin_int_roundingfn_2): Likewise.
12198         (expand_builtin_pow): Likewise.
12199         (expand_builtin_powi): Likewise.
12200         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
12201         of arglist, fixing callers appropriately.  Use new CALL_EXPR
12202         accessors and constructors.  Return NULL_RTX instead of 0.
12203         (expand_builtin_strstr): Likewise.
12204         (expand_builtin_strchr): Likewise.
12205         (expand_builtin_strrchr): Likewise.
12206         (expand_builtin_strpbrk): Likewise.
12207         (expand_builtin_memcpy): Likewise.
12208         (expand_builtin_mempcpy): Likewise.
12209         (expand_builtin_mempcpy_args): New.
12210         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
12211         (expand_builtin_memmove_args): New.
12212         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
12213         (expand_movstr): Likewise.
12214         (expand_builtin_strcpy): Likewise.
12215         (expand_builtin_strcpy_args): New.
12216         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
12217         (expand_builtin_strncpy): Likewise.
12218         (expand_builtin_memset): Likewise.
12219         (expand_builtin_memset_args): New.
12220         (expand_builtin_bzero): Similarly to expand_builtin_memset.
12221         (expand_builtin_memcmp): Likewise.
12222         (expand_builtin_strcmp): Likewise.
12223         (expand_builtin_strncmp): Likewise.
12224         (expand_builtin_strcat): Likewise.
12225         (expand_builtin_strncat): Likewise.
12226         (expand_builtin_strspn): Likewise.
12227         (expand_builtin_strcspn): Likewise.
12228         (expand_builtin_args_info): Likewise.
12229         (expand_builtin_va_start): Likewise.
12230         (gimplify_va_arg_expr): Likewise.
12231         (expand_builtin_va_end): Likewise.
12232         (expand_builtin_va_copy): Likewise.
12233         (expand_builtin_frame_address): Likewise.
12234         (expand_builtin_alloca): Likewise.
12235         (expand_builtin_bswap): Likewise.
12236         (expand_builtin_unop): Likewise.
12237         (expand_builtin_fputs): Likewise.
12238         (expand_builtin_expect): Likewise.
12239         (expand_builtin_fabs): Likewise.
12240         (expand_builtin_copysign): Likewise.
12241         (expand_builtin_printf): Likewise.
12242         (expand_builtin_fprintf): Likewise.
12243         (expand_builtin_sprintf): Likewise.
12244         (expand_builtin_init_trampoline): Likewise.
12245         (expand_builtin_signbit): Likewise.
12246         (expand_builtin_fork_or_exec): Likewise.
12247         (expand_builtin_sync_operation): Likewise.
12248         (expand_builtin_compare_and_swap): Likewise.
12249         (expand_builtin_lock_test_and_set): Likewise.
12250         (expand_builtin_lock_release): Likewise.
12251         (expand_builtin): Likewise.
12252         (builtin_mathfn_code): Likewise.
12253
12254         (fold_builtin_constant_p): Pass call arguments individually instead
12255         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12256         accessors and constructors.  Return NULL_TREE instead of 0.
12257         (fold_builtin_expect): Likewise.
12258         (fold_builtin_classify_type): Likewise.
12259         (fold_builtin_strlen): Likewise.
12260         (fold_builtin_nan): Likewise.
12261         (integer_valued_real_p): Likewise.
12262         (fold_trunc_transparent_mathfn): Likewise.
12263         (fold_fixed_mathfn): Likewise.
12264         (fold_builtin_cabs): Likewise.
12265         (fold_builtin_sqrt): Likewise.
12266         (fold_builtin_cbrt): Likewise.
12267         (fold_builtin_cos): Likewise.
12268         (fold_builtin_cosh): Likewise.
12269         (fold_builtin_tan): Likewise.
12270         (fold_builtin_sincos): Likewise.
12271         (fold_builtin_cexp): Likewise.
12272         (fold_builtin_trunc): Likewise.
12273         (fold_builtin_floor): Likewise.
12274         (fold_builtin_ceil): Likewise.
12275         (fold_builtin_round): Likewise.
12276         (fold_builtin_int_roundingfn): Likewise.
12277         (fold_builtin_bitop): Likewise.
12278         (fold_builtin_bswap): Likewise.
12279         (fold_builtin_logarithm): Likewise.
12280         (fold_builtin_hypot): Likewise.
12281         (fold_builtin_pow): Likewise.
12282         (fold_builtin_powi): Likewise.
12283         (fold_builtin_exponent): Likewise.
12284         (fold_builtin_memset): Likewise.
12285         (fold_builtin_bzero): Likewise.
12286         (fold_builtin_memory_op): Likewise.
12287         (fold_builtin_bcopy): Deleted; call site changed to invoke
12288         fold_builtin_memory_op directly.
12289         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
12290         (fold_builtin_strncpy): Likewise.
12291         (fold_builtin_memcmp): Likewise.
12292         (fold_builtin_strcmp): Likewise.
12293         (fold_builtin_strncmp): Likewise.
12294         (fold_builtin_signbit): Likewise.
12295         (fold_builtin_copysign): Likewise.
12296         (fold_builtin_isascii): Likewise.
12297         (fold_builtin_toascii): Likewise.
12298         (fold_builtin_isdigit): Likewise.
12299         (fold_builtin_fabs): Likewise.
12300         (fold_builtin_abs): Likewise.
12301         (fold_builtin_fmin_fmax): Likewise.
12302         (fold_builtin_carg): Likewise.
12303         (fold_builtin_classify): Likewise.
12304         (fold_builtin_unordered_cmp): Likewise.
12305
12306         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
12307         New functions split out from fold_builtin_1.
12308         (fold_builtin_n): New.
12309         (fold_builtin_varargs): New.
12310         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
12311         instead.
12312         (fold_call_expr): New.
12313         (build_function_call_expr): Rewrite to use new helper function.
12314         (fold_builtin_call_list): New.
12315         (build_call_expr): New.
12316         (fold_builtin_call_valist): New.
12317         (rewrite_call_expr): New.
12318         (validate_arg): New.
12319         (validate_arglist): Change parameter to be entire CALL_EXPR instead
12320         of an arglist.  Change return type to bool.  Use new CALL_EXPR
12321         accessors.
12322
12323         (fold_builtin_strstr):  Pass call arguments individually instead
12324         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12325         accessors and constructors.  Return NULL_TREE instead of 0.
12326         (fold_builtin_strchr): Likewise.
12327         (fold_builtin_strrchr): Likewise.
12328         (fold_builtin_strpbrk): Likewise.
12329         (fold_builtin_strcat): Likewise.
12330         (fold_builtin_strncat): Likewise.
12331         (fold_builtin_strspn): Likewise.
12332         (fold_builtin_strcspn): Likewise.
12333         (fold_builtin_fputs): Likewise.
12334         (fold_builtin_next_arg): Likewise.
12335         (fold_builtin_sprintf): Likewise.
12336
12337         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
12338         NULL_RTX instead of 0.
12339         (expand_builtin_memory_chk): Likewise.
12340         (maybe_emit_chk_warning): Likewise.
12341         (maybe_emit_sprintf_chk_warning): Likewise.
12342
12343         (fold_builtin_object_size): Pass call arguments individually instead
12344         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12345         accessors and constructors.  Return NULL_TREE instead of 0.
12346         (fold_builtin_memory_chk): Likewise.
12347         (fold_builtin_stxcpy_chk): Likewise.
12348         (fold_builtin_strncpy_chk): Likewise.
12349         (fold_builtin_strcat_chk): Likewise.
12350         (fold_builtin_strcat_chk): Likewise.
12351         (fold_builtin_strncat_chk): Likewise.
12352         (fold_builtin_sprintf_chk): Likewise.
12353         (fold_builtin_snprintf_chk): Likewise.
12354         (fold_builtin_printf): Likewise.
12355         (fold_builtin_vprintf): Likewise.
12356
12357         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
12358         constructors.
12359         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
12360         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12361         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
12362         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
12363         (fold_unary): Likewise.
12364         (fold_binary): Likewise.
12365         (fold_ternary): Remove CALL_EXPR case, since they are no longer
12366         ternary expressions.
12367         (fold): Add logic for tcc_vl_exp.
12368         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
12369         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12370         (fold_build3_stat): Add assertion to flag broken interface for
12371         constructing CALL_EXPRs.
12372         (fold_build_call_list): New.
12373         (fold_build_call_list_initializer): New.
12374         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
12375         constructors.
12376         (fold_strip_sign_ops): Likewise.
12377
12378 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12379             Brooks Moses  <brooks.moses@codesourcery.com>
12380             Lee Millward  <lee.millward@codesourcery.com>
12381
12382         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
12383         accessors and dump arguments explicitly.
12384
12385         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
12386         TREE_CODE_LENGTH.
12387         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
12388         explicitly.
12389         (print_call_name): Use new CALL_EXPR accessors.
12390
12391         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
12392         CALL_EXPR arguments explicitly instead of as a list.  Use
12393         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12394
12395         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
12396         (vrp_visit_stmt): Likewise.
12397
12398         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
12399         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
12400         TREE_CODE_LENGTH.
12401         (force_move_till_expr): Likewise.
12402
12403         * targhooks.c (default_external_stack_protect_fail): Use
12404         build_call_expr instead of build_function_call_expr.
12405         (default_hidden_stack_protect_fail): Likewise.
12406
12407         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
12408         build the call.
12409
12410         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
12411         and walk arguments explicitly.
12412
12413         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
12414         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12415         (expand_simple_operations): Likewise.
12416         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
12417
12418         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
12419         of TREE_CODE_LENGTH.
12420         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
12421
12422         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
12423         instead of TREE_CODE_LENGTH.
12424
12425         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
12426         (tree_ic_transform): Likewise.
12427         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
12428         parameter instead of arglist.  Fix callers.
12429         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
12430         (tree_stringops_transform): Likewise.
12431         (tree_indirect_call_to_profile): Likewise.
12432         (tree_stringops_values_to_profile): Likewise.
12433
12434         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
12435         (eliminate_tail_call): Likewise.
12436
12437         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
12438
12439         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
12440         Use TREE_OPERAND_LENGTH and generalize to handle any number of
12441         operands.
12442         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
12443
12444         * omp-low.c (build_omp_barrier): Use build_call_expr.
12445         (lower_rec_input_clauses): Likewise.
12446         (lower_reduction_clauses): Likewise.
12447         (expand_parallel_call): Likewise.
12448         (maybe_catch_exception): Likewise.
12449         (expand_omp_for_generic): Likewise.
12450         (expand_omp_for_static_nochunk): Likewise.
12451         (expand_omp_sections): Likewise.
12452         (lower_omp_single_simple): Likewise.
12453         (lower_omp_single_copy): Likewise.
12454         (lower_omp_master): Likewise.
12455         (lower_omp_ordered): Likewise.
12456         (lower_omp_critical): Likewise.
12457
12458         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
12459         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
12460
12461         * tree-gimple.c (is_gimple_call_addr): Fix doc.
12462         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
12463         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
12464
12465         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
12466         and generalize to handle any number of operands.
12467         (chrec_contains_undetermined): Likewise.
12468         (tree_contains_chrecs): Likewise.
12469         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
12470
12471         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
12472
12473         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
12474         fold_call_expr instead of fold_builtin.
12475         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
12476         match declarations there.
12477         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
12478         updates.
12479
12480         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
12481         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12482
12483         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
12484         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
12485
12486         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
12487         accessors.
12488
12489         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
12490         (execute_cse_sincos): Use new CALL_EXPR accessors.
12491
12492         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
12493
12494         * gimple-low.c (lower_function_body): Use build_call_expr.
12495         (lower_builtin_setjmp): Likewise.
12496
12497         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
12498         (set_storage_via_libcall): Likewise.
12499         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
12500         instead of TREE_CODE_LENGTH.
12501         (expand_expr_real_1): Use new CALL_EXPR accessors.
12502
12503         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
12504         generalize to handle any number of operands.
12505         (TB_parent_eq): Likewise.
12506
12507         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
12508         (strip_builtin_expect): Likewise.
12509
12510         * function.c (gimplify_parameters): Use build_call_expr.
12511
12512         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
12513         instead of TREE_CODE_LENGTH.
12514
12515         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
12516         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
12517
12518         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
12519         iterators.
12520
12521         * gimplify.c (build_stack_save_restore): Use build_call_expr.
12522         (gimplify_decl_expr): Likewise.
12523         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
12524         Use new CALL_EXPR iterators.
12525         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
12526         (gimplify_modify_expr_to_memset): Likewise.
12527         (gimplify_variable_sized_compare): Likewise.
12528         (gimplify_omp_atomic_fetch_op): Likewise.
12529         (gimplify_omp_atomic_pipeline): Likewise.
12530         (gimplify_omp_atomic_mutex): Likewise.
12531         (gimplify_function_tree): Likewise.
12532
12533         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
12534         (call_expr_flags): Likewise.
12535         (expand_call): Likewise.
12536
12537         * except.c (expand_builtin_eh_return_data_regno): Pass entire
12538         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12539         accessors.
12540
12541         * coverage.c (create_coverage): Use build_call_expr.
12542
12543         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
12544         (temp_call_expr_obstack): New.
12545         (pool_copy_list): Delete.
12546         (temp_copy_call_expr): New.
12547         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
12548         CALL_EXPR accessors.  Get rid of special goo for copying argument
12549         lists and use temp_copy_call_expr instead.
12550         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
12551         CALL_EXPR accessors.
12552         (create_expression_by_pieces): Likewise.  Use build_call_array
12553         to construct the result instead of fold_build3.
12554         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
12555         dealing with argument lists.
12556         (init_pre): Remove references to expression_node_pool and
12557         list_node_pool.  Init temp_call_expr_obstack instead.
12558         (fini_pre): Remove references to expression_node_pool and
12559         list_node_pool.
12560
12561         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
12562         and walk arguments explicitly instead of as a list.
12563
12564         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
12565         (mx_register_decls): Likewise.
12566         (mudflap_register_call): Likewise.
12567         (mudflap_finish_file): Likewise.
12568
12569         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
12570         (ipa_callsite_compute_param): Likewise.
12571
12572         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
12573         accessors and constructor.
12574
12575         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
12576         accessors and constructor.
12577         (convert_tramp_reference): Likewise.
12578         (convert_call_expr): Likewise.
12579         (finalize_nesting_tree_1): Likewise.
12580
12581         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
12582         accessors.
12583
12584         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
12585
12586         * tree-inline.c (initialize_inlined_parameters): Pass entire
12587         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12588         accessors.
12589         (estimate_num_insns_1): Use new CALL_EXPR accessors.
12590         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
12591
12592         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
12593         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12594         (vectorizable_reduction): Likewise.
12595         (vectorizable_call): Use new CALL_EXPR iterators.
12596         (vectorizable_conversion): Use build_call_expr.
12597         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
12598         (vect_gen_widened_results_half): Use build_call_expr.
12599         (vect_setup_realignment): Likewise.
12600         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
12601
12602         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
12603         (pass_through_call): Likewise.
12604         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
12605         fold_builtin.
12606
12607         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
12608         (tree_gen_pow2_profiler): Likewise.
12609         (tree_gen_one_value_profiler): Likewise.
12610         (tree_gen_ic_func_profiler): Likewise.
12611         (tree_gen_average_profiler): Likewise.
12612         (tree_gen_ior_profiler): Likewise.
12613
12614         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
12615         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
12616         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12617
12618         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
12619         of TREE_CODE_LENGTH.
12620
12621         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
12622         of TREE_CODE_LENGTH.
12623
12624         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
12625         constructor.
12626         (convert_to_integer): Likewise.
12627
12628         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
12629         accessors.
12630
12631 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12632             Brooks Moses  <brooks.moses@codesourcery.com>
12633             Lee Millward  <lee.millward@codesourcery.com>
12634
12635         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
12636         accessors.
12637         * config/frv/frv.c (frv_expand_builtin): Likewise.
12638         * config/s390/s390.c (s390_expand_builtin): Likewise.
12639
12640         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
12641         (sparc_expand_builtin): Use new CALL_EXPR accessors.
12642
12643         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
12644         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
12645         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
12646         (ix86_expand_store_builtin): Likewise.
12647         (ix86_expand_unop_builtin): Likewise.
12648         (ix86_expand_unop1_builtin): Likewise.
12649         (ix86_expand_sse_compare): Likewise.
12650         (ix86_expand_sse_comi): Likewise.
12651         (ix86_expand_vec_init_builtin): Likewise.
12652         (ix86_expand_vec_ext_builtin): Likewise.
12653         (ix86_expand_vec_set_builtin): Likewise.
12654         (ix86_expand_builtin): Use new CALL_EXPR accessors.
12655
12656         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
12657         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
12658
12659         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
12660         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12661         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
12662
12663         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
12664         build_call_expr.
12665         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
12666         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
12667         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12668         (altivec_expand_abs_builtin): Likewise.
12669         (rs6000_expand_binop_builtin): Likewise.
12670         (altivec_expand_predicate_builtin): Likewise.
12671         (altivec_expand_lv_builtin): Likewise.
12672         (spe_expand_stv_builtin): Likewise.
12673         (altivec_expand_stv_builtin): Likewise.
12674         (rs6000_expand_ternop_builtin): Likewise.
12675         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
12676         (altivec_expand_st_builtin): Likewise.
12677         (altivec_expand_dst_builtin): Likewise.
12678         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
12679         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12680         (altivec_expand_vec_set_builtin): Likewise.
12681         (altivec_expand_vec_ext_builtin): Likewise.
12682         (altivec_expand_builtin): Use new CALL_EXPR accessors.
12683         (spe_expand_builtin): Likewise.
12684         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
12685         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12686         (spe_expand_evsel_builtin): Likewise.
12687         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
12688         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
12689
12690         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
12691         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12692         (arm_expand_unop_builtin): Likewise.
12693         (arm_expand_builtin): Use new CALL_EXPR accessors.
12694
12695         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
12696         accessors.
12697
12698         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
12699         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12700         (bfin_expand_unop_builtin): Likewise.
12701         (bfin_expand_builtin): Use new CALL_EXPR accessors.
12702
12703 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12704             Brooks Moses  <brooks.moses@codesourcery.com>
12705             Lee Millward  <lee.millward@codesourcery.com>
12706
12707         * c-semantics.c (build_stmt): Add internal diagnostic check.
12708
12709         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
12710         accessors.  Print arguments explicitly instead of as a list.
12711
12712         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
12713
12714         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
12715         (c_finish_omp_flish): Likewise.
12716
12717         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
12718         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
12719         instead of TREE_CODE_LENGTH.
12720         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
12721         (c_warn_unused_result): Likewise.
12722
12723 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12724
12725         PR c/26494
12726         * doc/invoke.texi (Warning Options): Remove
12727         -Werror-implicit-function-declaration.
12728         (Wimplicit-function-declaration): Update description.
12729         * opts.c (common_handle_option): Move handling of -Werror=* to...
12730         (enable_warning_as_error): ...here.
12731         * opts.h (enable_warning_as_error): Declare.
12732         * c-decl.c (implicit_decl_warning): Unless
12733         -Wno-implicit-function-declaration is given, emit a pedwarn if
12734         -std=c99 or emit a warning if -Wimplicit-function-declaration.
12735         * c.opt (Wimplicit-function-declaration): Replace
12736         mesg_implicit_function_declaration with
12737         warn_implicit_function_declaration.
12738         * c-opts.c (c_common_handle_option):
12739         -Werror-implicit-function-declaration is exactly equal as
12740         -Werror=implicit-function-declaration.
12741         (set_Wimplicit): Replace mesg_implicit_function_declaration with
12742         warn_implicit_function_declaration.
12743         (c_common_post_options): -Wimplict-function-declaration is enabled
12744         by default by -std=c99, otherwise is disabled by default.
12745         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
12746
12747 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12748
12749         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
12750         DECL on the rhs to a DECL on the lhs for debug info purposes if the
12751         former is ignored but not the latter.
12752
12753 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12754
12755         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
12756         is made and the reference doesn't use the alias set of its type,
12757         do not create the temporary using that type.
12758
12759 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
12760
12761         * jump.c: Remove prototypes for delete_computation and
12762         delete_prior_computation.
12763
12764 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12765
12766         * jump.c (get_label_after): Delete.
12767         (get_label_before, delete_computation, delete_jump,
12768         delete_prior_computation, follow_jumps): Move...
12769         * reorg.c (delete_computation, delete_prior_computation): ... here...
12770         (get_label_before, delete_jump): ... making these static ...
12771         (follow_jumps): ... and simplifying this since it only runs after
12772         reload.
12773         * rtl.h (get_label_after, get_label_before, delete_jump,
12774         follow_jumps): Delete prototypes.
12775
12776 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12777
12778         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
12779
12780 2007-02-15  Nick Clifton  <nickc@redhat.com>
12781
12782         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
12783         order to prevent it from being munged by the target.
12784
12785 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
12786
12787         * config/i386/i386.md: Remove misleading comment.
12788
12789 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12790
12791         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
12792         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
12793         invalid patterns.
12794
12795 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12796
12797         * tree-sra.c (instantiate_missing_elements): Canonicalize
12798         bit-field types.
12799         (sra_build_assignment): New.
12800         (generate_copy_inout, generate_element_copy,
12801         generate_element_zero, generate_one_element_init): Use it.
12802
12803 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12804
12805         * tree-sra.c (instantiate_missing_elements): Canonicalize
12806         bit-field types.
12807         (sra_build_assignment): New.
12808         (generate_copy_inout, generate_element_copy,
12809         generate_element_zero, generate_one_element_init): Use it.
12810
12811 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12812
12813         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
12814         limbo die nodes.
12815
12816 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
12817
12818         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
12819         types as aggregates not scalars.
12820         * function.c (assign_stack_temp_for_type): Likewise.
12821
12822 2007-02-14  Roger Sayle  <roger@eyesopen.com>
12823             Zdenek Dvorak  <dvorakz@suse.cz>
12824
12825         * tree-dump.c (dump_switch_p_1): Require exact match of the option
12826         name.
12827
12828 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
12829
12830         * passes.c (next_pass_1): Clear the next field of the copied
12831         pass structure.
12832
12833 2007-02-14  Richard Henderson  <rth@redhat.com>
12834
12835         * tree-sra.c (early_sra): New.
12836         (decl_can_be_decomposed_p): Deny va_list if early_sra.
12837         (tree_sra_early, pass_sra_early): New.
12838         * tree-pass.h (pass_sra_early): Declare.
12839         * passes.c (init_optimization_passes): Use it.
12840
12841 2007-02-14  Richard Guenther  <rguenther@suse.de>
12842
12843         * flags.h (issue_strict_overflow_warning): Convert to a macro.
12844
12845 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
12846
12847          PR tree-optimization/30771
12848         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
12849         also phi nodes.
12850         (vect_analyze_operations): Induction phis can now be marked as
12851         used_in_loop.
12852         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
12853         Update documentation accordingly.
12854
12855 2007-02-14  Nick Clifton  <nickc@redhat.com>
12856
12857         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
12858         most 3 arguments are supported.
12859         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
12860
12861 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
12862
12863         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
12864         Ensure dst->current is valid.
12865
12866 2007-02-13  Paul Brook  <paul@codesourcery.com>
12867
12868         * config.gcc: Add arm*-*-uclinux-*eabi.
12869         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
12870         (SUBTARGET_EXTRA_LINK_SPEC): Define.
12871         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
12872         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
12873         (LINK_SPEC): Define.
12874         (LIB_SPEC): Define.
12875         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
12876         register.
12877         * config/arm/uclinux-eabi.h: New file.
12878         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
12879         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
12880         based targets.
12881
12882 2007-02-13  Ian Lance Taylor  <iant@google.com>
12883
12884         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
12885         * flags.h (warn_strict_overflow): Declare.
12886         (enum warn_strict_overflow_code): Define.
12887         (issue_strict_overflow_warning): New static inline function.
12888         * opts.c (warn_strict_overflow): New variable.
12889         (common_handle_option): Handle OPT_Wstrict_overflow and
12890         OPT_Wstrict_overflow_.
12891         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
12892         OPT_Wall.
12893         * fold-const.c: Include intl.h.
12894         (fold_deferring_overflow_warnings): New static variable.
12895         (fold_deferred_overflow_warning): New static variable.
12896         (fold_deferred_overflow_code): New static variable.
12897         (fold_defer_overflow_warnings): New function.
12898         (fold_undefer_overflow_warnings): New function.
12899         (fold_undefer_and_ignore_overflow_warnings): New function.
12900         (fold_deferring_overflow_warnings_p): New function.
12901         (fold_overflow_warning): New static function.
12902         (make_range): Add strict_overflow_p parameter.  Change all
12903         callers.
12904         (extract_muldiv, extract_muldiv_1): Likewise.
12905         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
12906         tree_expr_nonnegative_p.
12907         (fold_negate_expr): Call fold_overflow_warning.
12908         (fold_range_test): Likewise.
12909         (fold_comparison): Likewise.
12910         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
12911         instead of tree_expr_nonnegative_p.
12912         (tree_expr_nonnegative_warnv_p): Rename from
12913         tree_expr_nonnegative_p, add strict_overflow_p parameter.
12914         (tree_expr_nonnegative_p): New function.
12915         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
12916         strict_overflow_p parameter.
12917         (tree_expr_nonzero_p): New function.
12918         * passes.c (verify_interpass_invariants): New static function.
12919         (execute_one_pass): Call it.
12920         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
12921         warnings.
12922         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
12923         (estimate_numbers_of_iterations): Likewise.
12924         (scev_probably_wraps_p): Likewise.
12925         * tree-ssa-ccp.c: Include "toplev.h".
12926         (evaluate_stmt): Defer fold overflow warnings until we know we are
12927         going to optimize.
12928         (struct fold_stmt_r_data): Add stmt field.
12929         (fold_stmt_r): Defer fold overflow warnings until we know we
12930         optimized.
12931         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
12932         (fold_stmt_inplace): Likewise.
12933         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
12934         (cleanup_control_expr_graph): Defer fold overflow warnings until
12935         we know we are going to optimize.
12936         * tree-cfg.c (fold_cond_expr_cond): Likewise.
12937         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
12938         Likewise.
12939         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
12940         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
12941         * tree-ssa-loop-manip.c (create_iv): Likewise.
12942         * c-typeck.c (build_conditional_expr): Likewise.
12943         (build_binary_op): Likewise.
12944         * tree-vrp.c (vrp_expr_computes_nonzero): Call
12945         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
12946         (extract_range_from_unary_expr): Likewise.
12947         * simplify-rtx.c (simplify_const_relational_operation): Warn when
12948         assuming that signed overflow does not occur.
12949         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
12950         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
12951         (fold_defer_overflow_warnings): Declare.
12952         (fold_undefer_overflow_warnings): Declare.
12953         (fold_undefer_and_ignore_overflow_warnings): Declare.
12954         (fold_deferring_overflow_warnings_p): Declare.
12955         (tree_expr_nonzero_warnv_p): Declare.
12956         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
12957         of warning options.
12958         (Warning Options): Document -Wstrict-overflow.
12959         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
12960         (tree-ssa-ccp.o): Likewise.
12961         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
12962         (fold-const.o): Depend on intl.h.
12963
12964 2007-02-13  Ian Lance Taylor  <iant@google.com>
12965
12966         PR middle-end/30751
12967         * lower-subreg.c (resolve_simple_move): Decompose subregs in
12968         addresses.
12969
12970 2007-02-13  Stuart Hastings  <stuart@apple.com>
12971
12972         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
12973
12974 2007-02-13  Richard Henderson  <rth@redhat.com>
12975
12976         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
12977         handled_component_p before looking for the indirect_ref.
12978
12979 2007-02-13  Richard Henderson  <rth@redhat.com>
12980
12981         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
12982         remove flags clobber.
12983         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
12984         (bswaphi_lowpart): New.
12985         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
12986         remove TARGET_BSWAP test.  Delete expander of the same name.
12987
12988         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
12989         (expand_unop): Use them.
12990
12991 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
12992
12993         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
12994         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
12995         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
12996         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
12997         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
12998         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
12999         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
13000         assembler dialect choice from asm templates.
13001
13002 2007-02-12  Richard Henderson  <rth@redhat.com>
13003
13004         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
13005         (fixuns_trunc<SSEMODEF>si2): Use it.
13006         * config/i386/sse.md (vec_setv4sf_0): Export.
13007         * config/i386/i386.c (ix86_build_const_vector): Export.
13008         (ix86_split_convert_uns_si_sse): Rename from
13009         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
13010         * config/i386/i386-protos.h: Update.
13011
13012 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13013
13014         PR c/29521
13015         * c-typeck.c (c_finish_return): Improve warning message.
13016
13017 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13018
13019         * alias.c (find_symbolic_term): Delete unused function.
13020
13021 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
13022
13023         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
13024         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
13025         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
13026
13027 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
13028
13029         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
13030         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
13031         the function, temporarily point the debug interface to the null one.
13032
13033 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
13034
13035         * dwarf2out.c (round_up_to_align): New static function.
13036         (field_byte_offset): Use it to round the offset.
13037
13038 2007-02-12  Richard Henderson  <rth@redhat.com>
13039
13040         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
13041         (inswl_const): Export.
13042
13043 2007-02-12  Richard Henderson  <rth@redhat.com>
13044
13045         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
13046         result mode of the libcall, convert back to outmode.
13047
13048 2007-02-12  Roger Sayle  <roger@eyesopen.com>
13049
13050         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
13051         (bswapdi2): New define_expand to implement 32-bit implementation.
13052
13053 2007-02-12  Nick Clifton  <nickc@redhat.com>
13054
13055         * doc/invoke.texi (Overall Options): Document --help=.
13056         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
13057         (cc1_options): Pass --help= on to cc1.
13058         (display_help): Add description of --help=.
13059         (process_command): Add code to handle --help=.  Allow translated
13060         --help and --target-help switches to be passed on to compiler
13061         sub-process.
13062         (main): Remove unused if statement.
13063         * opts.c (columns): Remove.
13064         (LEFT_COLUMN): Define.
13065         (wrap_help): Add columns argument.
13066         (print_filtered_help): Change parameters to be an include bitmask,
13067         an exclude bitmask, an any bitmask and the column width.  Move the
13068         code to display the params list here.  Add code to display the
13069         status of options rather than their descriptions if the quiet flag
13070         is not active.
13071         (print_specific_help): Change parameters to be an include bitmask,
13072         an exclude bitmask and an any bitmask.  Move code to look up the
13073         column width here.  Decide upon the title for an options listing.
13074         (common_handle_options): Add code to handle --help=.  Adapt code
13075         for --help and --target-help to use the revised form of the
13076         print_specific_help function.
13077         (print_help): Delete.
13078         (print_param_help): Delete.
13079         (print_switch): Delete.
13080         * opts.h (cl_lang_count): Add prototype.
13081         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
13082         CL_MAX_OPTION_CLASS): New defines.
13083         * optc-gen.awk: Add construction of cl_lang_count.
13084         * c.opt: Add Warning attribute to warning options and Optimization
13085         attribute to optimization options.
13086         * common.opt: Likewise.
13087         Add --help=.
13088         Add -fhelp and -ftarget-help as aliases for the transformed --help
13089         and --target-help options.
13090         * opt-functions.awk: Add code to handle Warning and Optimization
13091         attributes.
13092
13093 2007-02-12  Richard Henderson  <rth@redhat.com>
13094
13095         * config/alpha/constraints.md: New file.
13096         * config/alpha/alpha.c: Include tm-constrs.h.
13097         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
13098         alpha_extra_constraint): Remove.
13099         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
13100         * config/alpha/alpha-protos.h: Update.
13101         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
13102         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
13103         (EXTRA_CONSTRAINT): Remove.
13104         * config/alpha/alpha.md: Include constraints.md.
13105         (adddi splitter): Use satisfies_constraint_*.
13106         * config/alpha/predicates.md (add_operand): Likewise.
13107         (sext_add_operand, addition_operation): Likewise.
13108
13109 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
13110
13111         PR tree-optimization/29145
13112         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
13113         in our handling of restrict qualified pointers.
13114
13115 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13116
13117         PR middle-end/7651
13118         * doc/invoke.texi (Wunused-value): Update description.
13119         (Wextra): Delete item.
13120         * opts.c (set_Wextra): Don't use the value of Wextra to set the
13121         value of Wunused-value.
13122         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
13123         (c_finish_stmt_expr): Don't check extra_warnings.
13124         (emit_side_effect_warnings): The caller is responsible to check
13125         warn_unused_value.
13126
13127 2007-02-11  Roger Sayle  <roger@eyesopen.com>
13128             Matt Thomas  <matt@3am-software.com>
13129
13130         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
13131
13132 2007-02-11  Roger Sayle  <roger@eyesopen.com>
13133
13134         * simplify-rtx.c (simplify_relational_operation_1): Optimize
13135         comparisons of POPCOUNT against zero.
13136         (simplify_const_relational_operation): Likewise.
13137
13138 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13139
13140         * doc/invoke.texi (Wextra): Delete outdated paragraph.
13141
13142 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13143
13144         * dwarf2out.c (root_type): Delete unused function.
13145
13146 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13147
13148         * genattrtab.c (contained_in_p): Delete unused function.
13149         (write_expr_attr_cache): Likewise.
13150
13151 2007-02-11  Jan Hubicka  <jh@suse.cz>
13152
13153         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
13154         previous patch.
13155
13156 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
13157
13158         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
13159         to add the REG_EQ* note.
13160         * see.c (see_merge_one_use_extension): Likewise.
13161         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
13162         turn REG_EQUAL notes into REG_EQUIV notes if the target
13163         register may have more than one set.
13164         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
13165         * gcse.c (try_replace_reg): Likewise.
13166         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
13167         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
13168         more than one REG_EQUIV note.
13169         * reload1.c (gen_reload): Use set_unique_reg_note.
13170
13171 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
13172
13173         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
13174         (ix86_builtin_conversion): New function.
13175
13176 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
13177
13178         PR target/29487
13179         * tree.h (DECL_REPLACEABLE_P): New macro.
13180         * except.c (set_nothrow_function_flags): Likewise.
13181
13182 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
13183             Ira Rosen  <irar@il.ibm.com>
13184             Dorit Nuzman  <dorit@il.ibm.com>
13185
13186         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
13187         * targhooks.c (default_builtin_vectorized_conversion): New.
13188         * targhooks.h (default_builtin_vectorized_function): New declaration.
13189         * target.h (struct vectorize): Add builtin_conversion field.
13190         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
13191         stmt_vec_info_type value.
13192         (vectorizable_conversion): New declaration.
13193         * tree-vect-analyze.c (vect_analyze_operations): Add
13194         vectorizable_conversion call.
13195         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
13196         * tree-vect-transform.c (vectorizable_conversion): New function.
13197         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
13198         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
13199         mode.
13200         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
13201         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
13202         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
13203         or ALTIVEC_BUILTIN_VCFSX.
13204
13205 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13206
13207         PR target/30634
13208         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
13209         CONST_DOUBLE and operand 0 is a hard register.
13210         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
13211         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
13212         is a hard floating-point register.
13213
13214 2007-02-10  Richard Henderson  <rth@redhat.com>
13215             Jakub Jelinek  <jakub@redhat.com>
13216             Alexandre Oliva  <aoliva@redhat.com>
13217
13218         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
13219         * builtin-types.def (BT_WORD): Make unsigned.
13220         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
13221         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
13222         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
13223         * c-decl.c (grokdeclarator): Don't error if !have_tls.
13224         * c-parser.c (c_parser_omp_threadprivate): Likewise.
13225         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
13226         emulated tls.
13227         * expr.c (emutls_var_address): New.
13228         (expand_expr_real_1): Expand emulated tls.
13229         (expand_expr_addr_expr_1): Likewise.
13230         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
13231         * output.h (emutls_finish): Declare.
13232         * toplev.c (compile_file): Call it.
13233         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
13234         address before wrapping in CONST.
13235         * varasm.c (emutls_htab, emutls_object_type): New.
13236         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
13237         (get_emutls_object_name, get_emutls_object_type): New.
13238         (get_emutls_init_templ_addr, emutls_decl): New.
13239         (emutls_common_1, emutls_finish): New.
13240         (assemble_variable): When emulating tls, swap decls; generate
13241         constructor for the emutls objects.
13242         (do_assemble_alias): When emulating tls, swap decl and target name.
13243         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
13244         for emulated tls.
13245         * varpool.c (decide_is_variable_needed): Look at force_output.
13246         Recurse for emulated tls.
13247         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
13248         with decide_is_variable_needed.
13249         * emutls.c: New file.
13250         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
13251         tls_object for real tls.
13252
13253 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13254
13255         PR rtl-optimization/29599
13256         * reload1.c (eliminate_regs_in_insn): Take the destination
13257         mode into account when computing the offset.
13258
13259 2007-02-09  Stuart Hastings  <stuart@apple.com>
13260             Richard Henderson  <rth@redhat.com>
13261
13262         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13263         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13264         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
13265         fixuns_truncdfhi2): New.
13266         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
13267         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
13268         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
13269         (floatunssidf2): Allow nonimmediate source.
13270         * config/i386/sse.md (movdi_to_sse): New.
13271         (vec_concatv2di): Drop '*'.
13272         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
13273         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13274         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
13275         New.
13276         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
13277         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13278         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
13279         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
13280         (ix86_build_signbit_mask): Fix decl of v, refactor to call
13281         ix86_build_const_vector.
13282         (x86_emit_floatuns): Rewrite.
13283
13284 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13285
13286         * genautomata.c (longest_path_length): Delete unused function.
13287         (struct state): Delete unused longest_path_length.
13288         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
13289         (get_free_state): Delete unused.
13290
13291 2007-02-09  Jan Hubicka  <jh@suse.cz>
13292
13293         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
13294         * doc/invoke.texi (inline-unit-growth): Update default value.
13295
13296         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
13297         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
13298         (rebuild_cgraph_edges): Likewise.
13299         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
13300         (dump_cgraph_node): Dump frequencies.
13301         (cgraph_clone_edge): Add frequency scales.
13302         (cgraph_clone_node): Add freuqnecy.
13303         * cgraph.h (cgraph_edge): Add freuqnecy argument.
13304         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
13305         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
13306         * tree-pass.h (TODO_rebuild_frequencies): New constant.
13307         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
13308         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
13309         (save_inline_function_body): Likewise.
13310         * ipa-inline.c: inluce rtl.h
13311         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
13312         (cgraph_edge_badness): Use frequencies.
13313         (cgraph_decide_recursive_inlining): Update clonning.
13314         (cgraph_decide_inlining_of_small_function): Dump frequency.
13315         * predict.c (estimate_bb_frequencies): Export.
13316         * predict.h (estimate_bb_frequencies): Declare.
13317         * tree-inline.c (copy_bb): Watch overflows.
13318         (expand_call_inline): Update call of cgraph_create_edge.
13319         (optimize_inline_calls): Use TODO flags to update frequnecies.
13320         * passes.h: Include predict.h
13321         (init_optimization_passes): Move profile ahead.
13322         (execute_function_todo): Handle TODO_rebuild_frequencies.
13323
13324 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13325
13326         * config/alpha/alpha.c (emit_insxl): Force the first operand of
13327         the insbl or inswl pattern into a register.
13328
13329 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13330
13331         * config/ia64/ia64.md (bswapdi2): New define_insn.
13332
13333 2007-02-09  Richard Henderson  <rth@redhat.com>
13334
13335         * config/i386/constraints.md (Ym): New constraint.
13336         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
13337         (movdi_1_rex64): Split sse and xmm general register moves from
13338         memory move alternatives.  Use conditional register constraints.
13339         (movsf_1, movdf_integer): Likewise.
13340         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
13341         (movdf_integer_rex64): New.
13342         (pushsf_rex64): Fix output constraints.
13343         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
13344         (sse2_stored): Likewise.
13345         (sse2_storeq_rex64): New.
13346         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
13347         amd and not generic.
13348         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
13349         for optimize_size.  Remove SF/DFmode hack.
13350
13351 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13352
13353         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
13354         (bit_SSE4a): New.
13355
13356 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
13357             Richard Sandiford  <richard@codesourcery.com>
13358
13359         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
13360         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
13361         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
13362         m68k/t-mlib to tmake_file.
13363         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
13364         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
13365         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
13366         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
13367         variable is not empty, add t-$m68k_arch_family to tmake_file.
13368         Add t-mlibs to tmake_file.
13369         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
13370         * config/m68k/t-cf: New file.
13371         * config/m68k/t-m68k: Likewise.
13372         * config/m68k/t-mlibs: Likewise.
13373         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13374         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13375         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13376         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13377         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
13378         Delete.
13379         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
13380         (INSTALL_LIBGCC): Delete.
13381         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13382         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13383         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13384         (M68K_MLIB_CPU): Define.
13385         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13386         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13387         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
13388
13389 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
13390             Richard Guenther  <rguenther@suse.de>
13391
13392         PR middle-end/23361
13393         * fold-const.c (fold_comparison): Handle obfuscated comparisons
13394         against INT_MIN/INT_MAX.
13395         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
13396         file if a loop is removed.
13397
13398 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
13399
13400         * calls.c (store_one_arg): Pass correct alignment to
13401         emit_push_insn for non-BLKmode values.
13402         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
13403         unaligned stack slot via a suitably aligned slot.
13404
13405 2007-02-08  DJ Delorie  <dj@redhat.com>
13406
13407         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
13408         warnings.
13409         (legal_subregs): Use unsigned char, make const.
13410         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
13411
13412 2007-02-08  Paul Brook  <paul@codesourcery.com>
13413
13414         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
13415         special interworking needed.
13416
13417 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
13418
13419         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
13420         conditional to __SSE2__.
13421         (Entries below should have been added to first ChangeLog
13422         entry for amdfam10 dated 2007-02-05)
13423         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
13424         defined.
13425         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
13426         defined.
13427         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
13428         defined.
13429
13430 2007-02-08  DJ Delorie  <dj@redhat.com>
13431
13432         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
13433         * config/m32c/m32c.c (legal_subregs): New.
13434         (m32c_illegal_subreg_p): New.
13435         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
13436         unsupported subregs of hard regs.
13437
13438 2007-02-08  Jan Hubicka  <jh@suse.cz>
13439
13440         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
13441         the same one; always update histograms.
13442
13443 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13444
13445         * passes.c (init_optimization_passes): Tidy comment.
13446
13447 2007-02-08  Roger Sayle  <roger@eyesopen.com>
13448
13449         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
13450         strip zero_extend, bswap and rotates from POCOUNT's argument.
13451         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
13452         zero_extend and rotates from PARITY's argument.
13453         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
13454         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
13455         of an integer constant at compile-time.
13456
13457 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13458
13459         PR 30562
13460         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
13461         Update all users.
13462         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
13463         users.
13464         (init_alias_info):
13465         * tree-ssa-live.c (remove_unused_locals): Do not remove
13466         TREE_ADDRESSABLE variables.
13467         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
13468         * tree-ssa-operands.c (add_virtual_operand): Remove argument
13469         FOR_CLOBBER.  Update all users.
13470         If VAR has an associated alias set, add a virtual operand for
13471         it if no alias is found to conflict with the memory reference.
13472
13473 2007-02-07  Jan Hubicka  <jh@suse.cz>
13474             Robert Kidd <rkidd@crhc.uiuc.edu>
13475
13476         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
13477
13478 2007-02-07  Ian Lance Taylor  <iant@google.com>
13479
13480         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
13481
13482 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13483
13484         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
13485         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
13486         tablejumpdi, movsi_to_cr_one): Remove constraints from
13487         define_expand's match_operands.
13488
13489 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13490
13491         * global.c (compute_regsets): Move declatation of "i" inside of
13492         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
13493
13494 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
13495
13496         PR c++/30703
13497         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
13498         of INDIRECT_REF <RESULT_DECL>.
13499
13500         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
13501
13502 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
13503             Kaz Kojima  <kkojima@gcc.gnu.org>
13504
13505         PR target/29746
13506         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
13507         properly.
13508         (sh_initialize_trampoline): Add parentheses to avoid a warning.
13509
13510 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
13511
13512         * doc/loop.texi: Document possibility not to perform disambiguation
13513         of loops with multiple latches.
13514         * cfgloopmanip.c (alp_enum_p): Removed.
13515         (add_loop): Handle subloops.  Use get_loop_body_with_size.
13516         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
13517         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
13518         the new forwarder block.
13519         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
13520         Handle the case latch is NULL.
13521         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
13522         when marking loop exits.
13523         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
13524         be modified.
13525         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
13526         disambiguate_loops_with_multiple_latches.
13527         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
13528         before fix_loop_structure.
13529         * cfgloop.c: Include pointer-set.h and output.h.
13530         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
13531         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
13532         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
13533         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
13534         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
13535         disambiguate_multiple_latches, get_loop_body_with_size,
13536         disambiguate_loops_with_multiple_latches): New functions.
13537         (flow_loop_dump): Dump multiple latch edges.
13538         (flow_loop_nodes_find): Handle loops with multiple latches.
13539         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
13540         (glb_enum_p): Modified.
13541         (get_loop_body): Use get_loop_body_with_size.
13542         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
13543         (AVOID_CFG_MODIFICATIONS): New constant.
13544         (disambiguate_loops_with_multiple_latches, add_loop,
13545         get_loop_body_with_size): Declare.
13546         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
13547
13548 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
13549
13550         PR inline-asm/28686
13551         * global.c (compute_regsets): New function.
13552         (global_alloc): Refactored ELIMINABLE_REGSET
13553         and NO_GLOBAL_ALLOC_REGS computation out.
13554         (rest_of_handle_global_alloc): Call compute_regsets()
13555         for non-optimizing case.
13556
13557 2007-02-06  Richard Henderson  <rth@redhat.com>
13558
13559         * config/i386/constraints.md (Y2): Rename from Y.
13560         (Yi): New constraint.
13561         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
13562         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
13563         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
13564         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
13565         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
13566         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
13567         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
13568         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
13569         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
13570         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
13571         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
13572         vec_extractv2si_1): Change Y constraints to Y2.
13573         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
13574         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
13575         Change Y constraints to Y2.
13576         (sse2_loadld): Change Y constraints to x.
13577
13578 2007-02-06  Roger Sayle  <roger@eyesopen.com>
13579
13580         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
13581         (parity<mode>2): New define_expand using rs6000_emit_parity.
13582         * config/rs6000/rs6000.c (rs6000_emit_popcount,
13583         rs6000_emit_parity): New functions.
13584         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
13585         rs6000_emit_parity): Prototype here.
13586
13587 2007-02-06  Ian Lance Taylor  <iant@google.com>
13588
13589         * lower-subreg.c (simple_move_operand): Reject CONST.
13590         (resolve_clobber): Call validate_change rather than directly
13591         assigning to XEXP (pat, 0).
13592
13593 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13594
13595         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
13596         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
13597         (tree-cfg.o): Remove hashtab.h dependency.
13598
13599         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
13600         (struct ivopts_data): Change niters to pointer_map_t.
13601         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
13602         (niter_for_exit): Create pointer_map on demand.  Change for
13603         pointer_map API.
13604         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
13605         (free_loop_data): Destroy data->niters if created and reset field.
13606         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
13607         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
13608
13609         * tree-ssa-reassoc.c: Include pointer-set.h.
13610         (bb_rank): Change to long *.
13611         (operand_rank): Change to pointer_map_t.
13612         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
13613         (insert_operand_rank): Accept long.
13614         (operand_entry_hash, operand_entry_eq): Remove.
13615         (get_rank): Return long.  Adjust for changes above.
13616         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
13617         and operand_rank.
13618         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
13619
13620         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
13621         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
13622         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
13623         is not NULL.
13624         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
13625         directly since it cannot be NULL.
13626         (get_vi_for_tree): Rewrite for pointer_map API.
13627         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
13628         (init_alias_vars): Create vi_for_tree as pointer_map.
13629         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
13630
13631         * tree-cfg.c: Don't include hashtab.h.
13632         (edge_to_cases): Declare as pointer_map.
13633         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
13634         Delete.
13635         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
13636         (start_recording_case_labels): Create edge_to_cases as pointer_map.
13637         (end_recoding_case_labels): Cleanup edge_to_cases manually before
13638         destroying it.
13639         (record_switch_edge): Delete.
13640         (get_cases_for_edge): Adjust for pointer_map API, inline
13641         record_switch_edge (rewritten for new API), remove goto.
13642
13643 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13644
13645         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
13646         * tree-nested.c: Include pointer-set.h.
13647         (var_map_elt, var_map_eq, var_map_hash): Delete.
13648         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
13649         to pointer_map_t's.
13650         (nesting_info_bitmap_obstack): New.
13651         (lookup_field_for_decl): Adjust for pointer_map API.
13652         (lookup_tramp_for_decl): Adjust for pointer_map API.
13653         (get_nonlocal_debug_decl): Adjust for pointer_map API.
13654         (get_local_debug_decl): Adjust for pointer_map API.
13655         (convert_nl_goto_reference): Adjust for pointer_map API.
13656         (convert_nl_goto_receiver): Adjust for pointer_map API.
13657         (create_nesting_tree): Create outside GGC space.  Create bitmap on
13658         the new obstack.  Create field_map and var_map as pointer_maps.
13659         (free_nesting_tree): Adjust for changes to create_nesting_tree.
13660         (root): Delete.
13661         (lower_nested_functions): Move root here, no need to NULL it.
13662         Initialize and release the obstack.
13663
13664 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
13665
13666         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
13667         Remove prototypes and make them non-static.
13668         (struct tree_int_map): Remove.
13669         * tree.h (struct tree_int_map): Move here, turning TO into an
13670         unsigned int.
13671         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
13672
13673         * tree.h (TREE_COMPLEXITY): Remove.
13674         (struct tree_exp): Remove complexity field.
13675         * tree.c (build1_stat): Don't set it.
13676
13677 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
13678             Victor Kaplansky  <victork@il.ibm.com>
13679
13680         * tree-vectorizer.c (vect_is_simple_use): Support induction.
13681         (vect_is_simple_reduction): Support reduction with induction as
13682         one of the operands.
13683         (vect_is_simple_iv_evolution): Fix formatting.
13684         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
13685         formatting.  Don't mark induction phis for vectorization.
13686         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
13687         * tree-vect-transform.c (get_initial_def_for_induction): New function.
13688         (vect_get_vec_def_for_operand): Support induction.
13689         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
13690         induction case.
13691         (vectorizable_reduction): Support reduction with induction as one of
13692         the operands.
13693         (vectorizable_type_demotion): Use def-type of stmt argument rather
13694         than dummy def-type.
13695
13696         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
13697         flag_tree_scev_cprop.
13698         * common.opt (tree-scev-cprop): New flag.
13699
13700         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
13701         call to vect_get_new_vect_var.
13702
13703 2007-02-06  Ira Rosen  <irar@il.ibm.com>
13704
13705         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
13706         vectype is not NULL.
13707         (vect_pattern_recog_1): Likewise.
13708
13709 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13710
13711         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
13712         (fold_negate_expr): Likewise.
13713
13714 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
13715
13716         PR debug/30189
13717         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
13718         even if cv-qualification is the same.
13719
13720 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
13721
13722         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
13723         __enable_execute_stack on completion.
13724
13725 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13726
13727         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
13728         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
13729         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
13730         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
13731         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
13732         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
13733         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
13734         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
13735
13736 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13737
13738         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
13739         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
13740         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
13741         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
13742         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
13743         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
13744         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
13745         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
13746         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
13747         umuldi3_highpart_rex64, umulsi3_highpart_insn,
13748         umulsi3_highpart_zext, smuldi3_highpart_rex64,
13749         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
13750         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
13751         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
13752         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
13753         sqrtextenddfxf2_i387): Added amdfam10_decode.
13754
13755         * config/i386/athlon.md (athlon_idirect_amdfam10,
13756         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
13757         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
13758         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
13759         athlon_ivector_store_amdfam10): New define_insn_reservation.
13760         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
13761         amdfam10.
13762
13763 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13764
13765         * config/i386/athlon.md (athlon_call_amdfam10,
13766         athlon_pop_amdfam10, athlon_lea_amdfam10): New
13767         define_insn_reservation.
13768         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
13769         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
13770         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
13771
13772 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13773
13774         * config/i386/athlon.md (athlon_sseld_amdfam10,
13775         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
13776         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
13777
13778 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13779
13780         * config/i386/athlon.md (athlon_sseins_amdfam10): New
13781         define_insn_reservation.
13782         * config/i386/i386.md (sseins): Added sseins to define_attr type
13783         and define_attr unit.
13784         * config/i386/sse.md: Set type attribute to sseins for insertq
13785         and insertqi.
13786
13787 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13788
13789         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
13790         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
13791         ssecomi_load_amdfam10, ssecomi_amdfam10,
13792         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
13793         define_insn_reservation.
13794         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
13795
13796 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13797
13798         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
13799         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
13800         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
13801         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
13802         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
13803         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
13804         define_insn_reservation.
13805
13806         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
13807         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
13808         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
13809         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
13810         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
13811
13812 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13813
13814         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
13815         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
13816         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
13817         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
13818         athlon_ssemul_load_k8): Added amdfam10.
13819
13820 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13821
13822         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
13823         (x86_sse_unaligned_move_optimal): New variable.
13824
13825         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
13826         m_AMDFAM10.
13827         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
13828         for unaligned vector SSE double/single precision loads for AMDFAM10.
13829
13830 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13831
13832         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
13833         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
13834         Define TARGET_CPU_DEFAULT_amdfam10.
13835         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
13836         (processor_type): Add PROCESSOR_AMDFAM10.
13837
13838         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
13839         processor_type in config/i386/i386.h.
13840         Enable imul peepholes for TARGET_AMDFAM10.
13841
13842         * config.gcc: Add support for --with-cpu option for amdfam10.
13843
13844         * config/i386/i386.c (amdfam10_cost): New variable.
13845         (m_AMDFAM10): New macro.
13846         (m_ATHLON_K8_AMDFAM10): New macro.
13847         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
13848         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
13849         x86_promote_QImode, x86_integer_DFmode_moves,
13850         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13851         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
13852         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
13853         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
13854         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
13855         Enable/disable for amdfam10.
13856         (override_options): Add amdfam10_cost to processor_target_table.
13857         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
13858         processor_alias_table.
13859         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
13860         (ix86_adjust_cost): Add code for amdfam10.
13861
13862 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13863
13864         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
13865         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
13866         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
13867         * config/i386/i386.h: Add builtin definition for SSE4A.
13868         * config/i386/i386.md: Add support for ABM instructions
13869         (popcnt and lzcnt).
13870         * config/i386/sse.md: Add support for SSE4A instructions
13871         (movntss, movntsd, extrq, insertq).
13872         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
13873         Add -march=amdfam10 flag.
13874         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
13875         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
13876         and amdfam10.
13877         * doc/extend.texi: Add documentation for SSE4A builtins.
13878
13879 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
13880
13881         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
13882
13883 2007-02-05  Richard Guenther  <rguenther@suse.de>
13884
13885         * tree-vectorizer.h (vectorizable_function): Add argument type
13886         argument, change return type.
13887         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
13888         * tree-vect-transform.c (vectorizable_function): Handle extra
13889         argument, return vectorized function decl.
13890         (build_vectorized_function_call): Remove.
13891         (vectorizable_call): Handle calls with result and argument types
13892         differing.  Handle loop vectorization factor correctly.
13893         * targhooks.c (default_builtin_vectorized_function): Adjust for
13894         extra argument.
13895         * targhooks.h (default_builtin_vectorized_function): Likewise.
13896         * target.h (builtin_vectorized_function): Add argument type
13897         argument.
13898         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
13899         extra argument, allow vectorizing of lrintf.
13900         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
13901         documentation of target hook.
13902
13903 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
13904
13905         PR target/30665
13906         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
13907         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
13908         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
13909
13910 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13911
13912         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
13913         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
13914         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
13915         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
13916         before canonicalizing sincos to cexpi.
13917         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
13918
13919 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13920
13921         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
13922         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
13923         (alpha_init_builtins): Use alpha_add_builtins to process tables.
13924
13925 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13926
13927         * mips-tfile.c (initialize_init_file): Correct endianness test.
13928
13929 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
13930
13931         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
13932         the 'y' constraint.
13933
13934 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13935
13936         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
13937         saves in a PARALLEL before the register assignments.
13938
13939 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13940
13941         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
13942         DWARF_FRAME_RETURN_COLUMN to be a general register.
13943         * dwarf2out.c (init_return_column_size): New function, split from...
13944         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
13945         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
13946         to be nongeneral registers.
13947         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
13948         integer registers.
13949         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
13950         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
13951
13952 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
13953
13954         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
13955
13956 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
13957
13958         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
13959         (remove_path): Use can_remove_branch_p and remove_branch instead
13960         of loop_delete_branch_edge.
13961         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
13962         (tree_transform_and_unroll_loop): Remove dead branches immediately.
13963         Update profile using scale_dominated_blocks_in_loop.
13964         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
13965         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
13966         (can_remove_branch_p, remove_branch): Declare.
13967         * tree-cfg.c (tree_can_remove_branch_p): New function.
13968         (tree_cfg_hooks): Add tree_can_remove_branch_p.
13969         * cfgrtl.c (rtl_can_remove_branch_p): New function.
13970         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
13971
13972 2007-02-05  Jan Hubicka  <jh@suse.cz>
13973
13974         PR middle-end/30696
13975         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
13976         nodes in cgraph, don't remove offline copy of the function.
13977
13978 2007-02-04  Jan Hubicka  <jh@suse.cz>
13979
13980         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
13981         vectors might cause maybe_lookup_element_for_expr to be called
13982         on non-sra-candidate.
13983
13984 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13985
13986         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
13987         config/bfin/bfin.md, config/bfin/predicates.md: Follow
13988         spelling conventions.
13989
13990 2007-02-04  Richard Guenther  <rguenther@suse.de>
13991
13992         PR middle-end/30636
13993         * fold-const.c (try_move_mult_to_index): Make sure to not
13994         overflow one dimension of a multi-dimensional array access.
13995
13996 2007-02-04  Jan Hubicka  <jh@suse.cz>
13997
13998         * passes.c (init_optimization_passes): Reindent.
13999
14000 2007-02-04  Jan Hubicka  <jh@suse.cz>
14001             Eric Botcazou  <ebotcazou@adacore.com>
14002
14003         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
14004         (execute_fixup_cfg): Break out the abnormal goto code.
14005         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
14006         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
14007         (optimize_inline_calls): Call make_nonlocal_label_edges.
14008
14009 2007-02-04  Jan Hubicka  <jh@suse.cz>
14010
14011         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
14012         true when something was changed.
14013         (rename_ssa_copies): When something was changed, do
14014         TODO_remove_unused_locals.
14015         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
14016         add TODO_remove_unused_locals when instruction was removed.
14017
14018 2007-02-04  Jan Hubicka  <jh@suse.cz>
14019
14020         * ipa-inline.c (try_inline): Improve debug output; work on already
14021         inline edges too.
14022         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
14023         call try_inline for already inlined edges too when flattening;
14024         inline also functions that make callee growth but overall unit size
14025         reduce.
14026
14027 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14028
14029         * config/m32c/bitops.md, config/m32c/jump.md,
14030         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
14031         config/m32r/m32r.h, config/m32r/m32r.md,
14032         config/m32r/predicates.md, config/m68hc11/larith.asm,
14033         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
14034         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
14035         config/mips/mips-protos.h, config/mips/mips.c,
14036         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
14037         config/mn10300/mn10300.h, config/mn10300/predicates.md,
14038         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
14039         spelling conventions.
14040
14041         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
14042         Follow spelling conventions.
14043
14044 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
14045
14046         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
14047         warn about C++0x compatibility.
14048
14049 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
14050
14051         * config/h8300/h8300.c, config/h8300/h8300.h,
14052         config/h8300/h8300.md: Follow spelling conventions.
14053
14054 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
14055
14056         PR middle-end/30667
14057         * combine.c (try_combine): Do not substitute source operand
14058         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
14059
14060 2007-02-03  Jan Hubicka  <jh@suse.cz>
14061
14062         PR gcov-profile/30650
14063         * value-prof.c (stringop_block_profile): Fix handling of size counter;
14064         do not divide by zero for never executed counters.
14065         (tree_find_values_to_profile): Fix counters.
14066         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
14067
14068 2007-02-03  Ian Lance Taylor  <iant@google.com>
14069
14070         * lower-subreg.c (simple_move_operand): New static function,
14071         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
14072         operands.
14073         (simple_move): Call simple_move_operand.
14074         (find_decomposable_subregs): Add special handling of MEMs.
14075         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
14076         meaning of return value.  If we see a hard register, test whether
14077         it can store a word_mode value.  Change all callers.
14078
14079 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14080
14081         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
14082         ftrapv insns and expanders.
14083         (subdi3): Change define_expand operand 1 to arith11_operand, and
14084         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
14085         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
14086         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
14087         respectively.
14088
14089         PR middle-end/30174
14090         * varasm.c (notice_global_symbol): Treat global objects as weak when
14091         flag_shlib is true.
14092
14093 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14094
14095         * emit-rtl.c (dconstpi): Delete.
14096         (dconstsqrt2): New.
14097         (init_emit_once): Delete dconstpi and init dconstsqrt2.
14098         * real.h (dconstpi): Delete.
14099         (dconstsqrt2): New.
14100         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
14101         (fold_builtin_hypot): Likewise.
14102
14103 2007-02-03  Tom Tromey  <tromey@redhat.com>
14104
14105         PR driver/30246
14106         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
14107         -gcoff3, -gxcoff3, -gvms3 implies -dD.
14108
14109 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
14110
14111         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
14112         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
14113         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
14114         config/rs6000/cell.md, config/rs6000/darwin.h,
14115         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
14116         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
14117         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
14118         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
14119         typos.  Follow spelling conventions.
14120         * doc/invoke.texi: Follow spelling conventions.
14121
14122 2007-02-03  Roger Sayle  <roger@eyesopen.com>
14123
14124         * simplify-rtx.c (simplify_relational_operation_1): Implement some
14125         canonicalization transformations that attempt to simplify integer
14126         constant comparisons to become comparisons against zero.
14127
14128 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14129
14130         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
14131         fabs(x)*sqrt(2).
14132         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
14133         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
14134
14135 2007-02-02  Mike Stump  <mrs@apple.com>
14136
14137         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
14138         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
14139         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
14140         generate a branch island.
14141
14142 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
14143
14144         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
14145         (xtensa_legitimate_address_p): New.
14146         (xtensa_legitimize_address): New.
14147         (xtensa_output_addr_const_extra): New.
14148         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
14149         (BASE_REG_P): New.
14150         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
14151         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
14152         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
14153         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
14154         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
14155         (xtensa_legitimize_address): New.
14156         (xtensa_output_addr_const_extra): New.
14157
14158 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
14159
14160         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
14161
14162 2007-02-02  Ian Lance Taylor  <iant@google.com>
14163
14164         * expmed.c (expand_divmod): Add comment.
14165
14166 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
14167
14168         * emit-rtl.c (renumber_insns): Remove.
14169         * flags.h: Remove the extern for flag_renumber_insns.
14170         * rtl.h: Remove the prototype for renumber_insns.
14171         * toplev.c (flag_renumber_insns): Remove.
14172
14173 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
14174
14175         Revert for x86 darwin:
14176         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
14177
14178         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
14179         code before the following patch under TARGET_MACHO.
14180         (ix86_function_value_regno_p): Likewise.
14181
14182 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14183
14184         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
14185         COMPLEX_EXPR.
14186
14187 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14188
14189         PR target/29682
14190         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
14191         general or fp registers.  Add comments.
14192         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
14193
14194 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
14195
14196         * pointer-set.c (insert_aux): Only return insertion slot.
14197         (pointer_set_insert): Adjust.
14198         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
14199         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
14200         pointer_map_traverse): New.
14201         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
14202         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
14203         pointer_map_contains, pointer_map_traverse): Declare.
14204
14205 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
14206
14207         PR middle-end/30473
14208         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
14209         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
14210
14211 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14212
14213         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
14214
14215         (struct _dep): New type.
14216         (dep_t): New typedef.
14217         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
14218         (DEP_STATUS): New access macro.  The macro with the same name was
14219         renamed to DEP_LINK_STATUS.
14220         (dep_init): Declare function
14221
14222         (struct _dep_link): New type.
14223         (dep_link_t): New typedef.
14224         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
14225         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
14226         (DEP_LINK_STATUS): New macro.
14227         (debug_dep_links): New debug function.
14228
14229         (struct _deps_list): New type.
14230         (deps_list_t): New typedef.
14231         (DEPS_LIST_FIRST): New access macro.
14232         (FOR_EACH_DEP_LINK): New cycle macro.
14233         (create_deps_list, free_deps_list, delete_deps_list): Declare
14234         functions.
14235         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
14236         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
14237         (copy_deps_list_change_con): Ditto.
14238
14239         (move_dep_link): Declare function.
14240
14241         (struct _dep_node): New type.
14242         (dep_node_t): New typedef.
14243         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
14244
14245         (struct haifa_insn_data.back_deps): New field to hold backward
14246         dependencies of the insn.
14247         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
14248         to deps_list_t.
14249         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
14250         Change its type to deps_list_t.
14251         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
14252         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
14253         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
14254
14255         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
14256
14257         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
14258
14259         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
14260         all callers.
14261         (dep_cost): Declare.
14262
14263         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
14264         (ds_to_dk, dk_to_ds): New functions.
14265
14266         (init_dep_1): New static function.
14267         (init_dep): New function.
14268         (copy_dep): New static function.
14269
14270         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
14271         functions.
14272         (detach_dep_link): New static function.
14273         (move_dep_link): New function.
14274
14275         (dep_links_consistent_p, dump_dep_links): New static functions.
14276         (debug_dep_links): New debugging function.
14277
14278         (deps_obstack, dl_obstack, dn_obstack): New static variables.
14279
14280         (alloc_deps_list, init_deps_list): New static functions.
14281         (create_deps_list): New function.
14282         (clear_deps_list): New static function.
14283         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
14284         (deps_list_consistent_p, dump_deps_list): New static functions.
14285         (debug_deps_list): New function.
14286         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
14287         functions.
14288         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
14289
14290         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
14291         use new scheduler dependencies lists.
14292         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
14293         (sched_analyze): Ditto.  Initialize dependencies lists.
14294         (add_forw_dep, compute_forward_dependences): Update to use new
14295         scheduler dependencies lists.
14296
14297         (init_dependency_caches): Init deps_obstack.
14298         (free_dependency_caches): Free deps_obstack.
14299
14300         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
14301         new scheduler dependencies lists.
14302         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
14303         (add_back_forw_dep, delete_back_forw_dep): Ditto.
14304
14305         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
14306         Update to use new scheduler dependencies lists.
14307         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
14308         (debug_dependencies): Ditto.
14309         (schedule_region): Update comments.
14310
14311         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
14312         scheduler dependencies lists.
14313         (schedule_ebb): Update comments.
14314
14315         * rtl.def (DEPS_LIST): Remove.
14316
14317         * lists.c (unused_deps_list): Remove.
14318         (free_list): Update assertions.
14319
14320         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
14321         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14322
14323         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
14324         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14325
14326         * haifa-sched.c (comments): Update.
14327         (insn_cost1): Remove.  Inline the code into insn_cost ().
14328         (insn_cost): Update to use new scheduler dependencies lists.  Move
14329         processing of the dependency cost to dep_cost ().
14330         (dep_cost): New function.  Use it instead of insn_cost () when
14331         evaluating cost of the dependency.  Use compatible interface to
14332         interact with the target.
14333         (priority): Update to use new scheduler dependencies lists.
14334         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
14335         with greater number of insns that depend on the insn.
14336         (schedule_insn): Update to use new scheduler dependencies lists.  Add
14337         code to free backward dependencies lists.  Inline and optimize code
14338         from resolve_dep () - see PR28071.
14339         (ok_for_early_queue_removal): Update to use new scheduler dependencies
14340         lists.  Update call to targetm.sched.is_costly_dependence hook.
14341
14342         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
14343         scheduler dependencies lists.
14344
14345         (resolve_dep): Remove.  Move the logic to schedule_insn ().
14346         (init_h_i_d): Initialize dependencies lists.
14347
14348         (process_insn_depend_be_in_spec): Rename to
14349         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
14350         dependencies lists.
14351         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
14352         Update to use new scheduler dependencies lists.
14353         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
14354
14355         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
14356         new scheduler dependencies lists.
14357         (build_intra_loop_deps): Ditto.
14358
14359         * target.h (struct _dep): Declare to use in
14360         gcc_target.sched.is_costly_dependence.
14361         (struct gcc_target.sched.adjust_cost): Fix typo.
14362         (struct gcc_target.sched.is_costly_dependence): Change signature to use
14363         single dep_t parameter instead of an equivalent triad.
14364         (struct gcc_target.sched.adjust_cost_2): Remove.
14365
14366         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
14367
14368         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
14369
14370         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
14371         documentation.
14372         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
14373
14374         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
14375         (REG_DEP_TRUE): Document.
14376
14377         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
14378         Change signature to correspond to the targetm.sched.adjust_cost hook.
14379         Update use in TARGET_SCHED_ADJUST_COST_2.
14380         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
14381         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
14382         new scheduler dependencies lists.
14383         (ia64_gen_check): Ditto.
14384
14385         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
14386         dependencies lists.
14387
14388         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
14389         signature to correspond to the targetm.sched.is_costly_dependence hook.
14390         (is_costly_group): Update to use new scheduler dependencies lists.
14391
14392         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
14393         instead of INSN_COST () macro.
14394
14395 2007-02-01  Ian Lance Taylor  <iant@google.com>
14396
14397         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
14398
14399 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
14400
14401         * pa.md (tp_load): Correct mfctl instruction syntax.
14402
14403 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
14404
14405         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
14406         altivec_padding_size calculation on AIX.  Improve comment, add
14407         assert to verify that it's right.
14408
14409         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
14410         64-bit.
14411
14412 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
14413
14414         PR inline-asm/28686
14415         * global.c (global_alloc): Add mising initialization of
14416         ELIMINABLE_REGSET.
14417
14418 2007-02-01  Roger Sayle  <roger@eyesopen.com>
14419
14420         * alias.c (init_alias_analysis): Correct whitespace.
14421         * bb-reorder.c (fix_edges_for_rarely_executed_code,
14422         partition_hot_cold_basic_blocks): Likewise.
14423         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
14424         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
14425         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
14426         fold_builtin_snprintf_chk, fold_builtin_printf,
14427         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
14428         do_mpfr_arg3, do_mpfr_sincos): Likewise.
14429         * cfgcleanup.c (cleanup_cfg): Likewise.
14430         * cfgexpand.c (tree_expand_cfg): Likewise.
14431         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
14432         * function.c (get_next_funcdef_no): Likewise.
14433         * gengtype.c (main): Likewise.
14434         * genmodes.c (main): Likewise.
14435         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
14436         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
14437         * ifcvt.c (noce_emit_move_insn): Likewise.
14438         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
14439         Likewise.
14440         * stor-layout.c (get_best_mode): Likewise.
14441         * tree-ssa-loop-niter.c (get_val_for): Likewise.
14442         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
14443         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
14444         perform_var_substitution, solve_graph): Likewise.
14445         * tree-vrp.c (vrp_finalize): Likewise.
14446
14447 2007-02-01  Ian Lance Taylor  <iant@google.com>
14448
14449         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
14450         high part of a paradoxical subreg, return a constant zero.
14451
14452 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
14453
14454         * toplev.c (lang_dependent_init): Call init_set_costs.
14455         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
14456
14457 2007-02-01  Richard Guenther  <rguenther@suse.de>
14458
14459         PR middle-end/30656
14460         * fold-const.c (fold_negate_expr): Allow negating a
14461         constant if overflow does not change.
14462
14463 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14464
14465         * doc/c-tree.texi (Expression trees): Improve markup.
14466         * doc/tm.texi (Register Classes, Addressing Modes)
14467         (Floating Point): Fix spacing after abbreviations.  Fix some
14468         typos.
14469
14470 2007-02-01  Ben Elliston  <bje@au.ibm.com>
14471
14472         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
14473         * doc/contrib.texi: Likewise.
14474         * doc/install.texi: Likewise.
14475
14476 2007-01-31  Richard Henderson  <rth@redhat.com>
14477             Ian Lance Taylor  <iant@google.com>
14478
14479         * lower-subreg.c: New file.
14480         * rtl.def (CONCATN): Define.
14481         * passes.c (init_optimization_passes): Add pass_lower_subreg and
14482         pass_lower_subreg2.
14483         * emit-rtl.c (update_reg_offset): New static function, broken out
14484         of gen_rtx_REG_offset.
14485         (gen_rtx_REG_offset): Call update_reg_offset.
14486         (gen_reg_rtx_offset): New function.
14487         * regclass.c: Revert patch of 2006-03-05, restoring
14488         reg_scan_update.
14489         (clear_reg_info_regno): New function.
14490         * dwarf2out.c (concatn_loc_descriptor): New static function.
14491         (loc_descriptor): Handle CONCATN.
14492         * common.opt (fsplit_wide_types): New option.
14493         * opts.c (decode_options): Set flag_split_wide_types when
14494         optimizing.
14495         * timevar.def (TV_LOWER_SUBREG): Define.
14496         * rtl.h (gen_reg_rtx_offset): Declare.
14497         (reg_scan_update): Declare.
14498         * regs.h (clear_reg_info_regno): Declare.
14499         * tree-pass.h (pass_lower_subreg): Declare.
14500         (pass_lower_subreg2): Declare.
14501         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
14502         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
14503         -fsplit-wide-types.
14504         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
14505         * Makefile.in (OBJS-common): Add lower-subreg.o.
14506         (lower-subreg.o): New target.
14507
14508 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14509
14510         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
14511
14512 2007-01-31  Anatoly Sokolov <aesok@post.ru>
14513
14514         PR target/19087
14515         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
14516
14517 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14518
14519         PR middle-end/29335
14520         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
14521
14522 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
14523
14524         * cfgloop.h: Include vec-prim.h.
14525         (enum li_flags): Remove LI_ONLY_OLD.
14526         (loop_iterator): Changed.
14527         (fel_next, fel_init): Iterate over loop tree.
14528         (FOR_EACH_LOOP_BREAK): New macro.
14529         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
14530         FOR_EACH_LOOP.
14531         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
14532         * modulo-sched.c (sms_schedule): Ditto.
14533         * tree-vectorizer.c (vectorize_loops): Ditto.
14534         * doc/loop.texi: Update information on loop numbering and behavior of
14535         FOR_EACH_LOOP wrto new loops.
14536         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
14537         add_to_evolution_1): Test nestedness of loops instead of comparing
14538         their numbers.
14539         * tree-chrec.c (chrec_fold_plus_poly_poly,
14540         chrec_fold_multiply_poly_poly, chrec_evaluate,
14541         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
14542         reset_evolution_in_loop): Ditto.
14543         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
14544
14545 2007-01-31  Dirk Mueller  <dmueller@suse.de>
14546
14547         * c-common.c (warn_about_parentheses): Separate warning about
14548         un-parenthized sequence of comparison operators from the one
14549         which is supposed to warn about x <= y <= z.
14550
14551 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
14552
14553         * optabs.h (enum optab_index): Add new OTI_isinf.
14554         (isinf_optab): Define corresponding macro.
14555         * optabs.c (init_optabs): Initialize isinf_optab.
14556         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
14557         patterns.
14558         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
14559         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
14560         using isinf_optab.
14561         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
14562         expand_builtin_interclass_mathfn.
14563         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
14564         * config/i386/i386.md (UNSPEC_FXAM): New constant.
14565         (fxam<mode>2_i387): New insn pattern.
14566         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
14567         built-in functions as x87 inline asm.
14568
14569 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14570
14571         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
14572
14573 2007-01-30  Eric Christopher  <echristo@apple.com>
14574
14575         * config.gcc: Add geode.
14576
14577 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14578
14579         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
14580         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
14581         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
14582         value-prof.c: Fix comment typos.
14583
14584 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14585
14586         PR c++/24745
14587         * doc/invoke.texi (Wpointer-arith): Document warning.
14588
14589 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
14590
14591         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
14592         the list of discrepancies from the draft TR.
14593
14594 2007-01-30  Dirk Mueller  <dmueller@suse.de>
14595
14596         PR c++/30601
14597         * doc/invoke.texi (-Wreturn-type): Update description to
14598         match new behavior.
14599
14600 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
14601
14602         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
14603
14604 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
14605
14606         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
14607         to handle optabs that operate on floating point input argument and
14608         output to integer output.
14609         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
14610         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
14611         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
14612         expand_builtin_interclass_mathfn ().
14613         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
14614         (ilogbsi2): Remove.
14615         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
14616         ilogbl built-in functions as x87 intrinsics.
14617
14618 2007-01-30  Richard Guenther  <rguenther@suse.de>
14619
14620         PR middle-end/27657
14621         * dwarf2out.c (reference_to_unused): Query varpool if the
14622         variable was output.
14623
14624 2007-01-30  Richard Guenther  <rguenther@suse.de>
14625
14626         PR middle-end/30313
14627         * passes.c (execute_one_pass): Reset in_gimple_form to not
14628         confuse non-unit-at-a-time mode.
14629
14630 2007-01-29  Roger Sayle  <roger@eyesopen.com>
14631             Richard Guenther  <rguenther@suse.de>
14632
14633         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
14634         avoid undefined behaviour on overflow.  Use force_fit_type_double
14635         to construct the constant with the specified TREE_OVERFLOW.
14636
14637 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14638
14639         * config/dfp-bit.c: Add parameterized support for fp exceptions.
14640         * config/dfp-bit.h: Ditto.
14641
14642 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14643
14644         * c-decl.c (pop_scope): Replace warnings with call to
14645         warn_for_unused_label.
14646         * c-common.h (warn_for_unused_label): Declare.
14647         * c-common.c (warn_for_unused_label): Define.
14648
14649 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14650
14651         * tree-optimize.c (update_inlined_to_pointers): Delete unused
14652         function.
14653
14654 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14655
14656         * Makefile.in (USER_H): Remove decfloat.h.
14657         * ginclude/decfloat.h: Delete, moving contents to ...
14658         * ginclude/float.h: Add support for decimal floating point,
14659         guarded by __STDC_WANT_DEC_FP__.
14660
14661 2007-01-29  Mike Stump  <mrs@apple.com>
14662
14663         * doc/gccint.texi (Top): Rename Loop Representation to Loop
14664         Analysis and Representation to resolve case insensitive conflict.
14665         * doc/loop.texi (Loop Analysis and Representation): Likewise.
14666
14667 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
14668
14669         * tree.h (struct tree_memory_tag): Add aliases member.
14670         (MTAG_ALIASES): New macro.
14671         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
14672         (add_may_alias): Remove pointer-set. Update for may_aliases being
14673         a bitmap.
14674         (mark_aliases_call_clobbered): Update for may_aliases being a
14675         bitmap.
14676         (compute_tag_properties): Ditto.
14677         (create_partition_for): Ditto.
14678         (compute_memory_partitions): Ditto.
14679         (dump_may_aliases_for): Ditto.
14680         (is_aliased_with): Ditto.
14681         (add_may_alias_for_new_tag): Ditto.
14682         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
14683         (compute_is_aliased): New function.
14684         (compute_may_aliases): Call compute_is_aliased).
14685         (init_alias_info): Initialize alias_bitmap_obstack.
14686         (union_alias_set_into): New function.
14687         (compute_flow_sensitive_aliasing): Use union_aliases_into.
14688         (have_common_aliases_p): Rewrite to take two bitmaps and use
14689         intersection.
14690         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
14691         Update for bitmaps.
14692         (finalize_ref_all_pointers): Update for add_may_alias changes.
14693         (new_type_alias): Ditto.
14694         * tree-flow-inline.h (may_aliases): Return a bitmap.
14695         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
14696         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
14697         may_aliases being a bitmap.
14698         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
14699         may_aliases now returns a bitmap.
14700         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
14701         being a bitmap.
14702         * tree-ssa-operands.c (add_virtual_operand): Update for
14703         may_aliases being a bitmap.
14704
14705 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
14706
14707         PR tree-optimization/30630
14708         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
14709         variable as changed.
14710
14711 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
14712
14713         PR c++/28266
14714         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
14715         expanded only once even if an error occurs.
14716
14717 2007-01-29  Ben Elliston  <bje@au.ibm.com>
14718
14719         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
14720         (__gcov_average_profiler): Likewise.
14721         (__gcov_ior_profiler): Likewise.
14722         (__gcov_merge_ior): Likewise.
14723
14724 2007-01-28  Jan Hubicka  <jh@suse.cz>
14725
14726         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
14727         * value-prof.c (stringop_block_profile): Likewise.
14728
14729 2007-01-28  Jan Hubicka  <jh@suse.cz>
14730
14731         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
14732         variant handling histograms; add wrapper.
14733         (clear_storage_via_libcall): Export.
14734         (emit_block_move_hints): Break out from ...; add histograms.
14735         (emit_block_move): ... this one.
14736         (clear_storage_hints): Break out from ...; add histograms.
14737         (clear_storage): ... this one.
14738         (set_storage_via_memset): Handle histogram.
14739         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
14740         (clear_storage_hints, clear_storage_via_libcall): Declare.
14741         (set_storage_via_setmem): Update prototype.
14742         * doc/md.texi (movmem, setmem): Document new arguments.
14743
14744         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
14745         new histograms.
14746         (stringop_block_profile): New global function.
14747         (tree_stringops_values_to_profile): Profile block size and alignment.
14748         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
14749         HIST_TYPE_IOR.
14750         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
14751         (stringop_block_profile): Declare.
14752         * builtins.c: Include value-prof.h.
14753         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
14754         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
14755         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
14756         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
14757         * profile.c (instrument_values): Add new counters.
14758         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
14759         calls.
14760         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
14761         (tree_init_edge_profiler): Build new profilers.
14762         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
14763         (pass_tree_profile): Add dump.
14764         (tree_profile_hooks): Update.
14765         * Makefile.in (LIBGCOV): Add new constants.
14766         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
14767         __gcov_ior_profiler): New.
14768         * i386.md (movmem/setmem expanders): Add new optional arguments.
14769
14770 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
14771
14772         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
14773
14774 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14775
14776         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
14777         (tree_unswitch_single_loop): Pass eni_size_weights to
14778         tree_num_loop_insns.
14779         * tree-ssa-loop-manip.c: Include tree-inline.h.
14780         (can_unroll_loop_p): Pass eni_size_weights to
14781         tree_num_loop_insns.
14782         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
14783         Pass eni_size_weights to estimate_num_insns.
14784         * tree.h (init_inline_once): Export.
14785         * toplev.c (backend_init): Call init_inline_once.
14786         * cgraphunit.c (cgraph_process_new_functions,
14787         cgraph_analyze_function): Pass eni_inlining_weights to
14788         estimate_num_insns.
14789         * ipa-inline.c (compute_inline_parameters): Ditto.
14790         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
14791         to estimate_num_insns.
14792         (try_unroll_loop_completely): Pass eni_size_weights to
14793         tree_num_loop_insns.
14794         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
14795         ot estimate_num_insns.
14796         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
14797         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
14798         * tree-inline.c (eni_inlining_weights, eni_size_weights,
14799         eni_time_weights): New variables.
14800         (init_inline_once): Initialize them.
14801         (struct eni_data): Mew.
14802         (estimate_num_insns_1, estimate_num_insns): Use weights.
14803         * tree-inline.h (struct eni_weights_d): New.
14804         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
14805         (estimate_num_insns): Declaration changed.
14806         * cfgloop.h (tree_num_loop_insns): Declaration changed.
14807         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
14808         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
14809
14810 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14811
14812         * tree-data-ref.c (conflict_fn): Assert that the number of affine
14813         relations in the conflict function is valid.
14814
14815 2007-01-27  Ian Lance Taylor  <iant@google.com>
14816
14817         * common.opt: Add fstrict-overflow.
14818         * opts.c (decode_options): Set flag_strict_overflow if -O2.
14819         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
14820         (TYPE_OVERFLOW_UNDEFINED): Define.
14821         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
14822         Replace all uses.
14823         * tree.h (TYPE_TRAP_SIGNED): Don't define.
14824         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
14825         (fold_negate_expr): Likewise.
14826         (make_range): Likewise.
14827         (extract_muldiv_1): Likewise.
14828         (maybe_canonicalize_comparison): Likewise.
14829         (fold_comparison): Likewise.
14830         (fold_binary): Likewise.
14831         (tree_expr_nonnegative_p): Likewise.
14832         (tree_expr_nonzero_p): Likewise.
14833         * tree-vrp.c (compare_values): Likewise.
14834         (extract_range_from_binary_expr): Likewise.
14835         (extract_range_from_unary_expr): Likewise.
14836         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
14837         Likewise.
14838         (nowrap_type_p): Likewise.
14839         * tree-scalar-evolution.c (simple_iv): Likewise.
14840         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
14841         (build_range_check): Likewise.
14842         (extract_muldiv_1): Likewise.
14843         (fold_comparison): Likewise.
14844         * tree-vrp.c (vrp_int_const_binop): Likewise.
14845         (extract_range_from_unary_expr): Likewise.
14846         * convert.c (convert_to_integer): Likewise.
14847         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
14848         (fold_comparison): Likewise.
14849         (fold_binary): Likewise.
14850         * optabs.c (optab_for_tree_code): Likewise.
14851         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
14852         * simplify-rtx.c (simplify_const_relational_operation): Check
14853         flag_strict_overflow and flag_trapv.
14854         (simplify_const_relational_operation): Likewise.
14855         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
14856         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
14857         -fstrict-overflow.
14858
14859 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14860
14861         * tree.c (tree_fold_gcd): Delete.
14862         * tree.h (tree_fold_gcd): Remove prototype.
14863         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
14864         test whether one constant integer is a multiple of another.  Instead
14865         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
14866         * fold-const.c (multiple_of_p):  We've determined both TOP and
14867         BOTTOM are integer constants so we can call int_const_binop directly
14868         instead of the more generic const_binop.
14869
14870 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14871
14872         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
14873         1*X check that the constant hasn't overflowed, to preserve the
14874         TREE_OVERFLOW bit.
14875         (round_up): Provide an efficient implementation when rouding-up an
14876         INTEGER_CST to a power-of-two.
14877
14878 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14879
14880         * doc/sourcebuild.texi: Add comma for clarity.
14881         * doc/extend.texi: Fix some typos.
14882         * doc/passes.texi: Likewise.
14883         * doc/cppinternals.texi: Likewise.
14884         * doc/c-tree.texi: Likewise.
14885         * doc/tree-ssa.texi: Likewise.
14886         * doc/install.texi: Likewise.
14887
14888 2007-01-27  Jan Hubicka  <jh@suse.cz>
14889
14890         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
14891         (pass_sra): Do not require alias information.
14892         * passes.c (init_optimization_passes): Add SRA
14893
14894 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
14895
14896         * tracer.c (rest_of_handle_tracer): We already cleaned
14897         up the CFG in tracer() so don't do it here again.
14898         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
14899         cleanup_cfg here, either.  And don't call renumber_insns.
14900
14901         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
14902         and BB_HEAD are in the insn stream here.  Instead make sure
14903         that BB_INSN is valid on all insns.  Also, do check here that
14904         there are no pending branch predictions...
14905         (rtl_verify_flow_info): ...instead of doing it here.  Checks
14906         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
14907         here.
14908
14909 2007-01-26  Roger Sayle  <roger@eyesopen.com>
14910
14911         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
14912         function to simplify/factorize operand order canonicalization.
14913         (ix86_fixup_binary_operands): Reorganize using the above function.
14914         (ix86_binary_operator_ok): Likewise.
14915
14916 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
14917
14918         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
14919         file scope from optimize_attrs.
14920         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
14921         up search.
14922         (optimize_attrs): Clear insn_code_values after freeing it.
14923
14924 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14925
14926         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
14927         a parts.base assignment.
14928
14929 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14930
14931         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
14932         (compute_subscript_distance, initialize_data_dependence_relation,
14933         finalize_ddr_dependent, analyze_ziv_subscript,
14934         analyze_siv_subscript_cst_affine,
14935         compute_overlap_steps_for_affine_univar,
14936         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14937         analyze_siv_subscript, analyze_miv_subscript,
14938         analyze_overlapping_iterations, subscript_dependence_tester_1,
14939         compute_self_dependence, free_dependence_relation): Work
14940         with affine_fn instead of chrecs.
14941         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
14942         common_affine_function, affine_function_base,
14943         affine_function_constant_p, affine_fn_op, affine_fn_plus,
14944         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
14945         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
14946         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
14947         (all_chrecs_equal_p): Removed.
14948         * tree-data-ref.h (affine_fn, conflict_function): New types.
14949         (struct subscript): Change type of conflicting_iterations_in_a
14950         and conflicting_iterations_in_b.
14951
14952 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
14953
14954         PR other/30182
14955         * config/pa/pa.h (TARGET_HPUX_11): New.
14956         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
14957         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
14958
14959 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
14960         Richard Guenther  <rguenther@suse.de>
14961
14962         * tree-ssa-structalias.c (solve_graph): Handle case
14963         we merged the variable to another.
14964
14965 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14966
14967         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
14968         functions.
14969
14970         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
14971         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
14972
14973 2007-01-25  DJ Delorie  <dj@redhat.com>
14974
14975         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
14976         allow changes to modes which don't fit in those registers.
14977
14978         * reload1.c (choose_reload_regs): Check for invalid subregs before
14979         computing their locations, not after.
14980
14981 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
14982
14983         PR 25127
14984         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
14985         save Altivec registers in an eh_return function.
14986         (compute_vrsave_mask): Likewise.
14987         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
14988         for saving Altivec registers.
14989         (rs6000_emit_prologue): Don't allocate stack twice in
14990         eh_return function.  Correct expected value of altivec_save_offset
14991         when using save_world.  Describe save of R0 to stack when using
14992         save_world.  Describe stack pointer adjustment when using
14993         save_world.  Remove duplicated eh_return parameter register saving.
14994         Update sp_offset variable after save_world.
14995         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
14996         darwin-world.asm.
14997         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
14998         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
14999         implies Altivec.
15000
15001 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
15002
15003         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
15004
15005 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
15006
15007         PR other/30182
15008         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
15009         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
15010
15011 2007-01-25  Richard Guenther  <rguenther@suse.de>
15012
15013         * doc/invoke.texi (-Wcoverage-mismatch): Document.
15014         * common.opt (-Wcoverage-mismatch): New warning option.
15015         * coverage.c (get_coverage_counts): Ignore coverage mismatch
15016         if -Wcoverage-mismatch is given.
15017
15018 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
15019
15020         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
15021         (ipcp_driver): Change to static definition.
15022         Add dumping of the ifunctions.
15023         (constant_val_insert): Remove unused parameter. Support for SSA.
15024         (ipcp_propagate_const): Support for SSA.
15025         (ipcp_profile_bb_print): Print only analyzed nodes.
15026         (ipcp_replace_map_create): Remove support for Fortran constant
15027         for now.
15028         * ipa-prop.c (ipa_method_modify_stmt,
15029         ipa_callsite_compute_param): Support for SSA.
15030         * ipa-prop.h (ipcp_driver): Remove declaration.
15031         (IS_VALID_TREE_MAP_INDEX): Add define.
15032
15033 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
15034
15035         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
15036
15037 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15038
15039         PR middle-end/30447
15040         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
15041         constant argument to cabs and do it without checking for
15042         -funsafe-math-optimizations.
15043
15044 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
15045
15046         * c-common.h (RID_FIRST_CXX0X): New.
15047         (RID_LAST_CXX0X): New.
15048         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
15049         by -Wall.
15050         * c.opt (Wc++0x-compat): New.
15051         * doc/invoke.texi (-Wc++0x-compat): Document.
15052
15053 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15054
15055         * builtins.c (fold_builtin_carg): New.
15056         (fold_builtin_1): Use it.
15057
15058 2007-01-24  Jan Hubicka  <jh@suse.cz>
15059
15060         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
15061
15062         * ipa-inline.c (initial_insns, max_insns): Delete.
15063         (compute_max_insns): New function.
15064         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
15065         of insns as base for code growth.
15066         (cgraph_decide_inlining): Make initial_insns local; do not compute
15067         max_insns.
15068         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
15069         * doc/invoke.texi (inline-unit-growth): Update docs.
15070
15071 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
15072
15073         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
15074         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
15075         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
15076         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
15077         for CPUs that have PTA_CX16 set.
15078
15079         PR middle-end/27416
15080         * gimplify.c (omp_check_private): New function.
15081         (gimplify_scan_omp_clauses): Use it for
15082         firstprivate/lastprivate/reduction.
15083
15084         PR middle-end/30494
15085         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
15086         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
15087
15088         PR middle-end/30421
15089         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
15090         If lower_lastprivate_clauses emits some statements, append them
15091         to dlist rather than body_p and to body_p append an initializer.
15092         (lower_omp_for): Adjust caller.
15093
15094 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
15095
15096         * target.h (globalize_decl_name): New.
15097         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
15098         * output.h (default_globalize_decl_name): New.
15099         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
15100         globalize_label.
15101         (globalize_decl): Ditto.
15102         (default_globalize_decl_name): New.
15103         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
15104         (ia64_handle_version_id_attribute): New.
15105         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
15106         (ia64_asm_output_external): Use globalize_decl_name instead
15107         of globalize_label.
15108         * doc/extend.texi (version_id): New pragma.
15109         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
15110
15111 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15112
15113         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
15114         _uleb128_t and _Unwind_SWord with _sleb128_t.
15115         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
15116         uw_frame_state_for, uw_update_context_1): Likewise.
15117         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
15118         * unwind-pe.h (read_uleb128, read_sleb128,
15119         read_encoded_value_with_base): Likewise.
15120         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
15121
15122 2007-01-24  Richard Guenther  <rguenther@suse.de>
15123
15124         * builtins.c (expand_builtin_cexpi): Get the fndecl
15125         for cexp in the correct way.
15126
15127 2007-01-24  Jan Hubicka  <jh@suse.cz>
15128
15129         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
15130
15131 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15132
15133         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
15134         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
15135         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
15136         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
15137         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
15138         __SIZEOF_PTRDIFF_T__.
15139         * doc/cpp.texi: Documentation for the new builtin macros added.
15140
15141 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
15142
15143         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
15144         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
15145         instead of operands[2] to avoid access past the end of array.
15146
15147 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
15148
15149         * reload1.c (emit_reload_insns): Pass the reload register
15150         for a non-spill output reload through forget_old_reloads_1.
15151
15152 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
15153
15154         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
15155         _SOFT_DOUBLE if doubles use software floating-point.
15156         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
15157         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
15158         * config/rs6000/darwin-ldouble.c: Also compile functions for
15159         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
15160         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
15161         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
15162         commented-out long double override.
15163         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
15164         * config/rs6000/eabispe.h: Likewise.
15165         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
15166         long double for non-SPE.
15167         (rs6000_handle_option): Likewise.
15168         (invalid_e500_subreg): Disallow more subregs involding DImode,
15169         DFmode, TImode or TFmode.
15170         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
15171         E500 double.
15172         (legitimate_lo_sum_address_p): Also check for TFmode for E500
15173         double.
15174         (rs6000_legitimize_address): Also handle TFmode for E500 double.
15175         (rs6000_legitimize_reload_address): Also handle TFmode for E500
15176         double.
15177         (rs6000_legitimate_address): Also check for TFmode for E500
15178         double.
15179         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
15180         (spe_build_register_parallel): Handle TFmode and TCmode.
15181         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
15182         double.
15183         (function_arg): Handle TFmode and TCmode for E500 double.
15184         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
15185         in general.
15186         (print_operand): Handle TFmode and TImode for %y.
15187         (rs6000_generate_compare): Handle TFmode comparisons for E500
15188         double.
15189         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
15190         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
15191         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
15192         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
15193         TFmode for E500 double.
15194         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
15195         (floatsidf2): Enable for E500 double.
15196         (movtf_softfloat): Use rs6000_nonimmediate_operand.
15197         (extenddftf2): Change to extenddftf2_fprs.
15198         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
15199         depending on TARGET_E500_DOUBLE.
15200         (extendsftf2): Enable for E500 double.
15201         (trunctfdf2): Enable for E500 double.
15202         (trunctfsf2): Change to trunctfsf2_fprs.
15203         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
15204         depending on TARGET_E500_DOUBLE.
15205         (floatsitf2): Enable for E500 double.
15206         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
15207         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
15208         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
15209         (negtf2): Change to negtf2_internal.
15210         (negtf2): New expander.
15211         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
15212         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
15213         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
15214         (movdi_internal32): Use rs6000_nonimmediate_operand.
15215         (unnamed splitter): Likewise.
15216         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
15217         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
15218         (SPE64TF, DITI): New mode macros.
15219         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
15220         modes.
15221         (frob_tf_ti): New.
15222         (frob_<mode>_di_2): New.
15223         (frob_tf_di_8_2): New.
15224         (frob_di_df): Change to frob_di_<mode>; allow more modes.
15225         (frob_ti_tf): New.
15226         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
15227         more modes.
15228         (frob_ti_<mode>_8_2): New.
15229         (frob_ti_tf_2): New.
15230         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
15231         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
15232         TFmode.
15233         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
15234         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
15235         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
15236         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
15237         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
15238         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
15239         tsttflt_gp): New.
15240
15241 2007-01-23  Ian Lance Taylor  <iant@google.com>
15242
15243         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
15244         insn-*.o first.
15245         (OBJS-archive): Reformat, alphabetize.
15246         (OBJS): Change out_object_file to OBJS-md.
15247
15248 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
15249
15250         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
15251         JUMP_P and CALL_P predicates where applicable.
15252         * config/i386/i386.c: Ditto.
15253         * config/i386/i386.md: Ditto.
15254         * config/i386/mmx.md: Ditto.
15255         * config/i386/predicates.md: Ditto.
15256
15257 2007-01-22  Andreas Schwab  <schwab@suse.de>
15258
15259         * config/m68k/m68k.h: Fix comment.
15260
15261 2007-01-22  Jan Hubicka  <jh@suse.cz>
15262
15263         * passes.c (init_optimization_passes): Do not rerun
15264         pass_early_warn_uninitialized.
15265
15266 2007-01-22  Richard Guenther  <rguenther@suse.de>
15267
15268         PR tree-optimization/30038
15269         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
15270         function.
15271         (execute_cse_sincos_1): Likewise.
15272         (execute_cse_sincos): Likewise.
15273         (gate_cse_sincos): Likewise.
15274         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
15275         the cexpi() canonicalization of sincos().
15276         * tree-pass.h (pass_cse_sincos): Declare.
15277         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
15278
15279 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
15280
15281         PR rtl-optimization/29329
15282         * combine.c (replaced_rhs_insn): Rename to i2mod.
15283         (replaced_rhs_value): Rename to i2mod_new_rhs.
15284         (i2mod_old_rhs): New global variable.
15285         (combine_instructions): Adjust for above change.  Save a copy of
15286         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
15287         note are substituted in the second instruction.
15288         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
15289         ditch the note if it pertains to the second eliminated register
15290         and this register is mentioned in i2mod_old_rhs.
15291
15292         Revert:
15293         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
15294
15295         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
15296         the insn to which the note was originally attached.
15297
15298 2007-01-21  Jan Hubicka  <jh@suse.cz>
15299
15300         * ipa-inline.c (inlining_mode): Comment, move up.
15301         (cgraph_decide_inlining_incrementally): Do not perform inlining
15302         itself; fix handling of flattening of self recursive functions.
15303         (cgraph_find_cycles): Remove.
15304         (cgraph_flatten_node): Remove.
15305         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
15306         (try_inline): New function.
15307         (cgraph_early_inlining): Update call of
15308         cgraph_decide_inlining_incrementally.  Apply inlining here.
15309         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
15310
15311 2007-01-21  Dirk Mueller  <dmueller@suse.de>
15312
15313         PR bootstrap/30511
15314         * tree-vrp.c (check_array_bounds): do not warn
15315         about ADDR_EXPR's of ARRAY_REF's which are immediately
15316         used in binary expressions.
15317
15318 2007-01-21  Ira Rosen  <irar@il.ibm.com>
15319
15320         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
15321         read_write_dep and macros for its access.
15322         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
15323         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
15324         argument, call vect_check_interleaving for every independent pair of
15325         data-refs. Mark loads that access the same memory location as a store
15326         in the loop.
15327         (vect_check_dependences): Remove.
15328         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
15329         call, fix the call to vect_analyze_data_ref_dependence.
15330         (vect_analyze_data_ref_access): For statements that access the same
15331         data-ref, check that they are not stores; for loads, check that there
15332         is no store that access the same location.
15333
15334 2007-01-20  Roger Sayle  <roger@eyesopen.com>
15335             Joseph Myers  <joseph@codesourcery.com>
15336
15337         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
15338         (-fdump-rtl-stack): Likewise.
15339         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
15340         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
15341         (-mpt-fixed): Use @minus{} for minus sign.
15342         (Using Precompiled Headers): Fix under/overfull hbox.
15343
15344 2007-01-20  Jan Hubicka  <jh@suse.cz>
15345
15346         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
15347         place within annotation.
15348
15349 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15350
15351         * pa.c (output_move_double): Change array size of xoperands to 4.
15352
15353 2007-01-20  Jan Hubicka  <jh@suse.cz>
15354
15355         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
15356         as temporary.
15357
15358 2007-01-19  Ian Lance Taylor  <iant@google.com>
15359
15360         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
15361         constant to unsigned HOST_WIDE_INT before negating.
15362
15363 2007-01-19  Ian Lance Taylor  <iant@google.com>
15364
15365         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
15366         to unsigned.
15367         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
15368         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15369         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
15370         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
15371         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15372         (realloc_vdef, realloc_vuse): Change second parameter to
15373         unsigned.
15374         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
15375         fields to unsigned.
15376         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
15377         unsigned. Change x and lim locals to unsigned.
15378         (realloc_vdef, realloc_vuse): Change num_elem parameter to
15379         unsigned.
15380         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
15381         (copy_virtual_operands): Change i and n locals to unsigned.
15382
15383 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15384
15385         PR middle-end/29335
15386         * builtins.c (fold_builtin_1): Handle builtin fdim.
15387
15388 2007-01-20  Jan Hubicka  <jh@suse.cz>
15389
15390         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
15391         * tree-ssa-structalias.c (compute_points_to_sets): Do call
15392         init_alias_heapvars.
15393         (init_alias_heapvars): Initialize only when not already initialized.
15394         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
15395
15396 2007-01-19  Roger Sayle  <roger@eyesopen.com>
15397
15398         * common.opt (fsigned-zeros): New command line option.
15399         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
15400         of flag_unsafe_math_optimizations.
15401         * opts.c (set_fast_math_flags): The -ffast-math command line option
15402         implies -fno-signed-zeros.
15403         (fast_math_flags_set_p): Likewise.
15404
15405         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
15406         the documentation of -ffast-math appropriately.  Wrap long lines.
15407
15408 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
15409
15410         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
15411         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
15412
15413 2007-01-19  Tomas Bily  <tbily@suse.cz>
15414
15415         * cgraphunit.c (cgraph_finalize_function): Updating of pid
15416         * tree-profile.c:
15417         (tree_init_ic_make_global_vars): New function
15418         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
15419         (tree_gen_ic_profiler): New function
15420         (tree_gen_ic_func_profiler): New function
15421         (tree_profiling): Added calling of tree_gen_ic_func_profiler
15422         (tree_profile_hooks): Added hook for indirec/virtual calls
15423         * value-prof.c (tree_find_values_to_profile): New case for
15424         indirect calls
15425         (tree_values_to_profile): Call for determining indirect/virtual
15426         counters
15427         (tree_indirect_call_to_profile): New function
15428         (tree_ic_transform): New function
15429         (tree_ic): New function
15430         (find_func_by_pid): New function
15431         (init_pid_map): New function
15432         (tree_value_profile_transformations): Added check for
15433         indirect/virtual call transformation
15434         * value-prof.h (enum hist_type): New counter type for
15435         indirect/virtual calls
15436         (profile_hooks): Added new hook for profiling indirect/virtual
15437         calls
15438         * profile.c (instrument_values): New case for indirect/virtual
15439         call added
15440         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
15441         (GCOV_COUNTER_V_INDIR): New counter type
15442         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
15443         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
15444         call added
15445         * cgraph.c: Definition of cgraph_max_pid
15446         (cgraph_create_node): Default init of pid attribute
15447         * cgraph.h: Declaration of cgraph_max_pid
15448         (struct cgraph_node): Added pid attribute
15449         * libgcov.c (__gcov_indirect_call_profiler): New function
15450         (__gcov_one_value_profiler_body): New function
15451         (__gcov_one_value_profiler): Body was moved to
15452         __gcov_one_value_profiler_body and calls it
15453
15454 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
15455
15456         * doc/gty.texi (Options): Document the mark_hook option to GTY.
15457         * gengtype.c (write_types_data, write_func_for_structure,
15458         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
15459         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
15460         (walk_type, write_func_for_structure): Generate the mark_hook if
15461         needed.
15462
15463 2007-01-19  Jan Hubicka  <jh@suse.cz>
15464
15465         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
15466         'early' argument take inlining mode argument specifying whether to
15467         inline for size/speeed or all functions; add support for flattening;
15468         improve dumpting.
15469         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
15470
15471 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15472
15473         PR c++/17947
15474         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
15475         the name of the declared identifier.
15476
15477 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15478
15479         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
15480         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
15481         duplicate evaluation.
15482
15483 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15484
15485         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
15486         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
15487         to XFMode, use acosxf2 and truncate result to requested mode.
15488         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
15489         (asin<mode>2): Similarly, with asin expanders.
15490         (*fscalexf4_i387): Rename from *fscalexf4.
15491         (expNcorexf3): New expander.
15492         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
15493         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
15494         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
15495         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
15496         patterns for SSE math.
15497         (exp10<mode>2): Similarly, with exp10 expanders.
15498         (exp2<mode>2): Similarly, with exp2 expanders.
15499         (expm1<mode>2): Similarly, with expm1 expanders.
15500         (ldexp<mode>3): Similarly, with ldexp expanders.
15501         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
15502         Use gen_truncxf<mode>2_i387_noop to truncate result.
15503
15504 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15505
15506         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
15507         for ColdFire targets.
15508
15509 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
15510             Richard Sandiford  <richard@codesourcery.com>
15511
15512         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
15513         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
15514         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
15515         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
15516         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15517         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15518
15519 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15520
15521         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
15522         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
15523         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
15524         (*adddi_dilshr32_cf): New pattern.
15525         (adddi3, subdi3): Remove first alternatives.
15526
15527 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15528
15529         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
15530         implemented using move.l, do not use its cc result for floating-point
15531         comparisons.
15532
15533 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15534
15535         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
15536         from accepting 's' constraints if flag_pic.
15537
15538 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15539
15540         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
15541         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
15542         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
15543         condition from TARGET_68881 to TARGET_HARD_FLOAT.
15544
15545 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
15546
15547         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
15548         ColdFire alternatives.
15549         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
15550         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
15551         architectures that support ff1 instruction.
15552
15553 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15554             Julian Brown  <julian@codesourcery.com>
15555
15556         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
15557         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
15558         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
15559         Add commentary.
15560
15561 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15562
15563         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
15564         and return a bool.
15565         (output_move_const_into_data_reg, output_move_simode_const): Delete.
15566         * config/m68k/m68k.c (const_method, const_int_cost): Take a
15567         HOST_WIDE_INT instead of an rtx.
15568         (m68k_rtx_costs): Update call accordingly.
15569         (output_move_const_into_data_reg): Likewise.  Fix formatting.
15570         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
15571         Return a bool.
15572         (output_move_simode_const): Update calls after above changes.
15573         Rework to use automatic variables and predicates like MEM_P.
15574         * config/m68k/m68k.md (pushexthisi_const): Update call to
15575         valid_mov3q_const.
15576
15577 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15578
15579         * tree-ssa-alias.c (perform_var_substitution): Fix typo
15580         in dump_flags test.
15581
15582 2007-01-19  Richard Guenther  <rguenther@suse.de>
15583
15584         * builtins.c (expand_builtin_cexpi): Fall back to expanding
15585         via cexp in case sincos is not available.
15586
15587 2007-01-19  Richard Guenther  <rguenther@suse.de>
15588
15589         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
15590         * defaults.h (TARGET_HAS_SINCOS): Default to off.
15591         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
15592         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
15593         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
15594         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
15595         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
15596         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
15597
15598 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15599
15600         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
15601         New insn patterns.
15602         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
15603         (atan2xf3): Directly generate RTL pattern.
15604         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
15605         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15606         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15607         disable patterns for SSE math.
15608         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
15609         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15610         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15611         disable patterns for SSE math.
15612
15613 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
15614
15615         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
15616
15617 2007-01-18  Roger Sayle  <roger@eyesopen.com>
15618
15619         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
15620         VIEW_CONVERT_EXPR to the same type as it's operand.
15621
15622 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
15623
15624         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
15625         configured for long double 128.
15626
15627 2007-01-18  Mike Stump  <mrs@apple.com>
15628
15629         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
15630         error.
15631
15632 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
15633
15634         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
15635         type correct.
15636
15637 2007-01-18  Jan Hubicka  <jh@suse.cz>
15638
15639         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
15640         greater than NUM_VOP_FREE_BUCKETS.
15641
15642 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
15643
15644         * tree-ssa-structalias.c: Update comments.
15645         (ptabitmap_obstack): Removed.
15646         (pta_obstack): New.
15647         (oldpta_obstack): Ditto.
15648         (stats): Add a few members.
15649         (struct variable_info): Remove node, complex, address_taken, and
15650         indirect_target members. Add oldsolution member.
15651         (new_var_info): Do not initialize removed members.
15652         (constraint_expr_type): Remove INCLUDES.
15653         (constraint_graph): Add size, implicit_preds, rep,
15654         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
15655         (FIRST_REF_NODE): New macro.
15656         (LAST_REF_NODE): Ditto.
15657         (FIRST_ADDR_NODE): Ditto.
15658         (find): New function.
15659         (unite): Ditto.
15660         (dump_constraint): Do not handle INCLUDES.
15661         (insert_into_complex): Do not insert duplicate constraints.
15662         (condense_varmap_nodes): Renamed and rewritten into ...
15663         (merge_node_constraints): This. Also fix bug in handling of
15664         offseted copy constraints.
15665         (clear_edges_for_node): No longer need to deal with preds at all,
15666         or removing associated preds/succs.
15667         (merge_graph_nodes): Deal with indirect_cycles.
15668         Don't deal with predecessors.
15669         (add_implicit_graph_edge): New function.
15670         (add_pred_graph_edge): Ditto.
15671         (add_graph_edge): Don't deal with predecessors.
15672         (build_constraint_graph): Removed.
15673         (build_pred_graph): New function.
15674         (build_succ_graph): Ditto.
15675         (struct scc_info): Removed in_component. Added roots, dfs, and
15676         node_mapping. Remove visited_index, unification_queue.
15677         (scc_visit): Deal with union-find we do now.
15678         Deal with cycles with REF nodes.
15679         (collapse_nodes): Renamed and rewritten to ...
15680         (unify_nodes): This.
15681         (process_unification_queue): Removed.
15682         (topo_visit): Cleanup
15683         (do_da_constraint): Use find.
15684         (do_sd_constraint): Ditto.
15685         (do_ds_constraint): Ditto.
15686         (do_complex_constraint): Ditto.
15687         (init_scc_info): Update for removed and added members.
15688         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
15689         (find_indirect_cycles): This.
15690         (equivalence_class): New variable.
15691         (label_visit): New function.
15692         (perform_variable_substitution): Rewritten.
15693         (free_var_substitution_info): New function.
15694         (find_equivalent_node): Ditto.
15695         (move_complex_constraints): Ditto.
15696         (eliminate_indirect_cycles): Ditto.
15697         (solve_graph): Only propagate changed bits.
15698         Use indirect cycle elimination.
15699         Use find.
15700         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
15701         (tree_id_eq): Renamed to ...
15702         (tree_vi_eq): This. Update for member change
15703         (insert_id_for_tree): Renamed and rewritten to ...
15704         (insert_vi_for_tree): This.
15705         (lookup_id_for_tree): Renamed and rewritten to ...
15706         (lookup_vi_for_tree): This.
15707         (get_id_for_tree): Renamed and rewritten to ...
15708         (get_vi_for_tree): Ditto.
15709         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
15710         (process_constraint): Don't handle INCLUDES.
15711         Remove special ADDRESSOF case.
15712         (find_func_aliases): Rewrite to use vi functions instead of id
15713         ones.
15714         (create_function_info_for): Ditto.
15715         (create_variable_info_for): Ditto.
15716         (intra_create_variable_infos): Ditto.
15717         (merge_smts_into): Ditto.
15718         (find_what_p_points_to): Ditto.
15719         (init_base_vars): Ditto.
15720         (init_alias_vars): Ditto.
15721         (remove_preds_and_fake_succs): New function.
15722         (dump_sa_points_to_info): Dump new stats.
15723         (dump_solution_for_var): Use find.
15724         (set_used_smts): Fix formatting.
15725         (compute_points_to_sets): Updated for new functions.
15726         (ipa_pta_execute): Ditto.
15727
15728 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15729             Richard Sandiford  <richard@codesourcery.com>
15730
15731         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
15732         parallels.
15733         * calls.c (expand_call): If the return value is a PARALLEL,
15734         extract its first member.
15735         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
15736         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15737         use FUNCTION_EXTRA_EPILOGUE.
15738         (m68k_function_value): Return a PARALLEL if the return value
15739         is of a pointer type.
15740         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
15741         (FUNCTION_EXTRA_EPILOGUE): Remove.
15742         * config/m68k/m68k.md (D0_REG): New constant.
15743
15744 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15745
15746         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15747         output a NOP for empty epilogues.
15748
15749 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15750
15751         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
15752         before function.  Extend register save check to include all
15753         registers, not just integer ones.
15754
15755 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15756
15757         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
15758         (m68k_use_return_insn): ...this.
15759         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
15760         * config/m68k/m68k.c (use_return_insn): Rename to...
15761         (m68k_use_return_insn): ...this.
15762         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
15763         of USE_RETURN_INSN.
15764
15765 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15766
15767         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
15768         nearest even, fix denormal rounding overflow.
15769
15770 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15771
15772         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
15773         f%$smove and f%$move.
15774         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
15775         (extendsfdf2_cf): Use fdmove instead of f%&move.
15776         (truncdfsf2_cf): Use fsmove instead of f%$smove.
15777         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
15778
15779 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15780
15781         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
15782         GPR<-GPR moves.
15783
15784 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15785
15786         * real.h (real_format): Add a canonical_nan_lsbs_set field.
15787         (coldfire_single_format): Declare.
15788         (coldfire_double_format): Likewise.
15789         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
15790         of qnan_msb_set to determine the lower bits of a canonical
15791         NaN significand.
15792         (encode_ieee_double): Likewise.
15793         (encode_ieee_quad): Likewise.
15794         (ieee_single_format): Initialize canonical_nan_lsbs_set.
15795         (mips_single_format): Likewise.
15796         (ieee_double_format): Likewise.
15797         (mips_double_format): Likewise.
15798         (ieee_extended_motorola_format): Likewise.
15799         (ieee_extended_intel_96_format): Likewise.
15800         (ieee_extended_intel_128_format): Likewise.
15801         (ieee_extended_intel_96_round_53_format): Likewise.
15802         (ibm_extended_format): Likewise.
15803         (mips_extended_format): Likewise.
15804         (ieee_quad_format): Likewise.
15805         (mips_quad_format): Likewise.
15806         (vax_f_format): Likewise.
15807         (vax_d_format): Likewise.
15808         (vax_g_format): Likewise.
15809         (i370_single_format): Likewise.
15810         (i370_double_format): Likewise.
15811         (decimal_single_format): Likewise.
15812         (decimal_double_format): Likewise.
15813         (decimal_quad_format): Likewise.
15814         (c4x_single_format): Likewise.
15815         (c4x_extended_format): Likewise.
15816         (real_internal_format): Likewise.
15817         (coldfire_single_format): New real_format.
15818         (coldfire_double_format): Likewise.
15819         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
15820         canonical_nan_lsbs_set.
15821         (pdp11_d_format): Likewise.
15822         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
15823         if TARGET_COLDFIRE_CPU.
15824
15825 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15826
15827         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
15828         (output_call, m68k_legitimize_call_address): Declare.
15829         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
15830         parenthesees.  Add support for a 'W' constraint.
15831         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
15832         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
15833         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
15834         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
15835         variables.
15836         (override_options): Initialize them.  Do not set flag_no_function_cse
15837         for TARGET_ID_SHARED_LIBRARY.
15838         (m68k_output_pic_call): Delete.
15839         (m68k_legitimize_call_address): New function.
15840         (print_operand): Remove the %o prefix.  Handle the %p prefix.
15841         (output_call): New function.
15842         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
15843         target address from the GOT if symbolic jumps are not allowed.
15844         * config/m68k/m68k.md (call, general_operand): Do not set
15845         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
15846         Merge separate flag_pic and !flag_pic define_insns into...
15847         (*call, *call_value): ...these new patterns.  Match the address
15848         rather than the containing MEM and require it to be a call_operand.
15849         Use output_call to generate the asm template.
15850         * config/m68k/predicates.md (const_call_operand): New predicate.
15851         (call_operand): Likewise.
15852
15853 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15854
15855         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
15856         (STACK_GROWS_DOWNWARD): Define to 1.
15857         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
15858         comments, emphasizing that these values are only defaults.
15859         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
15860         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
15861
15862 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15863
15864         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
15865
15866 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15867             Richard Sandiford  <richard@codesourcery.com>
15868
15869         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
15870         (FP_REGNO_P): New macros.
15871         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
15872         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
15873         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
15874         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
15875
15876 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15877
15878         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15879         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
15880         to $tmake_file.
15881         * config/m68k/t-floatlib: New file, extracting common code from...
15882         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
15883         * config/m68k/t-uclinux: Here.
15884         * config/m68k/fpgnulib.c: Do not compile extendeed precision
15885         routines on ColdFire targets.
15886
15887 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15888
15889         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15890         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
15891         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
15892         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
15893         explicitly set MOTOROLA to 1.
15894         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
15895
15896 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15897             Nathan Sidwell  <nathan@codesourcery.com>
15898
15899         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
15900         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
15901         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
15902         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
15903         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
15904         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
15905         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
15906         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
15907         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
15908         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15909         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
15910         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
15911         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
15912         (DBX_REGISTER_NUMBER): Delete.
15913         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
15914         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15915         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
15916
15917 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15918
15919         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
15920         * config/flat.h: New file.
15921         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
15922         OBJECT_FORMAT_FLAT.
15923         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
15924         indirect references for -msep-data or -mid-shared-library.
15925         Do not use PC-relative code addresses either.
15926         * config/m68k/m68k.c (override_options): Restrict -fPIC error
15927         to -mpcrel.
15928         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
15929         for shared libraries and crt1.o for executables.  Use crti.o and
15930         crtbegin.o.
15931         (ENDFILE_SPEC): Use crtend.o and crtn.o.
15932         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
15933         Do not add -elf2flt or -shared-lib-id options here.
15934         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
15935         Pass -shared-lib-id if -mid-shared-library, taking the library
15936         identifier from -mshared-library-id if given, otherwise
15937         defaulting to 0.
15938         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
15939         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
15940         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
15941         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
15942         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
15943         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
15944         and crtend.o.
15945         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
15946         jump sequence for ISA A and ISA A+.
15947         (PICJUMP): Likewise.
15948
15949 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15950
15951         * config.gcc (m68k-*-uclinux*): Base the port on the common
15952         and m68k GNU/Linux files rather than on the generic ELF ones.
15953         * config/m68k/uclinux.h (TARGET_VERSION): Override.
15954         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
15955
15956 2007-01-18  Julian Brown  <julian@codesourcery.com>
15957             Richard Sandiford  <richard@codesourcery.com>
15958
15959         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
15960         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
15961         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
15962         before redefining.
15963         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
15964         80 unconditionally.
15965         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
15966
15967 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15968
15969         * doc/install.texi: Document m68k-uclinuxoldabi.
15970         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
15971         * config/m68k/uclinux-oldabi.h: New file, copied from
15972         config/m68k/uclinux.h.
15973
15974 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
15975
15976         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
15977         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
15978         (m32r_compute_frame_size): Use unsigned for regno.
15979         (m32r_reload_lr): Use gen_frame_mem.
15980         (pop): New.
15981         (m32r_output_function_epilogue): Don't output the function epilogue
15982         textually here.
15983         (m32r_expand_epilogue): New.
15984         (direct_return): Return false if the function has the interrupt
15985         attribute.
15986         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
15987         * config/m32r/m32r.md (epilogue): New expander.
15988         (return_lr, return_rte): New insns.
15989         (return): Make it expander.
15990         (return_normal): New expander.
15991
15992 2007-01-18  Josh Conner  <jconner@apple.com>
15993
15994         PR target/30485
15995         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
15996         support for UNLE, UNLT, UNGE, and UNGT.
15997
15998 2007-01-18  Jan Hubicka  <jh@suse.cz>
15999
16000         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
16001         * tree-tailcall (add_virtual_phis): Likewise.
16002         (optimize_tail_call): Return TODOs.
16003         (execute_tail_calls): Return TODOs.
16004         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
16005         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
16006         changed.
16007         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
16008         Cleanup cfg using TODO.
16009         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
16010         * passes.c (execute_function_todo): When cleanup did something, remove
16011         unused locals.
16012         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
16013         (make_edges): Don't cleanup_cfg.
16014
16015 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
16016
16017         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
16018         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
16019         operate on the top of stack.
16020         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
16021         register handling of instructions that output to the second
16022         stack slot.
16023         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
16024         (move_for_stack_reg): Special-case check for dead destination
16025         stack slot for constant load of 1.0 inside UNSPEC_TAN.
16026
16027         * config/i386/i386.md (UNSPEC_TAN): New constant.
16028         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
16029         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
16030         to correctly model move of constant 1.0 to top stack slot.
16031         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
16032         (unnamed peephole2 pattern): Remove corresponding peephole2
16033         pattern that optimizes tan insn and loading of constant 1.0.
16034         (tanxf2): Use fptanxf4_i387.
16035         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
16036         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
16037         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
16038         disable patterns for SSE math.
16039         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
16040         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
16041
16042 2007-01-18  Dirk Mueller  <dmueller@suse.de>
16043             Richard Guenther <rguenther@suse.de>
16044
16045         PR diagnostic/8268
16046         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
16047         * common.opt (Warray-bounds): Add new warning option.
16048         * c-opts.c (c_common_handle_option): Define -Warray-bounds
16049         if -Wall is given.
16050         * Makefile.in: make tree-vrp.o depend on toplev.h
16051         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
16052         is enabled.
16053         (check_array_refs, check_array_bounds, check_array_ref): New.
16054
16055 2007-01-18  Jan Hubicka  <jh@suse.cz>
16056
16057         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
16058         (execute_ssa_ccp): Return flags conditionally.
16059         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
16060         changed.
16061         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
16062
16063 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
16064
16065         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
16066         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
16067
16068         * Makefile.c (GTFILES): Add cfglayout.h.
16069         * gengtype.c (open_base_files): Likewise.
16070         * cfglayout.c (cfg_layout_function_footer,
16071         cfg_layout_function_header) Reindent to make gengtype happy.
16072         * cfglayout.h (cfg_layout_function_footer,
16073         cfg_layout_function_header): Add GTY(()) marker.
16074
16075         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
16076
16077 2007-01-18  Ben Elliston  <bje@au.ibm.com>
16078
16079         * genautomata.c (write_automata): Include xstrerror output in the
16080         error message if writing the DFA description file fails.
16081
16082 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
16083
16084         * config/mips/mips-protos.h (mips_output_external): Make it
16085         return void.
16086         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
16087         * config/mips/mips.c (irix_output_external_libcall): Likewise.
16088         (extern_list): Likewise.
16089         (extern_head): Likewise.
16090         (TARGET_ASM_FILE_END): Likewise.
16091         (mips_file_end): Likewise.
16092         (mips_output_external): Rewritten.
16093
16094 2007-01-18  Ben Elliston  <bje@au.ibm.com>
16095
16096         * genpreds.c (write_insn_preds_c): Only write out the function
16097         body for regclass_for_constraint if we have register constraints.
16098
16099 2007-01-17  Tom Tromey  <tromey@redhat.com>
16100
16101         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
16102         * doc/install.texi (Testing): Use sourceware.org.
16103         (Binaries): Likewise.
16104         (Specific): Likewise.
16105         * doc/contrib.texi (Contributors): Use sourceware.org.
16106
16107 2007-01-17  Anatoly Sokolov <aesok@post.ru>
16108
16109         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
16110         (AVR_ENHANCED): Rename to ...
16111         (AVR_HAVE_MUL): ... new.
16112         (avr_enhanced_p): Rename to ...
16113         (avr_have_mul_p): ... new.
16114         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
16115         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
16116         * config/avr/avr.c (avr_enhanced_p): Rename to ...
16117         (avr_have_mul_p): ... new.
16118         (base_arch_s): Rename 'enhanced' to 'have_mul'.
16119         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
16120         'avr_enhanced_p' and 'enhanced'.
16121         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
16122         AVR_HAVE_MUL instead of AVR_ENHANCED.
16123         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
16124         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
16125         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
16126         instead of AVR_ENHANCED.
16127         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
16128         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
16129         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
16130
16131 2007-01-17  Ian Lance Taylor  <iant@google.com>
16132
16133         * vec.h (VEC_reserve_exact): Define.
16134         (vec_gc_p_reserve_exact): Declare.
16135         (vec_gc_o_reserve_exact): Declare.
16136         (vec_heap_p_reserve_exact): Declare.
16137         (vec_heap_o_reserve_exact): Declare.
16138         (VEC_OP (T,A,reserve_exact)): New static inline function, three
16139         versions.
16140         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
16141         negative parameter.
16142         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
16143         (VEC_OP (T,A,copy)) [all versions]: Likewise.
16144         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
16145         * vec.c (calculate_allocation): Add exact parameter.  Change all
16146         callers.
16147         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
16148         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
16149         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
16150         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
16151         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
16152         (vec_heap_p_reserve_exact): New function.
16153         (vec_heap_o_reserve_exact): New function.
16154
16155 2007-01-17  Jan Hubicka  <jh@suse.cz>
16156
16157         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
16158
16159 2007-01-17  Eric Christopher  <echristo@apple.com>
16160
16161         * config.gcc: Support core2 processor.
16162
16163 2007-01-16  Jan Hubicka  <jh@suse.cz>
16164
16165         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
16166         the names, just unlink the chain so we don't crash on dangling pointers
16167         to dead SSA names.
16168
16169 2007-01-16  Jan Hubicka  <jh@suse.cz>
16170
16171         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
16172         * tree-pass.h: Reorder to make IPA passes appear toegher.
16173         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
16174         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
16175         parameters, do not call early inliner.
16176         * ipa-inline.c: Update comments.  Include tree-flow.h
16177         (cgraph_decide_inlining): Do not compute inlining parameters.
16178         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
16179         be called with function context set up.
16180         (pass_ipa_inline): Remove unreachable functions before pass.
16181         (cgraph_early_inlining): Simplify assuming to be called from the
16182         PM as local pass.
16183         (pass_early_inline): New pass.
16184         (cgraph_gate_ipa_early_inlining): New gate.
16185         (pass_ipa_early_inline): Turn into simple wrapper.
16186         (compute_inline_parameters): New function.
16187         (gate_inline_passes): New gate.
16188         (pass_inline_parameters): New pass.
16189         (apply_inline): Move here from tree-optimize.c
16190         (pass_apply_inline): New pass.
16191         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
16192         transforming.
16193         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
16194         doing them by hand.
16195         (tree_function_versioning): Do not allocate dummy struct function.
16196         * tree-inline.h (optimize_inline_calls): Update prototype.
16197         * tree-optimize.c (execute_fixup_cfg): Export.
16198         (pass_fixup_cfg): Remove
16199         (tree_rest_of_compilation): Do not apply inlines.
16200         * tree-flow.h (execute_fixup_cfg): Declare.
16201         * Makefile.in (gt-passes.c): New.
16202         * passes.c: Include gt-passes.h
16203         (init_optimization_passes): New passes.
16204         (nnodes, order): New static vars.
16205         (do_per_function_toporder): New function.
16206         (execute_one_pass): Dump current pass here.
16207         (execute_ipa_pass_list): Don't dump current pass here.
16208
16209 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
16210
16211         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
16212         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
16213
16214 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
16215
16216         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
16217         (strong_alias): Define.
16218         (__gcc_qmul): Provide non-FMA for soft-float.
16219         (__gcc_qdiv): Same.
16220         (__gcc_qneg): New.
16221         (__gcc_qeq): New.
16222         (__gcc_qle): New.
16223         (__gcc_qge): New.
16224         (__gcc_qunord): New.
16225         (__gcc_stoq): New.
16226         (__gcc_dtoq): New.
16227         (__gcc_qtos): New.
16228         (__gcc_qtod): New.
16229         (__gcc_qtoi): New.
16230         (__gcc_qtou): New.
16231         (__gcc_itoq): New.
16232         (__gcc_utoq): New.
16233         (fmsub): New.
16234         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
16235         soft-float functions.
16236         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
16237         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
16238         about long double soft float.
16239
16240 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
16241             Tehila Meyzels  <tehila@il.ibm.com>
16242
16243         * tree-vectorizer.h (is_pattern_stmt_p): New.
16244         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
16245         formatting (tabs instead of spaces). Cleanup and clarify setting
16246         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
16247         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
16248         (vectorizable_type_demotion): Check that types are integral.
16249         (vectorizable_type_promotion): Likewise.
16250         (vectorizable_store): Fix typo.  Eliminate new-line at end of
16251         comments.
16252
16253 2007-01-16  Jan Hubicka  <jh@suse.cz>
16254
16255         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
16256         cgraph edges too.
16257
16258 2007-01-15  Eric Christopher  <echristo@apple.com>
16259
16260         * ifcvt.c: Include vec.h, vecprim.h.
16261         (check_cond_move_block): New argument regs.
16262         Reorganize. Add registers used to regs.
16263         (cond_move_process_if_block): Use regs set above as
16264         loop bounds.
16265
16266 2007-01-15  Eric Christopher  <echristo@apple.com>
16267
16268         * config/darwin.h: Update copyright.
16269         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
16270         (LINK_COMMAND_SPEC): Add -u.
16271         (LINK_SPEC): Fix umbrella for above.
16272
16273 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
16274
16275         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
16276         glibc CVS.
16277
16278 2007-01-15  Tom Tromey  <tromey@redhat.com>
16279
16280         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
16281         * doc/install.texi (Testing): Don't mention jacks.
16282         (Configuration): Document --enable-java-maintainer-mode.  Move
16283         --with-java-home to libgcj-specific section.  Document
16284         --with-ecj-jar.
16285         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
16286
16287 2007-01-15  Jan Hubicka  <jh@suse.cz>
16288
16289         * tree-ssa-dce.c (DCE_TODOs): New.
16290         (propagate_necessity): Return if something changed.
16291         (eliminate_unnecessary_stmts): Likewise.
16292         (perform_tree_ssa_dce): Return TODO flags when needed.
16293         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
16294
16295 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
16296
16297         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
16298         (fyl2x_extend<mode>xf3_i387): New insn pattern.
16299         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
16300         patterns using X87MODEF12 mode macro.  Extend operand 1
16301         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
16302         (log10<mode>2): Ditto.
16303         (log2<mode>2): Ditto.
16304         (log1p<mode>2): Ditto.
16305         (logb<mode>2): Ditto.
16306         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
16307         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
16308         (*fxtractxf3_i387): Rename from *fxtractxf3.
16309         (fxtract_extend<mode>xf3_i387): New insn pattern.
16310         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
16311         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
16312         and gen_fyl2xxf3_i387().
16313
16314 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
16315
16316         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
16317         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
16318         get_loop_exit_edges.  Changed return type to bool.
16319         * cfgloop.h (fix_loop_placement): Declaration removed.
16320
16321 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
16322
16323         * param.h (MIN_VECT_LOOP_BOUND): New.
16324         * params.def (MIN_VECT_LOOP_BOUND): New.
16325         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
16326         argument - minimum threshold for number of iterations.
16327         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
16328         argument to declaration.
16329         * tree-vect-analyze.c (vect_analyze_operations): Check value of
16330         MIN_VECT_LOOP_BOUND.
16331         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
16332         slpeel_tree_peel_loop_to_edge with additional argument.
16333         (vect_do_peeling_for_alignment): Likewise.
16334         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
16335
16336 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
16337
16338         PR target/30413
16339         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
16340         operands of size 1.
16341
16342 2007-01-14  Jan Hubicka  <jh@suse.cz>
16343
16344         * tree-dfa.c (remove_referenced_var): New function.
16345         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
16346         prune referenced vars list too.
16347         * tree-flow.h (remove_referenced_var): Declare.
16348
16349 2007-01-14  Jan Hubicka  <jh@suse.cz>
16350
16351         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
16352         separately.
16353         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
16354         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
16355         * except.h (verify_eh_throw_table_statements): Kill prototype.
16356         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
16357         into call exrepssions.
16358         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
16359         eh trhow verifier.
16360         * tree-cfg.c: Include pointer-set.h.
16361         (verify_node_sharing): Work on pointer set.
16362         (verify_eh_throw_stmt_node): New.
16363         (verify_stmts): Use pointers sets, verify throw_stmt.
16364
16365 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
16366
16367         * ipa-reference.c (analyze_function): Consider also addresses taken
16368         in phi nodes.
16369
16370 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16371
16372         * c-typeck.c (null_pointer_constant_p): Replace use of
16373         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16374         (build_c_cast): Likewise.
16375
16376 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16377
16378         * tree.h (force_fit_type_double): Remove unused final argument.
16379         * c-common.c (constant_expression_warning): Replace use of
16380         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16381         (convert_and_check): Likewise.
16382         (shorten_compare): Update call to force_fit_type_double.
16383         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
16384         * convert.c (convert_to_pointer): Update call to
16385         force_fit_type_double.
16386         * fold-const.c (force_fit_type_double): Remove overflowed_const
16387         argument.
16388         (int_const_binop, fold_convert_const_int_from_int,
16389         fold_convert_const_int_from_real, fold_div_compare,
16390         fold_sign_changed_comparison, fold_unary, fold_negate_const,
16391         fold_abs_const, fold_not_const): Remove the final argument from
16392         calls to force_fit_type_double.
16393
16394 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16395
16396         * configure.ac: Set insn to "nop" for spu-*-* also.
16397         * configure: Regenerate.
16398
16399 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
16400
16401         * builtins.def : Add BUILT_IN_FREE.
16402
16403 2007-01-12  Jan Hubicka  <jh@suse.cz>
16404
16405         PR tree-optimization/30443
16406         * tree-inline.c (tree_function_versioning): Do not optimize when
16407         cloning for inlining.
16408
16409 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
16410
16411         * doc/loop.texi: Document recording of loop exits.
16412         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
16413         (update_single_exits_after_duplication,
16414         update_single_exit_for_duplicated_loop,
16415         update_single_exit_for_duplicated_loops): Removed.
16416         (duplicate_loop_to_header_edge): Do not call
16417         update_single_exits_after_duplication and
16418         update_single_exit_for_duplicated_loops.
16419         (loop_version): Do not update single_exit information.
16420         (fix_loop_structure): Use record_loop_exits instead of
16421         mark_single_exit_loops.
16422         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
16423         the lists of loop exits.
16424         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
16425         split_edge, merge_blocks): Update the lists of loop exits.
16426         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
16427         loop_optimizer_init.
16428         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
16429         of mark_single_exit_loops.
16430         (loop_optimizer_finalize): Call release_recorded_exits.
16431         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
16432         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
16433         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
16434         update single exit information.
16435         * lambda-code.c (perfect_nestify): Ditto.
16436         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
16437         (mark_single_exit_loops): Removed.
16438         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
16439         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
16440         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
16441         functions.
16442         (get_loop_exit_edges, single_exit): Use recorded exit lists.
16443         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
16444         (verify_loop_structure): Verify consistency of the exit lists.
16445         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
16446         (set_single_exit): Removed.
16447         * cfgloop.h (struct loop_exit): New function.
16448         (struct loop): single_exit_ field replaced by exits field.
16449         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
16450         (struct loops): Added exits hash.
16451         (mark_single_exit_loops, set_single_exit): Declaration removed.
16452         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
16453
16454 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16455
16456         * doc/invoke.texi: Avoid use of @headitem.
16457
16458 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16459
16460         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
16461
16462 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16463
16464         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
16465         list of targets.
16466
16467 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16468             Richard Sandiford  <richard@codesourcery.com>
16469
16470         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
16471         * config/m68k/m68k.opt: Resort options.
16472         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
16473
16474 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16475             Richard Sandiford  <richard@codesourcery.com>
16476
16477         * doc/invoke.texi: Document the macros that are defined by
16478         m68k's -mtune and -mhard-float options.
16479         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
16480         (m68k_cpp_cpu_family): Likewise.
16481         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
16482         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
16483         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
16484         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
16485         (m68k_cpp_cpu_family): Likewise.
16486
16487 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16488
16489         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
16490         macros besides mc68000 as tuning macros.  Use a switch statement
16491         to set them and mcpu32.
16492
16493 2007-01-12  Julian Brown  <julian@codesourcery.com>
16494
16495         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
16496         (TARGET_68040_ONLY): Rename to...
16497         (TARGET_68040): ...this.
16498         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
16499         * config/m68k/m68k.md: Likewise.
16500
16501 2007-01-12  Julian Brown  <julian@codesourcery.com>
16502             Nathan Sidwell  <nathan@codesourcery.com>
16503             Richard Sandiford  <richard@codesourcery.com>
16504
16505         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
16506         the -mcpu= argument associated with the --with-cpu setting.
16507         Define M68K_DEFAULT_TUNE to the default -mtune= option,
16508         if different from the one implied by the -mcpu setting.
16509         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
16510         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
16511         * doc/invoke.texi: Mention ColdFire in the introduction to the
16512         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
16513         -mno-div and -mhard-float options.  Make -m68881 a synonym for
16514         -mhard-float.  Document the previously-undocumented -m5206e,
16515         -m528x, -m5307 and -m5407 options.  Tweak the existing option
16516         documentation for consistency.
16517         * doc/install.texi: Mention new --with-cpu arguments.
16518         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
16519         default CPU if neither -mcpu nor -march are specified.
16520         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
16521         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
16522         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
16523         using m68k_tune to decide between families that implement the
16524         same ISA.  Use m68k_tune to set __mcfv4e__.
16525         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
16526         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
16527         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
16528         (FL_ISA_C, FL_ISA_MMU): New macros.
16529         (MASK_COLDFIRE): Delete.
16530         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
16531         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
16532         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
16533         (TARGET_HARD_FLOAT): Do not define here.
16534         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
16535         (TUNE_68000): New macro.
16536         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
16537         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
16538         (TUNE_CFV2): Redefine in terms of m68k_tune.
16539         (uarch_type, target_device, fpu_type): New enums.
16540         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
16541         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
16542         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
16543         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
16544         (FL_FOR_isa_c): New macros.
16545         (m68k_isa): New enum.
16546         (m68k_target_selection): New structure.
16547         (all_devices, all_isas, all_microarchs): New tables.
16548         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
16549         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
16550         (MASK_ALL_CPU_BITS): Delete.
16551         (m68k_find_selection): New function.
16552         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
16553         Map the legacy target options to a combination of the new ones.
16554         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
16555         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
16556         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
16557         settings.
16558         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
16559         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
16560         properties.
16561         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
16562         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
16563         * config/m68k/m68k-devices.def: New file.
16564
16565 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16566             Nathan Sidwell  <nathan@codesourcery.com>
16567
16568         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
16569         (SUBTARGET_EXTRA_SPECS): New macros.
16570         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
16571         use %(asm_cpu_spec) instead.
16572         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
16573         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
16574         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
16575         (EXTRA_SPECS): Rename to...
16576         (SUBTARGET_EXTRA_SPECS): ...this.
16577
16578 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16579             Richard Sandiford  <richard@codesourcery.com>
16580             Julian Brown  <julian@codesourcery.com>
16581
16582         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16583         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
16584         to the configuration's default CPU.
16585         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
16586         Remove default masks.
16587         (m680[012]0-*-*): Set the default with_cpu to the first part of
16588         the target name.
16589         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
16590         (m68k*-*-linux): Extend the --with-cpu handling to...
16591         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
16592         and m68010.  Don't set target_cpu_default2.
16593         * doc/install.texi: Document --with-cpu for m68k.
16594         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
16595         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
16596         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
16597         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
16598         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
16599         (ASM_SPEC): Remove use of %(asm_cpu_default).
16600         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
16601         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
16602         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
16603         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
16604         __HAVE_FPU__ if TARGET_HARD_FLOAT.
16605         (TARGET_DEFAULT): Delete.
16606         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
16607         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
16608         (CPP_CPU_SPEC): Delete.
16609         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
16610         the appropriate string.
16611         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
16612         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
16613         (ASM_SPEC): Don't use %(asm_default_spec).
16614         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
16615         TARGET_DEFAULT and add MASK_68881.
16616         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
16617
16618 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16619
16620         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
16621         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
16622         MASK_68010 alongside MASK_68020.
16623         * doc/invoke.texi: Document -m68010.
16624         * config/m68k/m68k.opt (m68010): New.
16625         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
16626         if TUNE_68010.
16627         (TUNE_68010): New macro.
16628         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
16629         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
16630         (M68K_CPU_m68332): Add MASK_68010.
16631         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
16632         fallback definition.
16633         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
16634         defines.
16635         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
16636         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
16637         to all entries that use MASK_68020.
16638         (output_move_simode_const, output_move_himode, output_move_qimode)
16639         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
16640         instead of TARGET_68020 to select clr behavior.  Remove comment
16641         about there being no TARGET_68010.
16642         * config/m68k/m68k.md: Likewise throughout.
16643
16644 2007-01-12  Julian Brown  <julian@codesourcery.com>
16645
16646         * config/m68k/m68k.h (TARGET_ISAB): New macro.
16647         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
16648         * config/m68k/m68k.md: Likewise.
16649
16650 2007-01-12  Julian Brown  <julian@codesourcery.com>
16651
16652         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
16653         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
16654
16655 2007-01-12  Julian Brown  <julian@codesourcery.com>
16656
16657         * config/m68k/m68k.h (TUNE_68040_60): New macro.
16658         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
16659         * config/m68k/m68k.md: Likewise.
16660
16661 2007-01-12  Julian Brown  <julian@codesourcery.com>
16662             Richard Sandiford  <richard@codesourcery.com>
16663
16664         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
16665         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
16666         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
16667         TARGET_CPU32.
16668         (TARGET_CPU32): Rename to...
16669         (TUNE_CPU32): ...this.
16670         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
16671         (TUNE_CFV2): New macros.
16672         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
16673         remove conditions that are implied by TARGET_68020.
16674         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
16675         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
16676         (m68k_output_function_epilogue): Likewise.
16677         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
16678         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
16679         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
16680         non-68000 timings.  Refactor multiplication and division costs.
16681         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
16682         TUNE_CPU32 instead of TARGET_CPU32.
16683         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
16684         and TUNE_68060 instead of TARGET_68060.
16685         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
16686         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
16687         TARGET_CPU32.
16688         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
16689         && !TARGET_COLDFIRE" to choose between moveq and clr.
16690         Likewise in the unnamed movsf pattern.
16691         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
16692         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
16693         ashiftrt pattern.
16694
16695 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16696
16697         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
16698         of tabbing before backslashes.
16699
16700 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16701
16702         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
16703         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
16704         (ASM_OUTPUT_INTERNAL_LABEL): Define.
16705
16706 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16707
16708         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
16709         find_interesting_uses_cond.
16710         (find_interesting_uses_cond): Use extract_cond_operands.
16711         (rewrite_use_compare): Use extract_cond_operands and
16712         force_gimple_operand_bsi.  Do not call update_stmt.
16713         (determine_use_iv_cost_condition): Use extract_cond_operands.
16714         Return cheaper of using original bound and changing the exit bound.
16715
16716 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16717
16718         PR tree-optimization/29516
16719         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
16720         most_expensive_mult_to_index, addr_to_parts,
16721         create_mem_ref, maybe_fold_tmr): Make the type of
16722         fields of TARGET_MEM_REF sizetype.
16723         (move_fixed_address_to_symbol, move_pointer_to_base):
16724         New functions.
16725         * tree.def (TARGET_MEM_REF): Add comment on types of
16726         the operands.
16727
16728 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
16729
16730         * c-common.c (vector_types_convertible_p): Treat opaque types as
16731         always convertible if they have the same size, but not otherwise.
16732
16733 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
16734
16735         * ifcvt.c (struct noce_if_info): Add comments to the fields.
16736         Remove the b_unconditional field.
16737         (noce_try_sign_mask): Do not look at b_unconditional.
16738         (noce_process_if_block): Do not use merge_if_blocks.  Update
16739         the CFG here.  Do not set b_unconditional.
16740         (cond_move_process_if_block): Likewise.
16741         (find_cond_trap): Likewise.
16742         (check_cond_move_block): Require simple jump insns at the end
16743         of the basic block.
16744
16745 2007-01-11  Jan Hubicka  <jh@suse.cz>
16746
16747         PR tree-optimization/1046
16748         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
16749         when alias info is not ready.
16750         (pass_tail_recursion): Do not require aliasing.
16751         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
16752         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
16753         * tree-ssa-copy.c (pass_copy_prop): Likewise.
16754         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
16755         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
16756         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
16757         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
16758         before inlining.
16759         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
16760         When aliasing is not build, mark statement as volatile.
16761
16762 2007-01-11  Tom Tromey  <tromey@redhat.com>
16763
16764         PR preprocessor/15185, PR preprocessor/20989:
16765         * doc/cppopts.texi <-MT>: Update description of algorithm for
16766         computing default target.
16767         <-M, -MD>: Reword "basename" text.
16768
16769 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16770
16771         * builtins.c (expand_builtin_pow, expand_builtin_powi,
16772         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
16773         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
16774         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
16775         fold_builtin_bswap, real_constp, fold_builtin_pow,
16776         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
16777         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
16778         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16779         * convert.c (convert_to_pointer): Likewise.
16780         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16781         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
16782         const_binop, fold_convert_const_int_from_int,
16783         fold_convert_const_int_from_real,
16784         fold_convert_const_real_from_real, sign_bit_p,
16785         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
16786         fold_sign_changed_comparison, fold_unary, fold_comparison,
16787         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
16788         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
16789         * print-tree.c (print_node_brief, print_node): Likewise.
16790         * stor-layout.c (place_field, layout_type): Likewise.
16791         * tree-chrec.c (keep_cast): Likewise.
16792         * tree.c (build_vector, build_real, build_real_from_int_cst,
16793         build_complex): Likewise.
16794
16795 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16796
16797         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
16798         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
16799
16800 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
16801
16802         * configure.ac (strict1_warn): Rename to strict_warn.
16803         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
16804         cc_set_by_configure, quoted_cc_set_by_configure,
16805         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
16806         all_boot_languages, all_stagestuff): Remove.
16807         (target_list): Remove bootstrap targets.
16808         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
16809         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
16810         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
16811         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
16812         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
16813         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
16814         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
16815         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
16816         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
16817         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
16818         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
16819         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
16820         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
16821         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
16822         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
16823         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
16824         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
16825         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
16826         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
16827         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
16828         (mostlyclean): Adjust.
16829         (clean, distclean): Don't mention bootstrap stuff.
16830         * configure: Regenerate.
16831         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
16832         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
16833         treelang/config-lang.in (stagestuff): Remove.
16834         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
16835         stageprofile, stagefeedback, stagestuff): Remove mention.
16836
16837 2007-01-11  Nick Clifton  <nickc@redhat.com>
16838
16839         * config/mcore/predicates.md (mcore_general_movesrc_operand):
16840         Accept CONSTs.
16841         (mcore_general_movdst_operand): Do not accept CONST_INTs.
16842         (mcore_arith_K_S_operand): Run the test for the S constraint not
16843         the test for the M constraint.
16844         (mcore_addsub_operand): Do not accept integer values that are
16845         larger than 32 bits.
16846         * config/mcore/mcore.md: Remove unused constraints from split.
16847         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
16848         (addsi3): Likewise.
16849         (allocate_stack): Likewise.
16850         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
16851         operands to 32 bits.
16852         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
16853         INTVAL.
16854         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
16855         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
16856         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
16857         mcore_output_bclri, mcore_output_andn, output_inline_const,
16858         mcore_output_move, mcore_output_movedouble): Likewise.
16859         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
16860         (output_inline_const): Likewise.
16861         (output_inline_const): Fix format strings used in sprintf
16862         statements.
16863         * config/mcore/mcore-protos.h: Update prototypes for changed
16864         functions in mcore.c.
16865         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
16866         HOST_WIDE_INT and not int.
16867         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
16868         CONST_OK_FOR_N): Likewise.
16869         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
16870         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
16871         an INTVAL.
16872
16873 2007-01-10  Jan Hubicka  <jh@suse.cz>
16874
16875         * tree-vrp.c (remove_range_assertions): Release defs.
16876         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
16877         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
16878
16879 2007-01-10  Paul Brook  <paul@codesourcery.com>
16880
16881         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
16882         * config/arm/arm.md (mulsi3subsi): New insn.
16883
16884 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
16885
16886         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
16887         (tree_transform_and_unroll_loop): New.
16888         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
16889         Declare.
16890
16891 2007-01-10  Robert Kennedy <jimbob@google.com>
16892
16893         * fold-const.c (fold_comparison): Fold comparisons like (x *
16894         1000 < 0) to (x < 0).
16895
16896 2007-01-10  Ian Lance Taylor  <iant@google.com>
16897
16898         * tree-pretty-print.c (dump_generic_node): Print parentheses when
16899         operands have the same priority.
16900
16901 2007-01-10  Tom Tromey  <tromey@redhat.com>
16902
16903         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
16904         (fold_binary): Likewise.
16905         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
16906         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
16907         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
16908         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
16909         * langhooks.h (struct lang_hooks): Removed field
16910         'can_use_bit_fields_p'.
16911
16912 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
16913
16914         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
16915
16916 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
16917
16918         * function.c (get_last_funcdef_no): New function.
16919         * function.h (get_last_funcdef_no): Declare.
16920         * tree-inline.c (initialize_cfun): Add initialization.
16921         (tree_function_versioning): Cleanup.
16922
16923 2007-01-10  Jan Hubicka  <jh@suse.cz>
16924
16925         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
16926         PHIs.
16927
16928 2007-01-10  Sa Liu  <saliu@de.ibm.com>
16929             Ben Elliston  <bje@au.ibm.com>
16930
16931         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
16932         for SAVE_NONLOCAL and Pmode for any other save level.
16933         * spu-protos.h (spu_restore_stack_block): Declare.
16934         * spu.md (save_stack_block): Remove.
16935         (restore_stack_block): Call spu_restore_stack_block.
16936         * spu.c (spu_restore_stack_block): New function.
16937         (spu_expand_epilogue): Remove old comment.
16938
16939 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
16940
16941         PR tree-optimization/30322
16942         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
16943         (cand_value_at): Return the value as aff_tree.
16944         (may_eliminate_iv): Convert the bound from aff_tree to tree.
16945         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
16946         aff_combination_mult): New functions.
16947         (aff_combination_add): Use aff_combination_add_cst.
16948         (aff_combination_convert): Allow conversions to a wider type.
16949         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
16950         * tree-affine.h (aff_combination_mult): Declare.
16951
16952 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
16953
16954         * doc/tm.texi: Update documentation to reflect reality of exec
16955         and start file search behaviours. Update copyright year.
16956         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
16957         header file directories.
16958
16959 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
16960
16961         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
16962         (*cosxf2): Rename to cosxf2_i387.
16963         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
16964         using X87MODEF12 mode macro. Rename patterns to
16965         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
16966         for SSE math.
16967         (*cosdf2, *cossf2): Ditto.
16968         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
16969         to match extended input operands.
16970         (sincos<mode>3): New expander.
16971         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
16972         insn patterns and corresponding splitters.
16973
16974 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
16975
16976         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
16977         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
16978
16979 2007-01-09  Nicolas Pitre  <nico@cam.org>
16980
16981         PR target/30173
16982         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
16983
16984 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
16985
16986         * target.h (struct gcc_target): New field library_rtti_comdat.
16987         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
16988         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
16989         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
16990         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
16991
16992 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
16993
16994         * doc/invoke.texi (Optimize Options): Correct description of -O0.
16995
16996 2007-01-08  Richard Guenther  <rguenther@suse.de>
16997
16998         * tree.h (force_fit_type_double): Export.
16999         (force_fit_type): Remove.
17000         * fold-const.c (force_fit_type_double): New function.
17001         (force_fit_type): Remove.
17002         (int_const_binop): Use it.
17003         (fold_convert_const_int_from_int): Likewise.
17004         (fold_convert_const_int_from_real): Likewise.
17005         (fold_div_compare): Likewise.
17006         (fold_sign_changed_comparison): Likewise.
17007         (fold_unary): Likewise.
17008         (fold_negate_const): Likewise.
17009         (fold_abs_const): Likewise.
17010         (fold_not_const): Likewise.
17011         * c-common.c (shorten_compare): Use force_fit_type_double.
17012         * convert.c (convert_to_pointer): Likewise.
17013
17014 2007-01-08  Richard Guenther  <rguenther@suse.de>
17015
17016         * tree.h (build_int_cst_wide_type): Export.
17017         * tree.c (build_int_cst_wide_type): New function.
17018         (build_int_cst_wide): Fix comment.
17019         * builtins.c (fold_builtin_object_size): Use build_int_cst
17020         to build -1 or 0 of the correct type.  Use fit_double_type
17021         to check for overflow.
17022         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
17023         to build the mask.
17024         (decode_field_reference): Likewise.
17025         (all_ones_mask_p): Likewise.
17026         (native_interpret_int): Use build_int_cst_wide_type.
17027         (fold_binary): Use build_int_cst_type to build an all-ones
17028         value.
17029         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
17030
17031 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
17032
17033         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
17034
17035 2007-01-09  Ben Elliston  <bje@au.ibm.com>
17036
17037         * genautomata.c (STATS_OPTION): New option.
17038         (stats_flag): New flag.
17039         (gen_automata_option): Handle it.
17040         (initiate_automaton_gen): Ditto.
17041         (write_automata): Output statistics only if stats_flag is
17042         set. Likewise, output time statistics only if time_flag is set.
17043         * doc/md.texi (Processor pipeline description): Document new flag.
17044
17045 2007-01-08  Richard Guenther  <rguenther@suse.de>
17046
17047         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
17048         * tree.c (build_int_cst_type): Likewise.
17049         (size_in_bytes): Don't call force_fit_type on the result.
17050         (int_fits_type_p): Use fit_double_type.
17051         * fold-const.c (fit_double_type): New function.
17052         (force_fit_type): Use it.
17053         * tree.h (fit_double_type): Export.
17054
17055 2007-01-08  Jan Hubicka  <jh@suse.cz>
17056
17057         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
17058         * ipa.c (function_and_variable_visibility): Fix return type.
17059
17060 2007-01-08  Richard Guenther  <rguenther@suse.de>
17061
17062         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
17063         of offset to build the index.
17064         * tree-pretty-print.c (dump_generic_node): Don't build negated
17065         const just for printing.
17066         * c-pretty-print.c (pp_c_integer_constant): Likewise.
17067         * builtins.c (fold_builtin_int_roundingfn): Check if result
17068         fits the type by using force_fit_type and comparing the result.
17069         * predict.c (predict_loops): Use compare_tree_int for comparison.
17070         * tree.c (build_int_cst): Fall back to integer_type_node for
17071         NULL_TREE type.
17072         (build_int_cst_wide): Assert type is non-null.
17073
17074 2007-01-08  Roberto Costa  <roberto.costa@st.com>
17075
17076         * tree-vrp.c (extract_range_from_cond_expr): New.
17077         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
17078         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
17079         as expressions.
17080         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
17081         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
17082         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
17083         used as expressions.
17084         * tree-object-size.c (cond_expr_object_size): New.
17085         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
17086
17087 2007-01-08  Jan Hubicka  <jh@suse.cz>
17088
17089         * tree-ssa-forwprop.c (forward_propagate_into_cond,
17090         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
17091         statement.
17092
17093 2007-01-08  Richard Guenther  <rguenther@suse.de>
17094
17095         PR tree-optimization/23603
17096         * tree-vrp.c (set_value_range_to_truthvalue): New function.
17097         (extract_range_from_binary): Fall back to truthvalue instead of
17098         varying for TRUTH_*_EXPR.
17099         (extract_range_from_comparison): Fall back to truthvalue instead of
17100         varying.
17101         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
17102         if all visited PHI values were constant.
17103
17104 2007-01-08  Jan Hubicka  <jh@suse.cz>
17105
17106         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
17107         (cgraph_analyze_function): break out from ...
17108         (cgraph_finalize_compilation_unit): ... here.
17109         (cgraph_expand_function): Remove forgoten commented out line.
17110         (cgraph_optimize): Analyze functions.
17111
17112 2007-01-08  Jan Hubicka  <jh@suse.cz>
17113
17114         * tree-pas.h (TODO_remove_function): New flag.
17115         (TODO_update*): Renumber.
17116         (pass_ipa_increase_alignment,
17117         pass_ipa_function_and_variable_visibility): New passes.
17118         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
17119         (cgraph_function_and_variable_visibility): Move to ipa.c
17120         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
17121         cgraph_increase_alignment.
17122         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
17123         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
17124         calling tree-inline.
17125         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
17126         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
17127         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
17128         (gate_increase_alignment): New function.
17129         (pass_ipa_increase_alignment): New pass.
17130         * ipa.c: Inline tree-pass.h and timevar.h
17131         (function_and_variable_visibility): Move here from cgraphunit.c
17132         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
17133         * passes.c (init_optimization_passes): Add the two new passes.
17134         (execute_todo): Handle cgraph_remove_functions.
17135
17136 2007-01-08  Nick Clifton  <nickc@redhat.com>
17137
17138         * config/frv/predicates.md (reg_or_0_operand): Accept
17139         CONST_DOUBLEs.
17140
17141 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
17142
17143         * config/bfin/rtems.h, config/bfin/t-rtems: New.
17144         * config.gcc: Add bfin*-rtems*.
17145
17146 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
17147
17148         * c.opt: Add -flax-vector-conversions.
17149         * c-typeck.c (convert_for_assignment): Pass flag to
17150         vector_types_convertible_p to allow emission of note.
17151         (digest_init): Likewise.
17152         * c-opts.c: Handle -flax-vector-conversions.
17153         * c-common.c (flag_lax_vector_conversions): New.
17154         (vector_types_convertible_p): Unless -flax-vector conversions
17155         has been passed, disallow conversions between vectors with
17156         differing numbers of subparts and/or element types.  If such
17157         a conversion is disallowed, possibly emit a note on the first
17158         occasion only to inform the user of -flax-vector-conversions.
17159         The new last argument specifies this.
17160         * c-common.h (flag_lax_vector_conversions): New.
17161         (vector_types_convertible_p): Add extra argument.
17162         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
17163         char_type_node for V*QI type vectors.
17164         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
17165         Update to satisfy new typechecking rules.
17166         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
17167         C and C++ variants.
17168         * doc/invoke.texi (C Dialect Options): Document
17169         -flax-vector-conversions.
17170
17171 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
17172
17173         PR tree-optimization/29877
17174         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
17175         a register variable on the RHS to not be replaceable.
17176
17177 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
17178         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
17179         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
17180         const_simm15, const_pow2, const_npow2): Added.
17181         * config/score/misc.md (insv, extv, extzv, movmemsi,
17182         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
17183         * config/score/score.c (score_address_cost, score_select_cc_mode):
17184         Added.
17185         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
17186         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
17187         Update score_print_operand.
17188         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
17189         Adjust register allocate order and update some macro define.
17190         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
17191         mdx_block_move_straight, mdx_block_move_loop_head,
17192         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
17193         mdx_block_move): Added.
17194         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
17195         mdp_limm): Updated and fix some bug and typo.
17196         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
17197         (movsf, movdf, doloop_end): Added.
17198
17199 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
17200
17201         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
17202         config/arm/thumb2.md: Fix comment typos.
17203         * doc/extend.texi: Fix a typo.
17204
17205 2007-01-07  Eric Christopher  <echristo@apple.com>
17206
17207         * configure.ac: Check for __stack_chk_fail for darwin.
17208         * configure: Regenerate.
17209
17210 2007-01-07  Richard Guenther  <rguenther@suse.de>
17211
17212         * tree-vrp.c (extract_range_from_assert): CSE calls to
17213         compare_values where possible.
17214         (extract_range_from_unary_expr): Likewise.
17215
17216 2007-01-07  Anatoly Sokolov <aesok@post.ru>
17217
17218         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
17219         * config/avr/avr.c (call_insn_operand): Delete function.
17220         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
17221         instead of register number. Use predicates.
17222         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
17223         call_insn_operand): Add.
17224
17225 2007-01-06  Jan Hubicka  <jh@suse.cz>
17226
17227         * tree-pass.h (pass_build_cgraph_edges): Declare.
17228         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
17229         (visited_nodes): Remove.
17230         (cgraph_create_edges): Move to cgraphbuild.c; rename to
17231         build_cgrpah_edges; make visited_nodes local.
17232         (cgraph_process_new_functions): DO not call initialize_inline_failed.
17233         (record_references_in_initializer): Move to cgraphbuild.c
17234         (initialize_inline_failed, rebuild_cgraph_edges,
17235         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
17236         (verify_cgraph_node): Make visited_nodes local.
17237         (cgraph_analyze_function): Do not call cgraph_create_edges and
17238         initialize_inline_failed.
17239         (cgraph_expand_function): Do not call cgraph_lower_function;
17240         assert that function is already lowered.
17241         * Makefile.in (cgraphbuild.o): New.
17242         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
17243         at the end of lowering passes.
17244
17245 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
17246
17247         * ifcvt.c (cond_move_convert_if_block): New function, code
17248         factored out from...
17249         (cond_move_process_if_block): ...here.  Call the new function
17250         on the THEN and ELSE blocks.
17251         (merge_if_block): Do not copy global_live_at_end, merge_blocks
17252         already takes care of this.
17253
17254 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17255
17256         PR c/19978
17257         * tree.h (TREE_OVERFLOW_P): New.
17258         * c-typeck.c (parser_build_unary_op): Warn only if result
17259         overflowed and operands did not.
17260         (parser_build_binary_op): Likewise.
17261         (convert_for_assignment): Remove redundant overflow_warning.
17262         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
17263
17264 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17265
17266         * c-typeck.c (store_init_value): Split over two lines to follow
17267         the GNU coding style.
17268
17269 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
17270
17271         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
17272         __GXX_EXPERIMENTAL_CXX0X__.
17273         * doc/cpp.texi: Same.
17274
17275 2007-01-05  Richard Guenther  <rguenther@suse.de>
17276
17277         PR middle-end/27826
17278         * tree.c (get_narrower): Do not construct COMPONENT_REFs
17279         with mismatched types.  Instead explicitly build a
17280         conversion NOP_EXPR.
17281
17282 2007-01-05  Ian Lance Taylor  <iant@google.com>
17283
17284         * c-common.c (decl_with_nonnull_addr_p): New function.
17285         (c_common_truthvalue_conversion): Call it.
17286         * c-typeck.c (build_binary_op): Likewise.
17287         * c-common.h (decl_with_nonnull_addr_p): Declare.
17288
17289 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
17290
17291         PR c/30360
17292         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
17293         denom against 0.0.
17294
17295 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
17296
17297         * doc/install.texi (Final install): Document the fact that
17298         the GNAT runtime should not be stripped.
17299
17300 2007-01-04  Jan Hubicka  <jh@suse.cz>
17301
17302         * tree-inline.c (fold_marked_statements): Update operand caches
17303         and EH after folding
17304
17305 2007-01-04  Ian Lance Taylor  <iant@google.com>
17306
17307         * c-common.c (check_function_nonnull): Whitespace fix.
17308
17309 2007-01-04  Jan Hubicka  <jh@suse.cz>
17310
17311         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
17312         comitted older version of patch.
17313         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
17314         function, celanup cfg and collect garbage.
17315
17316 2007-01-04  Mike Stump  <mrs@apple.com>
17317
17318         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
17319         (clean): Likewise.
17320
17321 2007-01-04  Eric Christopher  <echristo@apple.com>
17322
17323         * libgcc2.c (__bswapsi2): Use SItype.
17324         (__bswapdi2): Use DItype.
17325         * libgcc2.h: Update for above.
17326
17327 2007-01-04  Paul Brook  <paul@codesourcery.com>
17328
17329         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
17330         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
17331         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
17332         umulsidi3, umulsidi3adddi, smulsi3_highpart,
17333         umulsi3_highpart): Make conditional on !arm_arch6.
17334         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
17335         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
17336         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
17337         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
17338         umulsi3_highpart_v6): New insns.
17339
17340 2007-01-04  Roger Sayle  <roger@eyesopen.com>
17341
17342         * fold-const.c (fold_convert): When casting an expression to void,
17343         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
17344         have a type.  Instead of attempting to build a NOP_EXPR, return
17345         these "special" trees directly.
17346
17347 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
17348
17349         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
17350         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
17351         rs6000_cost->fp not 0 as adjustment for outer NEG.
17352
17353 2007-01-04  Jan Hubicka  <jh@suse.cz>
17354
17355         * cgraph.c (cgraph_release_function_body): New function.
17356         (cgraph_remove_node): Use it.
17357         * cgraph.h (cgraph_release_function_body): Declare.
17358         * cgraphunit.c (cgraph_expand_function): Use it.
17359         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
17360         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
17361         is initialized and while compilation of other function is running.
17362         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
17363         statement CFG annotations from here to ...
17364         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
17365
17366 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
17367
17368         * cfgloop.h (enum li_flags): Make the constants powers of two.
17369
17370 2007-01-04  Jan Hubicka  <jh@suse.cz>
17371
17372         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
17373         set.
17374         (fold_marked_statements): New function.
17375         (optimize_inline_calls, tree_function_versioning): Fold new statements.
17376         * tree-inline.h (copy_body_data): Add statements_to_fold.
17377
17378 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
17379
17380         * config.gcc: Mention libgcc/config.host.
17381         * Makefile.in: Update comments mentioning libgcc.
17382         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
17383         (all.cross, start.encap, rest.encap, rest.cross): Update
17384         dependencies for libgcc move.
17385         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
17386         (clean-target, clean-target-libgcc): Delete.
17387         (srcdirify, GCC_EXTRA_PARTS): New macros.
17388         (libgcc-support, libgcc.mvars): New rules.
17389         (distclean): Remove mention of mklibgcc.
17390         (install): Don't reference INSTALL_LIBGCC.
17391         (install-common): Don't reference EXTRA_PARTS.
17392         (install-libgcc, install-multilib): Delete rules.
17393         * mklibgcc.in: Delete file.
17394         * doc/configfiles.texi: Don't mention mklibgcc.
17395
17396         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
17397         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
17398         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
17399         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
17400         (mklibgcc, ldblspecs): Likewise.
17401
17402         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
17403         (posixpre.def): Use $(T).
17404         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
17405         (SHLIB_SRC, SHLIB_INSTALL): Delete.
17406         (SHLIB_LINK): Make dummy.
17407         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
17408
17409         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
17410
17411         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
17412         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
17413         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
17414         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
17415
17416         * configure.ac (all_outputs): Remove mklibgcc.
17417         * configure: Regenerated.
17418
17419 2007-01-03  Josh Conner  <jconner@apple.com>
17420
17421         PR middle-end/29683
17422         * calls.c (compute_argument_addresses): Set stack and stack_slot
17423         for partial args, too.
17424         (store_one_arg): Use locate.size.constant for the size when
17425         generating a save_area.
17426
17427 2007-01-03  Robert Kennedy <jimbob@google.com>
17428
17429         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
17430         whose definitions are deleted due to basic block merging.
17431
17432 2007-01-03  Paul Brook  <paul@codesourcery.com>
17433
17434         PR target/16634
17435         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
17436         functions.
17437         (use_return_insn): Return 0 for Thumb interrupt functions.
17438         (print_multi_reg): Add rfe argument for IRQ returns.
17439         (arm_output_epilogue): Pop interrupt return address directly into PC.
17440         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
17441
17442 2007-01-03  Paul Brook  <paul@codesourcery.com>
17443
17444         Merge from sourcerygxx-4_1.
17445         * config/arm/thumb2.md: New file.
17446         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
17447         Thumb-2.
17448         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
17449         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17450         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
17451         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
17452         tables.
17453         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17454         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
17455         comptibility.
17456         * config/arm/ieee754-sf.S: Ditto.
17457         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
17458         (thumb1_base_register_rtx_p): ... to this.
17459         (thumb_index_register_rtx_p): Rename...
17460         (thumb1_index_register_rtx_p): ... to this.
17461         (thumb_output_function_prologue): Rename...
17462         (thumb1_output_function_prologue): ... to this.
17463         (thumb_legitimate_address_p): Rename...
17464         (thumb1_legitimate_address_p): ... to this.
17465         (thumb_rtx_costs): Rename...
17466         (thumb1_rtx_costs): ... to this.
17467         (thumb_compute_save_reg_mask): Rename...
17468         (thumb1_compute_save_reg_mask): ... to this.
17469         (thumb_final_prescan_insn): Rename...
17470         (thumb1_final_prescan_insn): ... to this.
17471         (thumb_expand_epilogue): Rename...
17472         (thumb1_expand_epilogue): ... to this.
17473         (arm_unwind_emit_stm): Rename...
17474         (arm_unwind_emit_sequence): ... to this.
17475         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
17476         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
17477         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
17478         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
17479         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
17480         thumb2_output_casesi): New functions.
17481         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
17482         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
17483         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
17484         THUMB2_WORK_REGS): Define.
17485         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
17486         arm_condexec_mask, arm_condexec_masklen)): New variables.
17487         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
17488         (arm_override_options): Check new CPU capabilities.
17489         Set new architecture flag variables.
17490         (arm_isr_value): Handle v7m interrupt functions.
17491         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
17492         Thumb-2.
17493         (const_ok_for_arm): Handle Thumb-2 constants.
17494         (arm_gen_constant): Ditto.  Use movw when available.
17495         (arm_function_ok_for_sibcall): Return false for v7m interrupt
17496         functions.
17497         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
17498         (thumb_find_work_register, arm_load_pic_register,
17499         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
17500         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
17501         print_multi_reg, output_mov_long_double_fpa_from_arm,
17502         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
17503         output_mov_double_fpa_from_arm, output_move_double,
17504         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
17505         output_return_instruction, arm_output_function_prologue,
17506         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
17507         arm_output_mi_thunk, thumb_set_return_address): Ditto.
17508         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
17509         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
17510         (arithmetic_instr, shift_op): Use arm_shift_nmem.
17511         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
17512         '!' and 'L'.
17513         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
17514         (thumb_expand_prologue): Use thumb_set_frame_pointer.
17515         (arm_file_start): Output directive for unified syntax.
17516         (arm_unwind_emit_set): Handle stack alignment instruction.
17517         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
17518         Add v6t2, v7, v7a, v7r and v7m.
17519         (RETLDM): Add Thumb-2 code.
17520         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
17521         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
17522         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
17523         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
17524         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
17525         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
17526         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
17527         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
17528         ADJUST_INSN_LENGTH): Define.
17529         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
17530         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
17531         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
17532         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
17533         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
17534         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
17535         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
17536         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
17537         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
17538         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
17539         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
17540         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
17541         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
17542         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
17543         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
17544         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
17545         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
17546         cortex-m3.
17547         * config/arm/arm-tune.md: Regenerate.
17548         * config/arm/arm-protos.h: Update prototypes.
17549         * config/arm/vfp.md: Enable patterns for Thumb-2.
17550         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
17551         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
17552         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
17553         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
17554         * config/arm/libunwind.S: Add Thumb-2 code.
17555         * config/arm/constraints.md: Update include Thumb-2.
17556         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
17557         * config/arm/ieee754-df.S: Ditto.
17558         * config/arm/bpabi.S: Ditto.
17559         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
17560         * config/arm/predicates.md (low_register_operand,
17561         low_reg_or_int_operand, thumb_16bit_operator): New.
17562         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
17563         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
17564         * config/arm/t-arm-elf: Add armv7 multilib.
17565         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
17566         Include thumb2.md.
17567         (UNSPEC_STACK_ALIGN, ce_count): New.
17568         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
17569         arm_zero_extendsidi2, arm_zero_extendqidi2): New
17570         insns/expanders.
17571         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
17572         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
17573         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
17574         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
17575         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
17576         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
17577         insns.
17578         * doc/extend.texi: Document ARMv7-M interrupt functions.
17579         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
17580
17581 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
17582
17583         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
17584         (struct _Unwind_Context): Rename args_size to flags, remove
17585         signal_frame field, add a new args_size field and version field.
17586         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
17587         _Unwind_IsExtendedContext): New inline functions.
17588         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
17589         Assume by_value array is only present if _Unwind_IsExtendedContext.
17590         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
17591         _Unwind_IsSignalFrame.
17592         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
17593         (uw_update_context_1): Use _Unwind_SetSignalFrame.
17594         (uw_init_context_1): Initialize context->flags to
17595         EXTENDED_CONTEXT_BIT.
17596         * config/rs6000/linux-unwind.h (frob_update_context): Use
17597         _Unwind_SetSignalFrame.
17598
17599 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17600
17601         PR middle-end/30353
17602         * gimplify.c (gimplify_modify_expr_complex_part): Move below
17603         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
17604         the value.
17605
17606 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
17607
17608         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
17609         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
17610         RET, AT_SP): Remove.
17611         * config/i386/i386.md (*sse_prologue_save_insn): Use return
17612         instead of RET.
17613
17614         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17615         * cfgbuild.c (find_basic_blocks): Likewise.
17616         * cfgrtl.c (rtl_create_basic_block): Likewise.
17617         * function.c (temp_slots_at_level): Likewise.
17618         * reg-stack.c (stack_regs_mentioned): Likewise.
17619         * regclass.c (allocate_reg_info): Likewise.
17620         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17621         set_bb_for_stmt, move_block_to_fn): Likewise.
17622         * tree-complex.c (tree_lower_complex): Likewise.
17623         * vec.h (VEC_safe_grow_cleared): New.
17624
17625         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
17626
17627 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
17628
17629         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
17630         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
17631         to loop_version.
17632         * cfgloopmanip.c (scale_loop_frequencies): Export.
17633         (loopify): Scale the frequencies by prescribed coefficients.
17634         (set_zero_probability): New function.
17635         (duplicate_loop_to_header_edge): Improve updating of frequencies.
17636         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
17637         and frequencies according to arguments.
17638         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
17639         correctly.
17640         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
17641         * modulo-sched.c (sms_schedule): Set probabilities for entering
17642         versioned loop correctly.
17643         * tree-vect-transform.c (vect_transform_loop): Ditto.
17644         * cfgloop.h (loopify, loop_version): Declaration changed.
17645         (scale_loop_frequencies): Declared.
17646
17647 2007-01-02  Jan Hubicka  <jh@suse.cz>
17648
17649         * cgraph.c: Include tree-flow.h
17650         (cgraph_add_new-function): Handle IPA_SSA mode; execute
17651         early_local_passes.
17652         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
17653         * tree-pass.h (pass_all_early_optimizations): Declare.
17654         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
17655         early_local_passes.
17656         (cgraph_analyze_function): Do early_local_passes.
17657         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17658         Do not add referenced vars.
17659         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
17660         SSA form.
17661         (gate_all_early_local_passes): New gate.
17662         (pass_early_local_passes): Use new gate.
17663         (execute_early_local_optimizations): New functions.
17664         (gate_all_early_optimizations): New gate.
17665         (pass_all_early_optimizations): New pass.
17666         (execute_free_datastructures): Free SSA only when initialized.
17667         (gate_init_datastructures): Init only when optimizing.
17668         (tree_lowering_passes): Do early local passes when called late.
17669         * tree-profile.c (do_tree_profiling): Don't profile functions added
17670         late.
17671         (do_early_tree_profiling, pass_early_tree_profile): Kill.
17672         * tree-cfg.c (update_modified_stmts): Do not update when operands are
17673         not active.
17674         * passes.c (init_optimizations_passes): Reorder so we go into SSA
17675         during early_local_passes.
17676         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
17677
17678
17679 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17680
17681         * Makefile.in: Update copyright year.
17682
17683 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17684
17685         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
17686         in $(lang_checks) and check-consistency targets.
17687
17688 2007-01-02  Jan Hubicka  <jh@suse.cz>
17689
17690         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17691         Do not add referenced vars.
17692         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
17693         are not active.
17694         * passes.c (init_optimization_passes): Put mudflap_2 after
17695         free_datastructures.
17696
17697 2007-01-02  Jan Hubicka  <jh@suse.cz>
17698
17699         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
17700         Set NOTHROW flag on call statements proved to be nothrow.
17701         Update statement of local calls so new pure/const functions are
17702         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
17703         goto receivers.
17704         (tree_rest_of_compilation): Register hooks and initialize bitmap
17705         early. Do not set after_inlining flag.
17706
17707 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
17708
17709         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
17710         HOST_BITS_PER_LONGLONG
17711
17712 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
17713
17714         PR c/19977
17715         * c-typeck.c (store_init_value): Don't emit pedantic overflow
17716         warning for non-static initializers.
17717
17718 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
17719
17720         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
17721         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
17722         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
17723         Always use set_unique_reg_note to add REG_EQUAL notes.
17724
17725 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17726
17727         Revert:
17728         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17729
17730         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17731         * cfgbuild.c (find_basic_blocks): Likewise.
17732         * cfgrtl.c (rtl_create_basic_block): Likewise.
17733         * function.c (temp_slots_at_level): Likewise.
17734         * reg-stack.c (stack_regs_mentioned): Likewise.
17735         * regclass.c (allocate_reg_info): Likewise.
17736         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17737         set_bb_for_stmt, move_block_to_fn): Likewise.
17738         * tree-complex.c (tree_lower_complex): Likewise.
17739         * vec.h (VEC_safe_grow_cleared): New.
17740
17741 2007-01-02  Ian Lance Taylor  <iant@google.com>
17742
17743         * c-common.c (c_common_truthvalue_conversion): When warning about
17744         using an assignment as a truth value, set TREE_NO_WARNING.
17745
17746 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17747
17748         PR middle-end/7651
17749         * c.opt (Wold-style-declaration): New.
17750         * doc/invoke.texi (C-only Warning Options): New.
17751         (Wold-style-declaration): Document it.
17752         (Wextra): Enabled by -Wextra.
17753         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17754         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
17755         -Wold-style-declaration.
17756
17757 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17758
17759         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17760         * cfgbuild.c (find_basic_blocks): Likewise.
17761         * cfgrtl.c (rtl_create_basic_block): Likewise.
17762         * function.c (temp_slots_at_level): Likewise.
17763         * reg-stack.c (stack_regs_mentioned): Likewise.
17764         * regclass.c (allocate_reg_info): Likewise.
17765         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17766         set_bb_for_stmt, move_block_to_fn): Likewise.
17767         * tree-complex.c (tree_lower_complex): Likewise.
17768         * vec.h (VEC_safe_grow_cleared): New.
17769
17770 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
17771
17772         * c-common.c (c_common_nodes_and_builtins): Since variants of
17773         void_type_node get built before it is given a name, we need to
17774         give those variants the name, too.
17775         (complete_array_type): We need to work with the canonical main
17776         type of the array, from which we will build the qualified version.
17777         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
17778         * print-tree.c (print_node): Display canonical type information
17779         for each type.
17780         * stor-layout.c (layout_type): When we don't know the
17781         alignment of a type for which we're building an array, we end up
17782         guessing wrong, so make the type require structural equality.
17783         * tree.c (make_node_stat): When we build a new type, it is its
17784         own canonical type.
17785         (build_type_attribute_qual_variant): When building an attribute
17786         variant, its canonical type is the non-attribute variant. However,
17787         if the attributes are target-dependent and they differ, we need to
17788         use structural equality checks for this type.
17789         (build_qualified_type): A qualified type is not equivalent to its
17790         unqualified variant; set the canonical type appropriately.
17791         (build_distinct_type_copy): When building a distinct type from
17792         another type, the new type is its own canonical type.
17793         (build_variant_type_copy): When building a new type variant, we
17794         assume that it is equivalent to the original type.
17795         (build_pointer_type_for_mode): When building a pointer type, also
17796         build a canonical type pointer.
17797         (build_reference_type_for_mode): When building a reference type,
17798         also build a canonical type reference.
17799         (build_index_type): When we can't hash an index type (e.g.,
17800         because its maximum value is negative), the index type requires
17801         structural equality tests.
17802         (build_array_type): Build the canonical form of an array type.
17803         (build_function_type): Function types require structural equality,
17804         because they contain default arguments, attributes, etc.
17805         (build_method_type_directly): Ditto for method types.
17806         (build_offset_type): Build the canonical offset type.
17807         (build_complex_type): Build the canonical vector type.
17808         (make_vector_type): Build the canonical vector type.
17809         * tree.h (TYPE_CANONICAL): New.
17810         (TYPE_STRUCTURAL_EQUALITY_P): New.
17811         (SET_TYPE_STRUCTURAL_EQUALITY): New.
17812         (struct tree_type): Added "canonical" field.
17813         * params.h (VERIFY_CANONICAL_TYPES): New.
17814         * doc/c-tree.texi (TYPE_CANONICAL): Document.
17815         (TYPE_STRUCTURAL_EQUALITY_P): Document.
17816         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
17817         * doc/invoke.texi (verify-canonical-types): Document --param
17818         parameter for verifying canonical types.
17819
17820 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17821
17822         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
17823         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
17824         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
17825         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
17826         tm_file.
17827         * config/rs6000/e500.h: New.
17828         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
17829         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
17830         Remove.
17831         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
17832         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
17833         TARGET_E500_DOUBLE): Remove.
17834         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
17835         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
17836         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
17837         * config/rs6000/rs6000.c (rs6000_override_options): Use
17838         CHECK_E500_OPTIONS.
17839
17840 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17841
17842         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
17843         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
17844         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
17845         rs6000_emit_cmove): Don't check TARGET_E500.
17846         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
17847         sordered): Don't check TARGET_E500.
17848
17849 2007-01-01  Eric Christopher  <echristo@apple.com>
17850
17851         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
17852         HARD_REGISTER_NUM_P.
17853
17854 2007-01-01  Roger Sayle  <roger@eyesopen.com>
17855
17856         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
17857         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
17858         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
17859         eq/ne Y".
17860
17861 2007-01-01  Mike Stump  <mrs@apple.com>
17862
17863         * configure.ac: Remove support for building with Apple's gcc-3.1.
17864
17865 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17866
17867         PR middle-end/30311
17868         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
17869         REG is a hard register.  Do not modify REG before calling
17870         subreg_nregs.
17871         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
17872         multiple of the size of YMODE for certain lowpart cases.
17873
17874 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17875
17876         PR middle-end/30253
17877         * gimplify (voidify_wrapper_expr): Update for
17878         GIMPLE_MODIFY_STMT.
17879
17880 2007-01-01  Andreas Schwab  <schwab@suse.de>
17881
17882         PR target/29166
17883         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
17884         save of BR0 in extra_spill_size instead of spill_size.
17885         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
17886         area.
17887         (ia64_expand_epilogue): Restore BR0 from its new location.
17888
17889 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17890
17891         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
17892         Use a temporary variable if the left hand side is not a gimple
17893         register.
17894
17895 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17896
17897         * gimplify.c (gimplify_return_expr): Make the temporary variable
17898         for the return expression, a gimple register variable.
17899
17900 2007-01-01  Jan Hubicka  <jh@suse.cz>
17901
17902         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
17903         INSN_LIST.
17904
17905 2007-01-01  Mike Stump  <mrs@apple.com>
17906
17907         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
17908         .literal16.
17909         * config/darwin.c (machopic_select_rtx_section): Use
17910         HAVE_GAS_LITERAL16.
17911         (darwin_mergeable_constant_section): Likewise.
17912         * configure: Regenerate.
17913         * config.in: Regenerate.
17914
17915 2007-01-01  Jan Hubicka  <jh@suse.cz>
17916             Andrew Pinski  <pinskia@gmail.com>
17917
17918         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
17919         before starting IPA passes.